Skip to content

feat: AVE-2026-00074 -- reclaimable dead external anchor (SkillJacking) - #135

Merged
chaksaray merged 1 commit into
developfrom
ave-00074-dead-anchor-reclamation
Aug 6, 2026
Merged

feat: AVE-2026-00074 -- reclaimable dead external anchor (SkillJacking)#135
chaksaray merged 1 commit into
developfrom
ave-00074-dead-anchor-reclamation

Conversation

@chaksaray

Copy link
Copy Markdown
Contributor

Summary

  • Adds AVE-2026-00074: a skill references an external GitHub owner/repo, package, domain, or cloud subdomain that was live and under its original owner's control when authored, but has since been deleted, renamed, or expired -- making it re-registerable by an attacker with no change to the skill's own committed content.
  • Distinct from AVE-2026-00062 (unpinned dependency substitution): 00062's mechanism is the absence of a pin from the moment a reference was declared. Here the reference may have been fully precise and stable when written -- pinning would not have helped, because the vulnerability is a previously-resolved reference whose target identity changed out from under it after publication, not an unresolved one.
  • Verified via keyword sweep against the live corpus (no match), field-level comparison of provenance_vector against AVE-2026-00062 (genuinely distinct mechanism), and by reading the actual repo-forensics scanner source, not just its README:
    • Primary source: alexgreensh/repo-forensics scan_dead_anchors.py -- extracts every external anchor a skill points at and probes whether it's confirmed-claimable, live-and-owned, or unverifiable.
    • Independent real-world confirmation: AIR Security's SkillJacking disclosure (2026-07-02) -- 925 skills / ~134,000 agents found on hijackable dependencies, including a confirmed takeover of the seedance2-api skill (11,483 installs) via re-registering its deleted GitHub owner.
  • Severity HIGH, AIVSS 7.1 (cvss_base 8.7, aars 5.5 -- dynamic_identity scored at genuine maximum, this class is definitionally trust-anchor confusion).
  • mitre_atlas researched and left empty rather than force-fit: ATLAS's own AI-software supply-chain technique (AML.T0010.001) names build/maintainer compromise, namesquatting, and hallucinated package names as its sub-cases -- none name an attacker legitimately re-registering an identity the original owner abandoned. A genuine gap in ATLAS's own taxonomy.

Test plan

  • python3 scripts/validate_records.py -- 74/74 records valid
  • python3 scripts/check_fixtures.py -- all records have positive + negative fixtures
  • pytest tests/ -x -q -- 297 passed
  • node scripts/build-records.js -- dist regenerated, frozen v1.1.0 snapshot untouched
  • README record count (badge, Stats table, collapsible index) and CHANGELOG updated

…ing)

A skill referencing an external GitHub owner, package, domain, or cloud
subdomain that was live when authored can have that anchor go dead and
become claimable by an attacker, with no change to the skill's own
content. Distinct from AVE-2026-00062 (absence of pinning at
declaration time): this class is a previously-valid reference decaying
after the fact, not a reference that was never pinned. Sourced from
repo-forensics' scan_dead_anchors.py and AIR's SkillJacking disclosure
(925 skills / ~134,000 agents on hijackable dependencies, including a
confirmed takeover of an 11,483-install skill via GitHub owner
re-registration).

Co-Authored-By: Claude <noreply@anthropic.com>
@chaksaray
chaksaray merged commit 3032813 into develop Aug 6, 2026
6 checks passed
@chaksaray
chaksaray deleted the ave-00074-dead-anchor-reclamation branch August 6, 2026 23:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant