Repository navigation
feat: TeamPCP PyPI campaign detection — IOC ledger, litellm .pth tests, import-time spec - #137
Merged
Merged
Conversation
…s, import-time spec Turn the telnyx/litellm (TeamPCP) supply-chain analysis into detection, across three tracks. No new check and no scope/gate change: tracks 1-2 reuse VC-003 and VC-002e; track 3 is spec + decision only. 1. IOC ledger (VC-003): docs/ioc-teampcp.example.json flags litellm 1.82.8 and telnyx 4.87.1/4.87.2; test loads the shipped feed and asserts it matches the compromised versions but not a clean 4.85.0. 2. litellm .pth (Track A): analyzer tests assert the real .pth trigger reads obfuscation+exec while a benign bootstrap import does not; check tests assert VC-002e fires on the former and stays silent on the latter. 3. telnyx import-time gap (Track B): payload in telnyx/_client.py runs on import, out of the install-surface model. Recorded as a boundary in D-165 and specified in docs/VC-002L-python-import-time.md (scoped, advisory-only, corpus-gated) — no code until the spec is met. Validation: go test ./... green, vet clean, build ok. E2E: scan -ioc blocks telnyx@4.87.1 (exit 1, VC-003 block).
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.
Intent
Turn the telnyx/litellm supply-chain analysis (TeamPCP campaign) into depSNORT detection capability, across three tracks. No new check and no scope/gate change — tracks 1–2 reuse existing VC-003 and VC-002e; track 3 is spec + decision only.
Changes
1. IOC ledger (VC-003) — immediate detection
docs/ioc-teampcp.example.json— reference feed flagging litellm 1.82.8, telnyx 4.87.1, telnyx 4.87.2 (critical).internal/datasource/ioc/ioc_test.go— loads the shipped feed; asserts it matches the compromised versions and not a cleantelnyx@4.85.0.2. litellm
.pth— validates existing detection (Track A)internal/ecosystem/pypi/installsurface_test.go— the real.pthtrigger readsobfuscation+exec; a benign bootstrap-import.pthdoes not (the FP boundary).internal/check/builtin/teampcp_pth_test.go— VC-002e fires on the litellm shape, stays silent on the benign one.3. telnyx import-time gap (Track B) — spec + decision, no code
docs/VC-002L-python-import-time.md— scopedAnalyzePythonLoadTimespec: capability-gated, advisory-only, corpus-gated.D-165indocs/DECISIONS.md— records the boundary: gap acknowledged, held out of scope until the spec's corpus eval is met; never gates prematurely.Security semantics
No scope expansion, no new gate class. The import-time gap (telnyx
_client.pyruns onimport, outside the install-surface model) is documented, not silently coded — honoring zero-silent-failure and gate-vs-severity disciplines. Coverage honesty preserved (offline sdist gap still reported as "NOT an all-clear" in E2E).Validation
go test ./...— all pass ·go vetclean ·go buildok · new Go files gofmt-clean.scan -ioc docs/ioc-teampcp.example.jsonontelnyx==4.87.1→ exit 1, one VC-003 block finding.Adversarial / FP review
telnyx@4.85.0(ledger) and benign bootstrap-import.pth(VC-002e).Remaining limitations
Track B is spec-only; the import-time analyzer is not implemented. npm non-entry runtime modules are the same class of gap, noted but not closed.
🤖 Generated with Claude Code