{"url":"https://pypi.sbomify.com/package/scriptmark/0.2.0","markdown_url":"https://pypi.sbomify.com/package/scriptmark/0.2.0.md","name":"scriptmark","version":"0.2.0","purl":"pkg:pypi/scriptmark@0.2.0","summary":"Automated grading CLI for student programming assignments","author":null,"project_urls":{},"requires_python":">=3.10","license":"GPL-3.0-or-later","classifiers":["Development Status :: 3 - Alpha","Intended Audience :: Education","License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Rust"],"wheels":[{"filename":"scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","url":"https://files.pythonhosted.org/packages/33/6a/b2c542db559644cb96ca0c9ec43cb12156fb7bb891ef8a3f650b99e2afd4/scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","sboms":[{"artifact_uuid":"f96f81e0-83ef-5e5d-b518-6cca922cb42f","path":"scriptmark-0.2.0.dist-info/sboms/scriptmark-py.cyclonedx.json","format":"CycloneDX/1.5","format_family":"CycloneDX","valid":true,"media_type":"application/vnd.cyclonedx+json","download_url":"https://pypi.sbomify.com/artifact/f96f81e0-83ef-5e5d-b518-6cca922cb42f/download","vulnerability_count":17,"scan_error":null}],"attestation":{"status":"verified","publisher_kind":"GitHub","repository":"Acture/scriptmark","workflow":"release.yml","environment":"release","predicate_type":"https://docs.pypi.org/attestations/publish/v1","certificate_claims":{"1.3.6.1.4.1.57264.1.8":"https://token.actions.githubusercontent.com","1.3.6.1.4.1.57264.1.9":"https://github.com/Acture/scriptmark/.github/workflows/release.yml@refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.10":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.11":"github-hosted","1.3.6.1.4.1.57264.1.12":"https://github.com/Acture/scriptmark","1.3.6.1.4.1.57264.1.13":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.14":"refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.15":"938161311","1.3.6.1.4.1.57264.1.16":"https://github.com/Acture","1.3.6.1.4.1.57264.1.17":"11632382","1.3.6.1.4.1.57264.1.18":"https://github.com/Acture/scriptmark/.github/workflows/release.yml@refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.19":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.20":"push","1.3.6.1.4.1.57264.1.21":"https://github.com/Acture/scriptmark/actions/runs/23945739763/attempts/1","1.3.6.1.4.1.57264.1.22":"public"}}},{"filename":"scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","url":"https://files.pythonhosted.org/packages/9c/38/a7caa521b92511bbebc024c7b1b4643da9f4f1acbbe5cfb552ddd0d835c8/scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","sboms":[{"artifact_uuid":"bf201007-fe7d-549b-ad25-32cfad5f5530","path":"scriptmark-0.2.0.dist-info/sboms/scriptmark-py.cyclonedx.json","format":"CycloneDX/1.5","format_family":"CycloneDX","valid":true,"media_type":"application/vnd.cyclonedx+json","download_url":"https://pypi.sbomify.com/artifact/bf201007-fe7d-549b-ad25-32cfad5f5530/download","vulnerability_count":17,"scan_error":null}],"attestation":{"status":"verified","publisher_kind":"GitHub","repository":"Acture/scriptmark","workflow":"release.yml","environment":"release","predicate_type":"https://docs.pypi.org/attestations/publish/v1","certificate_claims":{"1.3.6.1.4.1.57264.1.8":"https://token.actions.githubusercontent.com","1.3.6.1.4.1.57264.1.9":"https://github.com/Acture/scriptmark/.github/workflows/release.yml@refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.10":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.11":"github-hosted","1.3.6.1.4.1.57264.1.12":"https://github.com/Acture/scriptmark","1.3.6.1.4.1.57264.1.13":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.14":"refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.15":"938161311","1.3.6.1.4.1.57264.1.16":"https://github.com/Acture","1.3.6.1.4.1.57264.1.17":"11632382","1.3.6.1.4.1.57264.1.18":"https://github.com/Acture/scriptmark/.github/workflows/release.yml@refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.19":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.20":"push","1.3.6.1.4.1.57264.1.21":"https://github.com/Acture/scriptmark/actions/runs/23945739763/attempts/1","1.3.6.1.4.1.57264.1.22":"public"}}},{"filename":"scriptmark-0.2.0-cp312-cp312-win_amd64.whl","url":"https://files.pythonhosted.org/packages/21/af/c76bd369fc1428525841284ea5b0079cd959968bcaded7af0c38f11d9873/scriptmark-0.2.0-cp312-cp312-win_amd64.whl","sboms":[{"artifact_uuid":"32965f79-3785-5921-8a0d-5237abd8dc9f","path":"scriptmark-0.2.0.dist-info/sboms/scriptmark-py.cyclonedx.json","format":"CycloneDX/1.5","format_family":"CycloneDX","valid":true,"media_type":"application/vnd.cyclonedx+json","download_url":"https://pypi.sbomify.com/artifact/32965f79-3785-5921-8a0d-5237abd8dc9f/download","vulnerability_count":17,"scan_error":null}],"attestation":{"status":"verified","publisher_kind":"GitHub","repository":"Acture/scriptmark","workflow":"release.yml","environment":"release","predicate_type":"https://docs.pypi.org/attestations/publish/v1","certificate_claims":{"1.3.6.1.4.1.57264.1.8":"https://token.actions.githubusercontent.com","1.3.6.1.4.1.57264.1.9":"https://github.com/Acture/scriptmark/.github/workflows/release.yml@refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.10":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.11":"github-hosted","1.3.6.1.4.1.57264.1.12":"https://github.com/Acture/scriptmark","1.3.6.1.4.1.57264.1.13":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.14":"refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.15":"938161311","1.3.6.1.4.1.57264.1.16":"https://github.com/Acture","1.3.6.1.4.1.57264.1.17":"11632382","1.3.6.1.4.1.57264.1.18":"https://github.com/Acture/scriptmark/.github/workflows/release.yml@refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.19":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.20":"push","1.3.6.1.4.1.57264.1.21":"https://github.com/Acture/scriptmark/actions/runs/23945739763/attempts/1","1.3.6.1.4.1.57264.1.22":"public"}}},{"filename":"scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl","url":"https://files.pythonhosted.org/packages/b3/d9/d0a6f4782e9664592a9ba5574d10d8e601ceb59ff4bdf903d32af5367de4/scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl","sboms":[{"artifact_uuid":"ca3d0bb0-892f-50e2-b543-a69eaae7366d","path":"scriptmark-0.2.0.dist-info/sboms/scriptmark-py.cyclonedx.json","format":"CycloneDX/1.5","format_family":"CycloneDX","valid":true,"media_type":"application/vnd.cyclonedx+json","download_url":"https://pypi.sbomify.com/artifact/ca3d0bb0-892f-50e2-b543-a69eaae7366d/download","vulnerability_count":17,"scan_error":null}],"attestation":{"status":"verified","publisher_kind":"GitHub","repository":"Acture/scriptmark","workflow":"release.yml","environment":"release","predicate_type":"https://docs.pypi.org/attestations/publish/v1","certificate_claims":{"1.3.6.1.4.1.57264.1.8":"https://token.actions.githubusercontent.com","1.3.6.1.4.1.57264.1.9":"https://github.com/Acture/scriptmark/.github/workflows/release.yml@refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.10":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.11":"github-hosted","1.3.6.1.4.1.57264.1.12":"https://github.com/Acture/scriptmark","1.3.6.1.4.1.57264.1.13":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.14":"refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.15":"938161311","1.3.6.1.4.1.57264.1.16":"https://github.com/Acture","1.3.6.1.4.1.57264.1.17":"11632382","1.3.6.1.4.1.57264.1.18":"https://github.com/Acture/scriptmark/.github/workflows/release.yml@refs/tags/v0.2.0","1.3.6.1.4.1.57264.1.19":"525151f1eedcd5e30d47f49f0987b5af5706e431","1.3.6.1.4.1.57264.1.20":"push","1.3.6.1.4.1.57264.1.21":"https://github.com/Acture/scriptmark/actions/runs/23945739763/attempts/1","1.3.6.1.4.1.57264.1.22":"public"}}}],"formats":["CycloneDX"],"sbom_count":4,"has_attestation":true,"vulnerabilities":[{"id":"CVE-2026-115905","aliases":["GHSA-m665-v7pm-7grj"],"summary":"zip: Critical Parser Differential & Security Control Bypass via Dual-Header Inconsistencies (Zip Cloaking) Leading to Arbitrary File Overwrite & RCE","severity":"critical","score":10.0,"package":"zip","version":"8.5.0","ecosystem":"crates.io","purl":"pkg:cargo/zip@8.5.0","fixed":["9.0.5"],"url":"https://insights.sbomify.com/CVE-2026-115905/","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0369","aliases":["GHSA-4684-h2q9-2vcp"],"summary":"ZipStreamReader::extract() and ZipArchive::extract() apply Unix permissions through symlinks without confining the target","severity":"critical","score":9.1,"package":"zip","version":"8.5.0","ecosystem":"crates.io","purl":"pkg:cargo/zip@8.5.0","fixed":["9.0.0"],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0369","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0176","aliases":["GHSA-36hh-v3qg-5jq4"],"summary":"Out-of-bounds read in `nth` / `nth_back` for `PyList` and `PyTuple` iterators","severity":"high","score":8.7,"package":"pyo3","version":"0.24.2","ecosystem":"crates.io","purl":"pkg:cargo/pyo3@0.24.2","fixed":["0.29.0"],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0176","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0194","aliases":[],"summary":"Quadratic run time when checking a start tag for duplicate attribute names","severity":"high","score":7.5,"package":"quick-xml","version":"0.37.5","ecosystem":"crates.io","purl":"pkg:cargo/quick-xml@0.37.5","fixed":["0.41.0"],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0194","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0195","aliases":[],"summary":"Unbounded namespace-declaration allocation in `NsReader` enables memory-exhaustion denial of service","severity":"high","score":7.5,"package":"quick-xml","version":"0.37.5","ecosystem":"crates.io","purl":"pkg:cargo/quick-xml@0.37.5","fixed":["0.41.0"],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0195","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"CVE-2026-115907","aliases":["GHSA-9hj8-73fh-9963"],"summary":"zip: legacy Shrink/Reduce/Implode decoder: denial of service from attacker-controlled ZIP64 uncompressed size","severity":"high","score":7.5,"package":"zip","version":"8.5.0","ecosystem":"crates.io","purl":"pkg:cargo/zip@8.5.0","fixed":["9.0.0"],"url":"https://insights.sbomify.com/CVE-2026-115907/","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"CVE-2026-115909","aliases":["GHSA-q7v9-x93c-xqv3","RUSTSEC-2026-0429"],"summary":"zip: `ZipArchive::extract` aborts the process on a symlink entry with a large declared size","severity":"high","score":7.5,"package":"zip","version":"8.5.0","ecosystem":"crates.io","purl":"pkg:cargo/zip@8.5.0","fixed":["9.0.0"],"url":"https://insights.sbomify.com/CVE-2026-115909/","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"CVE-2026-115908","aliases":["GHSA-hjqx-j4rw-g7xv"],"summary":"zip: Arbitrary file write outside the extraction directory, because ZipArchive::extract validates symlink targets lexically. ","severity":"high","score":7.4,"package":"zip","version":"8.5.0","ecosystem":"crates.io","purl":"pkg:cargo/zip@8.5.0","fixed":["9.0.0"],"url":"https://insights.sbomify.com/CVE-2026-115908/","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"CVE-2026-6654","aliases":["GHSA-xphw-cqx3-667j","RUSTSEC-2026-0103"],"summary":"Use-After-Free and Double Free in IntoIter::drop When Element Drop Panics","severity":"high","score":7.3,"package":"thin-vec","version":"0.2.14","ecosystem":"crates.io","purl":"pkg:cargo/thin-vec@0.2.14","fixed":["0.2.16"],"url":"https://insights.sbomify.com/CVE-2026-6654/","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0367","aliases":["GHSA-vv5m-jxxh-4627"],"summary":" Insecure Preservation of SUID/SGID Bits during ZIP Extraction Leading to Potential Privilege Escalation","severity":"high","score":7.3,"package":"zip","version":"8.5.0","ecosystem":"crates.io","purl":"pkg:cargo/zip@8.5.0","fixed":["9.0.0"],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0367","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"CVE-2026-115906","aliases":["GHSA-8hxf-qr8p-62x4"],"summary":"zip: AES Entry HMAC Authentication Bypass on Premature EOF","severity":"medium","score":6.5,"package":"zip","version":"8.5.0","ecosystem":"crates.io","purl":"pkg:cargo/zip@8.5.0","fixed":["9.0.0"],"url":"https://insights.sbomify.com/CVE-2026-115906/","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0177","aliases":["GHSA-chgr-c6px-7xpp"],"summary":"Missing `Sync` bound on `PyCFunction::new_closure` closures","severity":"medium","score":6.3,"package":"pyo3","version":"0.24.2","ecosystem":"crates.io","purl":"pkg:cargo/pyo3@0.24.2","fixed":["0.29.0"],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0177","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0190","aliases":[],"summary":"Unsoundness in `Error::downcast_mut()`","severity":"unknown","score":null,"package":"anyhow","version":"1.0.102","ecosystem":"crates.io","purl":"pkg:cargo/anyhow@1.0.102","fixed":["1.0.103"],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0190","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0097","aliases":["GHSA-cq8v-f236-94qc"],"summary":"Rand is unsound with a custom logger using `rand::rng()`","severity":"unknown","score":null,"package":"rand","version":"0.9.2","ecosystem":"crates.io","purl":"pkg:cargo/rand@0.9.2","fixed":["0.9.3"],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0097","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0249","aliases":[],"summary":"smartstring is unmaintained","severity":"unknown","score":null,"package":"smartstring","version":"1.0.1","ecosystem":"crates.io","purl":"pkg:cargo/smartstring@1.0.1","fixed":[],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0249","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0386","aliases":[],"summary":"`AsyncFd::new` and related constructors violate I/O safety","severity":"unknown","score":null,"package":"tokio","version":"1.51.0","ecosystem":"crates.io","purl":"pkg:cargo/tokio@1.51.0","fixed":["1.51.6"],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0386","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]},{"id":"RUSTSEC-2026-0368","aliases":["GHSA-4v9h-p7m9-rh26"],"summary":"zip: `ZipArchive::extract` creates symbolic links whose attacker-controlled targets are outside the destination directory","severity":"unknown","score":null,"package":"zip","version":"8.5.0","ecosystem":"crates.io","purl":"pkg:cargo/zip@8.5.0","fixed":["9.0.0"],"url":"https://osv.dev/vulnerability/RUSTSEC-2026-0368","wheels":["scriptmark-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl","scriptmark-0.2.0-cp312-cp312-macosx_11_0_arm64.whl","scriptmark-0.2.0-cp312-cp312-win_amd64.whl","scriptmark-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"]}],"vulnerability_scan":{"scanned_sboms":4,"total_sboms":4,"scanned_at":"2026-11-10","scanner":"osv-scanner 2.7.0","severity_counts":{"critical":2,"high":8,"medium":2,"unknown":5}}}