feat(corpus): add PyPI registry supply-chain platform (3 red↔blue pairs)#24
Merged
Conversation
Python mirror of the npm round over the PyPI project journal (product: pypi, field action): - pypi-malicious-publish (T1195.002) — token release upload bypassing trusted publishing - pypi-role-add (T1098) — rogue Owner/Maintainer for durable publish rights - pypi-trusted-publisher (T1098) — rogue OIDC trusted publisher backdoor Companion-only registry pairs; corpus is now 68 paired concepts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011spYcGfeP4a3RNQQVDrGtW
Contributor
There was a problem hiding this comment.
Pull request overview
Adds PyPI as a new package-registry “platform” in the corpus, mirroring the existing npm registry round with three red↔blue companion-only pairs derived from PyPI’s project journal telemetry.
Changes:
- Added 3 PyPI supply-chain red entries (malicious token upload, role/owner add, trusted publisher add) and their paired blue journal detections.
- Updated README corpus summary/table to include the new PyPI pairs and new total paired-concept count.
- Updated the changelog to document the new PyPI platform and revised corpus totals.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Updates corpus totals and adds the three PyPI rows to the corpus table. |
| CHANGELOG.md | Documents the PyPI registry platform additions and updates the paired-concept count. |
| entries/red/pypi-malicious-publish.md | New red entry describing token-based malicious release upload via twine. |
| entries/red/pypi-role-add.md | New red entry describing adding an Owner/Maintainer via the PyPI web console. |
| entries/red/pypi-trusted-publisher.md | New red entry describing registering an attacker-controlled trusted publisher (OIDC). |
| entries/blue/pypi-publish-audit.md | New blue detection for new release events not published via trusted publisher. |
| entries/blue/pypi-role-audit.md | New blue detection for add Owner / add Maintainer journal entries. |
| entries/blue/pypi-trusted-publisher-audit.md | New blue detection for trusted publisher additions in the journal. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- pypi-malicious-publish: reword so it doesn't imply setup.py runs on every install (wheels don't) — code runs when an sdist is built or on import. - pypi-publish-audit: 'widely-depended' → 'widely depended-on'. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011spYcGfeP4a3RNQQVDrGtW
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds the PyPI registry platform — the Python mirror of the npm round — as 3 companion-only red↔blue pairs over the PyPI project journal (
product: pypi, fieldaction):pypi-malicious-publish— upload a trojanized release via a stolen API token (bypassing trusted publishing)pypi-publish-audit—new releasenot via a trusted publisherpypi-role-add— add a rogue Owner/Maintainer for durable publish rightspypi-role-audit— journaladd Owner/add Maintainerpypi-trusted-publisher— register an attacker-controlled OIDC trusted publisher (credential-less backdoor)pypi-trusted-publisher-audit— add-trusted publisherjournal entryCorpus is now 68 paired concepts + 1 unpaired recon entry.
Why
Completes the package-registry seam alongside npm. PyPI's modern supply-chain surface is distinct: trusted publishing (OIDC) is the secure norm, so the two high-signal detections are a token upload that bypasses it and a rogue trusted publisher that abuses it.
Notes
companion:genmarkers, nothing generates into the flat views.twine) has a CLI.bash -n, pairing graph + slot coverage,gen-views.sh --check.🤖 Generated with Claude Code
https://claude.ai/code/session_011spYcGfeP4a3RNQQVDrGtW
Generated by Claude Code