Formal Analysis and Supply Chain Security for Agentic AI Skills
Organizations: Independent Research · Solution Architect
Abstract
32 pages, 5 theorems with full proofs, 68 references, open-source tool: https://github.com/qualixar/skillfortify. v2: corrects the bibliography (22 entries had author lists that did not match the papers at the cited arXiv identifiers; all verified against the arXiv API and corrected, and affected authors notified) and three external claims against primary sources: MalTool reports 1,300 standalone and 5,727 embedded malicious tools, not 6,487; CVE-2026-25253 is authentication-token exfiltration via an unvalidated gatewayUrl, credited to depthfirst and fixed in 2026.1.29, not remote code execution through a crafted skill package; ClawHavoc counts are 341, later 824, and 1,184 by source and date, not "over 1,200". All experiments re-measured against the released v0.6.0 implementation using harnesses now committed to the repository. E1/E2 unchanged (F1 96.15%). E3 reverses to a negative result: information flow analysis adds no detections over pattern matching on this corpus. The soundness theorem's scope is stated explicitly and no longer conflated with the zero false-positive rate.
Figures & tables
| Tool | Formal | Dep. | Lock- | Trust | SBoM |
|---|---|---|---|---|---|
| Model | Graph | file | Score | ||
| Snyk agent-scan | ✗ | ✗ | ✗ | ✗ | ✗ |
| Cisco skill-scanner | ✗ | ✗ | ✗ | ✗ | ✗ |
| ToolShield | ✗ | ✗ | ✗ | ✗ | ✗ |
| ICSE-NIER ’26 | Partial | ✗ | ✗ | ✗ | ✗ |
| mcp-audit | ✗ | ✗ | Partial | ✗ | Partial |
| Pattern | Abstract | Concrete |
|---|---|---|
| URL reference | States with HTTP GET access | |
| HTTP write verb | States with HTTP POST/PUT/… | |
| Shell command | States executing shell | |
| Env var reference | States reading env vars | |
| File read keyword | States reading files | |
| File write keyword | States writing files |
| Feature | Traditional | ADG (Ours) |
|---|---|---|
| Version constraints | ✓ | ✓ |
| Conflict detection | ✓ | ✓ |
| SAT-based resolution | ✓ | ✓ |
| Capability bounding | — | ✓ |
| Trust-aware resolution | — | ✓ |
| Lockfile integrity | ✓ | ✓ |
| Metric | Value | |
|---|---|---|
| Precision | 100.00% | (250/250) |
| Recall | 92.59% | (250/270) |
| F1 Score | 96.15% | |
| Accuracy | 96.30% | (520/540) |
| True Positives (TP) | 250 | |
| False Positives (FP) | 0 |
| Format | Precision | Recall | F1 Score |
|---|---|---|---|
| Claude Code | 100.00% | 96.67% | 98.31% |
| MCP Server | 100.00% | 84.44% | 91.57% |
| OpenClaw | 100.00% | 96.67% | 98.31% |
| Overall | 100.00% | 92.59% | 96.15% |
| ID | Attack Type | Detected | Rate |
|---|---|---|---|
| A1 | Data exfiltration (HTTP) | 28/30 | 93.3% |
| A2 | Data exfiltration (DNS) | 17/18 | 94.4% |
| A3 | Credential theft | 29/30 | 96.7% |
| A4 | Arbitrary code execution | 30/30 | 100% |
| A5 | File system tampering | 18/18 | 100% |
| A6 | Privilege escalation | 18/18 | 100% |
| Detection Outcome | Skills | Fraction |
|---|---|---|
| Detected by pattern matching alone | 250 | 92.59% |
| Detected only with information flow | 0 | 0.00% |
| Not detected | 20 | 7.41% |
| Total detected | 250 | 92.59% |
| Skills | Total Time (s) | Per Skill (ms) |
|---|---|---|
| 10 | 0.00005 | 0.005 |
| 50 | 0.00028 | 0.006 |
| 100 | 0.00064 | 0.006 |
| 200 | 0.00174 | 0.009 |
| 500 | 0.00754 | 0.015 |
| 1,000 | 0.02674 | 0.027 |
| Operation | Skills | Median (s) | Per Skill (ms) |
|---|---|---|---|
| scan | 540 | 0.293 | 0.54 |
| Exp. | Property | Target | Result |
|---|---|---|---|
| E1 | Detection F1 | 96.15% ✓ | |
| E2 | False positive rate | 0.00% ✓ | |
| E3 | Combined added coverage | 0.0% ✗ | |
| E4 | 1K-skill resolution | s | 0.027 s ✓ |
| E5 | Trust monotonicity | 100% | 100% ✓ |
| E5 | Weight sensitivity CV | Report | 0.13 ✓ |
Appendix figures & tables2 assets
Supplementary material from the paper’s appendix.
Appendix
| ID | Attack Type | Claude | MCP | OpenClaw | Total |
| A1 | Data exfiltration (HTTP) | 10 | 10 | 10 | 30 |
| A2 | Data exfiltration (DNS) | 6 | 6 | 6 | 18 |
| A3 | Credential theft | 10 | 10 | 10 | 30 |
| A4 | Arbitrary code execution | 10 | 10 | 10 | 30 |
| A5 | File system tampering | 6 | 6 | 6 | 18 |
| A6 | Privilege escalation | 6 | 6 | 6 | 18 |
| Field | Type | Description |
| lockfile_version | string | Schema version for forward compatibility. Current: "1.0.0" . |
| generated_at | datetime | UTC timestamp when the lockfile was generated. Enables audit trail tracking. |
| generated_by | string | Identifies the tool and version (e.g., "skillfortify 0.1.0" ). |
| skills | object | Maps skill names (keys) to their locked resolution objects. Keys are sorted lexicographically for deterministic serialization. |
| integrity | string | SHA-256 hash computed over the canonical JSON serialization of the skills object. Detects tampering with the lockfile after generation. |
| Per-skill fields (within each entry in skills ): | ||
AI Agent Security
Artificial intelligence agent security studies attacks and safeguards for tool-using, persistent, and collaborative systems across digital and physical settings.
See all 508 papers