# SBOM for surge-py 0.1.9

> AC/DC power flow solver for large-scale transmission networks

The Python package surge-py 0.1.9 ships 18 SBOM files (CycloneDX) inside its wheels, under `.dist-info/sboms/` ([PEP 770](https://peps.python.org/pep-0770/)). Its wheels carry a verified PEP 740 attestation.

- Package URL (PURL): `pkg:pypi/surge-py@0.1.9`
- PyPI: https://pypi.org/project/surge-py/0.1.9/
- License: PolyForm Noncommercial 1.0.0
- Requires Python: \<3.15,\>=3.12
- Bug Tracker: <https://github.com/amptimal/surge/issues>
- Documentation: <https://github.com/amptimal/surge#readme>
- Homepage: <https://github.com/amptimal/surge>
- Repository: <https://github.com/amptimal/surge>

## SBOMs

### surge\_py-0.1.9-cp312-cp312-macosx\_11\_0\_arm64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/fb4c43ce-986b-5789-9fe2-1a7f3e8f51ad/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp312-cp312-manylinux\_2\_28\_aarch64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/auditwheel.cdx.json](https://pypi.sbomify.com/artifact/e6d6af55-5337-5466-a4be-3df13ec6fc65/download): CycloneDX/1.4, `application/vnd.cyclonedx+json`, valid, no known vulnerabilities
- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/a04030dc-78c7-5fd0-aa00-3bc977df7e20/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp312-cp312-manylinux\_2\_28\_x86\_64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/auditwheel.cdx.json](https://pypi.sbomify.com/artifact/fe9b349d-46b0-526c-902e-9b38d305d644/download): CycloneDX/1.4, `application/vnd.cyclonedx+json`, valid, no known vulnerabilities
- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/60543efd-262f-5b88-9a3e-2af78e727be9/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp312-cp312-win\_amd64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/ecce99b9-17c5-526b-8b81-421c33059659/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp313-cp313-macosx\_11\_0\_arm64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/5b59504c-070a-547d-b897-4ea32eb9f5d9/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp313-cp313-manylinux\_2\_28\_aarch64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/auditwheel.cdx.json](https://pypi.sbomify.com/artifact/ca7a2152-5d88-588f-b34c-6995cf5c1828/download): CycloneDX/1.4, `application/vnd.cyclonedx+json`, valid, no known vulnerabilities
- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/766ab5be-ed0c-5ada-aa03-79858369205a/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp313-cp313-manylinux\_2\_28\_x86\_64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/auditwheel.cdx.json](https://pypi.sbomify.com/artifact/b705b89f-c6f2-5fb9-bd37-6be5d4360e72/download): CycloneDX/1.4, `application/vnd.cyclonedx+json`, valid, no known vulnerabilities
- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/d0fc8a7c-d374-52fb-93f2-33e5a5dde2d9/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp313-cp313-win\_amd64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/bd81535b-bf53-545c-9592-b7f6e748ffbc/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp314-cp314-macosx\_11\_0\_arm64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/e301676f-2c9a-5874-98c5-50a6a98a7e45/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp314-cp314-manylinux\_2\_28\_aarch64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/auditwheel.cdx.json](https://pypi.sbomify.com/artifact/d1603638-876d-5e11-a9fc-81650cbbb5a8/download): CycloneDX/1.4, `application/vnd.cyclonedx+json`, valid, no known vulnerabilities
- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/29dc8e51-544f-5ff8-8f21-7c8caf71f4e9/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp314-cp314-manylinux\_2\_28\_x86\_64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/auditwheel.cdx.json](https://pypi.sbomify.com/artifact/27073583-a13d-5246-80a5-ec2a24bfa47c/download): CycloneDX/1.4, `application/vnd.cyclonedx+json`, valid, no known vulnerabilities
- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/3f479c93-a12a-51af-80db-afd81a4ce714/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

### surge\_py-0.1.9-cp314-cp314-win\_amd64.whl

PEP 740 attestation verified (GitHub, amptimal/surge, workflow build-wheels.yml).

- [surge\_py-0.1.9.dist-info/sboms/surge-py.cyclonedx.json](https://pypi.sbomify.com/artifact/8b8068c8-ae01-561f-be54-032a8c9ae0a7/download): CycloneDX/1.5, `application/vnd.cyclonedx+json`, valid, 28 known vulnerabilities

## Known vulnerabilities

Components listed in these SBOMs, matched against the [OSV database](https://osv.dev/) as of 2026-11-10.

| Vulnerability | Severity | Component | Fixed in | Summary |
|---|---|---|---|---|
| [CVE-2026-115905](https://insights.sbomify.com/CVE-2026-115905/) | critical (10.0) | zip 2.4.2 (crates.io) | 9.0.5 | zip: Critical Parser Differential & Security Control Bypass via Dual-Header Inconsistencies (Zip Cloaking) Leading to Arbitrary File Overwrite & RCE |
| [RUSTSEC-2026-0369](https://osv.dev/vulnerability/RUSTSEC-2026-0369) | critical (9.1) | zip 2.4.2 (crates.io) | 9.0.0 | ZipStreamReader::extract() and ZipArchive::extract() apply Unix permissions through symlinks without confining the target |
| [RUSTSEC-2026-0176](https://osv.dev/vulnerability/RUSTSEC-2026-0176) | high (8.7) | pyo3 0.28.2 (crates.io) | 0.29.0 | Out-of-bounds read in \`nth\` / \`nth\_back\` for \`PyList\` and \`PyTuple\` iterators |
| [RUSTSEC-2026-0194](https://osv.dev/vulnerability/RUSTSEC-2026-0194) | high (7.5) | quick-xml 0.37.5 (crates.io) | 0.41.0 | Quadratic run time when checking a start tag for duplicate attribute names |
| [RUSTSEC-2026-0195](https://osv.dev/vulnerability/RUSTSEC-2026-0195) | high (7.5) | quick-xml 0.37.5 (crates.io) | 0.41.0 | Unbounded namespace-declaration allocation in \`NsReader\` enables memory-exhaustion denial of service |
| [CVE-2026-115909](https://insights.sbomify.com/CVE-2026-115909/) | high (7.5) | zip 2.4.2 (crates.io) | 9.0.0 | zip: \`ZipArchive::extract\` aborts the process on a symlink entry with a large declared size |
| [RUSTSEC-2026-0367](https://osv.dev/vulnerability/RUSTSEC-2026-0367) | high (7.3) | zip 2.4.2 (crates.io) | 9.0.0 | Insecure Preservation of SUID/SGID Bits during ZIP Extraction Leading to Potential Privilege Escalation |
| [CVE-2026-115906](https://insights.sbomify.com/CVE-2026-115906/) | medium (6.5) | zip 2.4.2 (crates.io) | 9.0.0 | zip: AES Entry HMAC Authentication Bypass on Premature EOF |
| [RUSTSEC-2026-0177](https://osv.dev/vulnerability/RUSTSEC-2026-0177) | medium (6.3) | pyo3 0.28.2 (crates.io) | 0.29.0 | Missing \`Sync\` bound on \`PyCFunction::new\_closure\` closures |
| [RUSTSEC-2026-0190](https://osv.dev/vulnerability/RUSTSEC-2026-0190) | unknown | anyhow 1.0.102 (crates.io) | 1.0.103 | Unsoundness in \`Error::downcast\_mut()\` |
| [RUSTSEC-2026-0204](https://osv.dev/vulnerability/RUSTSEC-2026-0204) | unknown | crossbeam-epoch 0.9.18 (crates.io) | 0.9.20 | Invalid pointer dereference in \`fmt::Pointer\` impl for \`Atomic\` and \`Shared\` when the underlying pointer is invalid |
| [RUSTSEC-2024-0436](https://osv.dev/vulnerability/RUSTSEC-2024-0436) | unknown | paste 1.0.15 (crates.io) | none listed | paste - no longer maintained |
| [RUSTSEC-2026-0097](https://osv.dev/vulnerability/RUSTSEC-2026-0097) | unknown | rand 0.8.5 (crates.io) | 0.8.6 | Rand is unsound with a custom logger using \`rand::rng()\` |
| [RUSTSEC-2026-0368](https://osv.dev/vulnerability/RUSTSEC-2026-0368) | unknown | zip 2.4.2 (crates.io) | 9.0.0 | zip: \`ZipArchive::extract\` creates symbolic links whose attacker-controlled targets are outside the destination directory |
| [RUSTSEC-2026-0391](https://osv.dev/vulnerability/RUSTSEC-2026-0391) | unknown | zstd 0.13.3 (crates.io) | 0.13.4 | Data from an abandoned stream leaks into the next stream on a reused context |
| [RUSTSEC-2026-0395](https://osv.dev/vulnerability/RUSTSEC-2026-0395) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | Use-after-free with \`CParameter::StableInBuffer\` |
| [RUSTSEC-2026-0396](https://osv.dev/vulnerability/RUSTSEC-2026-0396) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | \`Seekable\` reads a NULL or out-of-bounds seek table |
| [RUSTSEC-2026-0397](https://osv.dev/vulnerability/RUSTSEC-2026-0397) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | \`OutBuffer::around\_pos\` exposes uninitialized memory |
| [RUSTSEC-2026-0398](https://osv.dev/vulnerability/RUSTSEC-2026-0398) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | \`Seekable::decompress\` sets a \`Vec\` length beyond its capacity for offsets past the end |
| [RUSTSEC-2026-0399](https://osv.dev/vulnerability/RUSTSEC-2026-0399) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | Use-after-free through \`init\_using\_cdict\` and \`init\_using\_ddict\` |
| [RUSTSEC-2026-0400](https://osv.dev/vulnerability/RUSTSEC-2026-0400) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | Use-after-free of a dictionary after a one-shot call on a context with an open stream |
| [RUSTSEC-2026-0401](https://osv.dev/vulnerability/RUSTSEC-2026-0401) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | Out-of-bounds read in \`train\_from\_buffer\` when sample sizes overflow |
| [RUSTSEC-2026-0402](https://osv.dev/vulnerability/RUSTSEC-2026-0402) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | Heap buffer overflow in \`CCtx::try\_clone\` on a multithreaded context |
| [RUSTSEC-2026-0403](https://osv.dev/vulnerability/RUSTSEC-2026-0403) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | Uninitialized memory exposed when streaming decompression of a legacy frame fails |
| [RUSTSEC-2026-0404](https://osv.dev/vulnerability/RUSTSEC-2026-0404) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | Double free in \`DCtx::try\_clone\` |
| [RUSTSEC-2026-0405](https://osv.dev/vulnerability/RUSTSEC-2026-0405) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | Out-of-bounds read with an out-of-range \`InBuffer::pos\` |
| [RUSTSEC-2026-0406](https://osv.dev/vulnerability/RUSTSEC-2026-0406) | unknown | zstd-safe 7.2.4 (crates.io) | 7.4.0 | Use-after-free when changing a multithreaded context with an unfinished frame |
| [RUSTSEC-2026-0410](https://osv.dev/vulnerability/RUSTSEC-2026-0410) | unknown | zstd-sys 2.0.16+zstd.1.5.7 (crates.io) | 2.1.2 | WebAssembly allocator shim corrupts memory on allocation failure |

## Fetch it over TEA

This SBOM is served over the [Transparency Exchange API](https://github.com/CycloneDX/transparency-exchange-api) (TEA). With the `libtea` client:

```
pip install libtea
python -m libtea https://pypi.sbomify.com pkg:pypi/surge-py@0.1.9
```

Machine-readable copy of this page: https://pypi.sbomify.com/package/surge-py/0.1.9.json

---
From pypi-tea by sbomify: https://pypi.sbomify.com/package/surge-py/0.1.9