attackmap 0.6.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. attackmap/__init__.py +2 -0
  2. attackmap/analyzer.py +449 -0
  3. attackmap/analyzer_contracts.py +194 -0
  4. attackmap/analyzers.py +1003 -0
  5. attackmap/anomalies.py +612 -0
  6. attackmap/asset_model.py +245 -0
  7. attackmap/attack_taxonomy.py +133 -0
  8. attackmap/auth_protocol.py +702 -0
  9. attackmap/authz.py +1695 -0
  10. attackmap/bench.py +467 -0
  11. attackmap/cli.py +1474 -0
  12. attackmap/config_scanner.py +389 -0
  13. attackmap/context_pack.py +82 -0
  14. attackmap/contracts.py +201 -0
  15. attackmap/control_model.py +280 -0
  16. attackmap/crossrepo.py +356 -0
  17. attackmap/crypto.py +240 -0
  18. attackmap/cve.py +717 -0
  19. attackmap/defensive_review.py +647 -0
  20. attackmap/detection_opportunities.py +1221 -0
  21. attackmap/detections/__init__.py +491 -0
  22. attackmap/detections/bola.yml +57 -0
  23. attackmap/detections/cloud.yml +609 -0
  24. attackmap/detections/injection.yml +167 -0
  25. attackmap/detections/secrets.yml +48 -0
  26. attackmap/detections/sigma.py +511 -0
  27. attackmap/detections/ssrf.yml +98 -0
  28. attackmap/detections/weakness.yml +62 -0
  29. attackmap/detections/webhook.yml +45 -0
  30. attackmap/detections/workflow.yml +121 -0
  31. attackmap/diagrams.py +237 -0
  32. attackmap/diff.py +301 -0
  33. attackmap/exploitability.py +493 -0
  34. attackmap/fingerprint.py +91 -0
  35. attackmap/fleet.py +370 -0
  36. attackmap/gitref.py +129 -0
  37. attackmap/graph.py +26 -0
  38. attackmap/handler_auth.py +639 -0
  39. attackmap/handler_span.py +62 -0
  40. attackmap/hunt_harness.py +505 -0
  41. attackmap/insights.py +701 -0
  42. attackmap/llm_review.py +846 -0
  43. attackmap/lockfiles.py +521 -0
  44. attackmap/mass_assignment.py +543 -0
  45. attackmap/md.py +175 -0
  46. attackmap/merge.py +333 -0
  47. attackmap/models.py +1284 -0
  48. attackmap/plugins_lock.py +114 -0
  49. attackmap/popular_packages.py +193 -0
  50. attackmap/progress.py +258 -0
  51. attackmap/recon_models.py +31 -0
  52. attackmap/recon_to_analysis.py +149 -0
  53. attackmap/redact.py +220 -0
  54. attackmap/report.py +424 -0
  55. attackmap/review_eval.py +335 -0
  56. attackmap/review_json.py +308 -0
  57. attackmap/review_prompts.py +796 -0
  58. attackmap/route_auth_fusion.py +474 -0
  59. attackmap/safe_fs.py +285 -0
  60. attackmap/sarif.py +373 -0
  61. attackmap/sbom.py +418 -0
  62. attackmap/scanner.py +1379 -0
  63. attackmap/sdk/__init__.py +278 -0
  64. attackmap/sdk/contracts.py +17 -0
  65. attackmap/sdk/fs.py +156 -0
  66. attackmap/sdk/models.py +59 -0
  67. attackmap/secrets_history.py +161 -0
  68. attackmap/security_overlay.py +71 -0
  69. attackmap/srcpaths.py +301 -0
  70. attackmap/suggest.py +394 -0
  71. attackmap/supply_chain.py +688 -0
  72. attackmap/suppress.py +740 -0
  73. attackmap/taint.py +1540 -0
  74. attackmap/taint_flow.py +1419 -0
  75. attackmap/taint_sinks.py +431 -0
  76. attackmap/taint_sinks.yaml +308 -0
  77. attackmap/taint_sources.py +396 -0
  78. attackmap/taxonomy.py +465 -0
  79. attackmap/threat_model.py +3441 -0
  80. attackmap/topology.py +316 -0
  81. attackmap/triage.py +151 -0
  82. attackmap/weaknesses.py +365 -0
  83. attackmap/webhardening.py +479 -0
  84. attackmap/webhook_verification.py +1067 -0
  85. attackmap/workflow_scanner.py +964 -0
  86. attackmap-0.6.4.dist-info/METADATA +226 -0
  87. attackmap-0.6.4.dist-info/RECORD +91 -0
  88. attackmap-0.6.4.dist-info/WHEEL +5 -0
  89. attackmap-0.6.4.dist-info/entry_points.txt +2 -0
  90. attackmap-0.6.4.dist-info/licenses/LICENSE +21 -0
  91. attackmap-0.6.4.dist-info/top_level.txt +1 -0
@@ -0,0 +1,226 @@
1
+ Metadata-Version: 2.4
2
+ Name: attackmap
3
+ Version: 0.6.4
4
+ Summary: AI-assisted defensive security analyzer for codebases — scans a repository, models assets and controls, finds cross-cutting weaknesses, and generates an evidence-grounded review with MITRE ATT&CK mappings and detection-engineering hints.
5
+ Author: AttackMap Contributors
6
+ Author-email: Matthew Davis <mlaify@mlaify.io>
7
+ Maintainer-email: Matthew Davis <mlaify@mlaify.io>
8
+ License: MIT
9
+ Project-URL: Homepage, https://github.com/mlaify/AttackMap
10
+ Project-URL: Documentation, https://github.com/mlaify/AttackMap/wiki
11
+ Project-URL: Repository, https://github.com/mlaify/AttackMap
12
+ Project-URL: Issues, https://github.com/mlaify/AttackMap/issues
13
+ Project-URL: Changelog, https://github.com/mlaify/AttackMap/blob/main/CHANGELOG.md
14
+ Keywords: security,static-analysis,appsec,defensive-security,threat-modeling,attack-surface,mitre-attack,detection-engineering,code-review,llm,claude
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Environment :: Console
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: Intended Audience :: Information Technology
19
+ Classifier: Intended Audience :: System Administrators
20
+ Classifier: License :: OSI Approved :: MIT License
21
+ Classifier: Operating System :: OS Independent
22
+ Classifier: Programming Language :: Python :: 3
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Programming Language :: Python :: 3 :: Only
27
+ Classifier: Topic :: Security
28
+ Classifier: Topic :: Software Development :: Quality Assurance
29
+ Classifier: Topic :: Software Development :: Testing
30
+ Classifier: Typing :: Typed
31
+ Requires-Python: >=3.11
32
+ Description-Content-Type: text/markdown
33
+ License-File: LICENSE
34
+ Requires-Dist: typer>=0.12.3
35
+ Requires-Dist: pydantic>=2.7.0
36
+ Requires-Dist: networkx>=3.3
37
+ Requires-Dist: PyYAML>=6.0
38
+ Provides-Extra: llm
39
+ Requires-Dist: anthropic>=0.40.0; extra == "llm"
40
+ Requires-Dist: openai>=1.60.0; extra == "llm"
41
+ Provides-Extra: all
42
+ Requires-Dist: attackmap[llm]; extra == "all"
43
+ Requires-Dist: attackmap-analyzer-python==0.2.0; extra == "all"
44
+ Requires-Dist: attackmap-analyzer-rust==0.2.0; extra == "all"
45
+ Requires-Dist: attackmap-analyzer-go==0.2.0; extra == "all"
46
+ Requires-Dist: attackmap-analyzer-java-spring==0.2.0; extra == "all"
47
+ Requires-Dist: attackmap-analyzer-dotnet==0.2.0; extra == "all"
48
+ Requires-Dist: attackmap-analyzer-terraform==0.2.1; extra == "all"
49
+ Requires-Dist: attackmap-analyzer-c==0.2.0; extra == "all"
50
+ Requires-Dist: attackmap-analyzer-cpp==0.2.0; extra == "all"
51
+ Requires-Dist: attackmap-analyzer-swift==0.2.0; extra == "all"
52
+ Requires-Dist: attackmap-analyzer-node-service==0.3.0; extra == "all"
53
+ Requires-Dist: attackmap-analyzer-atproto==0.2.0; extra == "all"
54
+ Requires-Dist: attackmap-analyzer-php-web==0.2.0; extra == "all"
55
+ Requires-Dist: attackmap-analyzer-php-laminas==0.2.0; extra == "all"
56
+ Requires-Dist: attackmap-analyzer-omeka-s==0.2.0; extra == "all"
57
+ Requires-Dist: attackmap-analyzer-iac==0.2.0; extra == "all"
58
+ Provides-Extra: dev
59
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
60
+ Requires-Dist: build>=1.2.0; extra == "dev"
61
+ Requires-Dist: jsonschema>=4.0; extra == "dev"
62
+ Requires-Dist: pysigma>=2.0; extra == "dev"
63
+ Requires-Dist: ruff>=0.6; extra == "dev"
64
+ Dynamic: license-file
65
+
66
+ # AttackMap
67
+
68
+ > [!IMPORTANT]
69
+ > **Active development, slow pace.** AttackMap is under active development, but
70
+ > progress may be slow until more contributors or co-maintainers join. Help is
71
+ > very welcome with the core engine, an analyzer, the macOS app, or the docs —
72
+ > see [CONTRIBUTING.md](https://github.com/mlaify/AttackMap/blob/main/CONTRIBUTING.md) or open an issue on
73
+ > [mlaify/AttackMap](https://github.com/mlaify/AttackMap/issues) to say hello.
74
+ > Security reports are still welcome at [security@mlaify.io](mailto:security@mlaify.io).
75
+
76
+ **Local-first, AI-assisted defensive security analysis for codebases.** AttackMap
77
+ reads a repository (or a whole fleet of them), reconstructs the attack surface —
78
+ routes, data stores, external calls, auth signals, trust boundaries — traces
79
+ request-to-sink data flow, and produces an evidence-grounded, prioritized security
80
+ review. It finds the cross-cutting weaknesses single-file scanners miss, and never
81
+ sends your code anywhere.
82
+
83
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/mlaify/AttackMap/blob/main/LICENSE)
84
+ [![Python: 3.11+](https://img.shields.io/badge/Python-3.11%2B-blue.svg)](https://www.python.org/)
85
+
86
+ > **Status: beta (v0.6.4).** Core engine + 15 analyzer plugins, published on
87
+ > [PyPI](https://pypi.org/project/attackmap/) and validated on real codebases. AttackMap is heuristic by
88
+ > design — findings are confidence-tiered evidence, not proof. Roadmap to 1.0:
89
+ > [issue #209](https://github.com/mlaify/AttackMap/issues/209).
90
+
91
+ Full documentation: **[docs.mlaify.io](https://docs.mlaify.io)** ·
92
+ architecture & internals: **[wiki](https://github.com/mlaify/AttackMap/wiki)**.
93
+
94
+ ### The macOS app
95
+
96
+ Prefer a GUI? A native macOS front-end drives this CLI and renders every result
97
+ view. Install it with Homebrew (this also installs the CLI), or build it from
98
+ source at [mlaify/AttackMap-mac](https://github.com/mlaify/AttackMap-mac):
99
+
100
+ ```bash
101
+ brew install --cask mlaify/tap/attackmap-app
102
+ ```
103
+
104
+ | Overview | Exploitability |
105
+ |---|---|
106
+ | [![AttackMap macOS app — overview](https://raw.githubusercontent.com/mlaify/AttackMap/main/docs/screenshots/04-overview.png)](https://docs.mlaify.io/gui/) | [![AttackMap macOS app — exploitability](https://raw.githubusercontent.com/mlaify/AttackMap/main/docs/screenshots/06-exploitability-ranked.png)](https://docs.mlaify.io/gui/) |
107
+
108
+ *Scanning OWASP Juice Shop. Walkthrough in the [macOS app docs](https://docs.mlaify.io/gui/); source at [mlaify/AttackMap-mac](https://github.com/mlaify/AttackMap-mac).*
109
+
110
+ ## Quickstart
111
+
112
+ ```bash
113
+ brew install mlaify/tap/attackmap # Homebrew: CLI + all 15 analyzer plugins
114
+ # or, from PyPI: uv tool install "attackmap[all]" (or pipx install "attackmap[all]")
115
+ attackmap analyze /path/to/repo # heuristic review → reports/
116
+ attackmap analyze /path/to/repo --llm # + AI-narrated review (Claude or OpenAI)
117
+ attackmap analyze ./svc-a ./svc-b ./gw # cross-repo / fleet scan
118
+ ```
119
+
120
+ Read `reports/defensive-review.md` for the heuristic review, and (with `--llm`)
121
+ `reports/defensive-review-llm.md` for the AI narration. `--llm` resolves auth
122
+ automatically (`ANTHROPIC_API_KEY`, or your Claude/`codex` CLI subscription); add
123
+ `--llm-provider openai` for OpenAI/Codex.
124
+
125
+ Other install paths: `pip install git+https://github.com/mlaify/AttackMap.git` (core
126
+ only), or the `[llm]` extra for AI narration. Not sure
127
+ which analyzer plugins a repo needs? `attackmap suggest ./repo`. Full install and
128
+ CI setup: **[install guide](https://docs.mlaify.io/install/)**.
129
+
130
+ ## What it finds
131
+
132
+ - **Attack-surface recon** — routes, data stores, external calls, auth signals,
133
+ secrets, frameworks, entrypoints; every signal carries a `file:line` citation,
134
+ evidence snippet, and confidence.
135
+ - **Data-flow / injection taint** (Python, JS/TS, Go, PHP, Java, C#, Ruby) —
136
+ SQL, shell, eval/code and expression (SpEL/OGNL) injection, JNDI, SSRF, SSTI,
137
+ NoSQL, LDAP, XPath, path traversal and zip-slip, deserialization, open
138
+ redirect, header and regex injection — traced source → variable → sink
139
+ inside each handler, with flow-bound sanitizers, SARIF `codeFlows`, a
140
+ plugin-extensible sink registry (`taint_sinks.yaml`), and a deterministic
141
+ 0–100 **exploitability score**.
142
+ - **Novel vuln classes** — prototype pollution, mass assignment, JWT, XXE, ReDoS,
143
+ insecure upload, GraphQL exposure; **BOLA/IDOR** authorization; insecure-crypto
144
+ & web-hardening; anomaly/outlier + signature-free **invariant mining**.
145
+ - **Dependency CVEs** (`--cve`) — SBOM + lockfile resolution against OSV.dev,
146
+ folded into the exploitability score.
147
+ - **Unknown-bug discovery** — `--hunt --verify` (a multi-pass, majority-vote LLM
148
+ jury), verifier-gated `--recall`, and **cross-repo / fleet** analysis:
149
+ confused-deputy flows, trust-assumption gaps, and the sibling service that omits
150
+ a control its peers enforce.
151
+ - **Workflow** — `--triage`, `--remediate`, finding suppression, baseline diff
152
+ gating, SARIF + Mermaid/Graphviz output, and a GitHub **Action + PR bot**.
153
+
154
+ Each run writes Markdown, JSON (`attackmap-report.json`), **SARIF 2.1.0**, and
155
+ diagram artifacts; fleet runs add `fleet-summary.{md,json}` + `fleet-graph.md`.
156
+ See the [outputs reference](https://docs.mlaify.io/scanning/) for the full list.
157
+
158
+ ## Supported ecosystems
159
+
160
+ Fourteen analyzer plugins (each installable on its own; `[all]` installs every one):
161
+ **Python**, **JavaScript/TypeScript** (Node services), **Go**, **Java/Kotlin**
162
+ (Spring), **C#** (ASP.NET Core), **Rust**, **PHP** (web / Laminas / Omeka-S),
163
+ **C**, **C++**, **Terraform**, **IaC** (Docker / compose / GitHub Actions),
164
+ **AT Protocol**. Specialty and experimental analyzers are opt-in: when one
165
+ matches a repo, `analyze` says so, and `-m <name>` runs it (`attackmap modules`
166
+ shows which). Details: [analyzers reference](https://docs.mlaify.io/analyzers/).
167
+ Write your own against the documented [analyzer SDK](https://github.com/mlaify/AttackMap/blob/main/docs/external-analyzers.md).
168
+
169
+ ## CLI cheat-sheet
170
+
171
+ ```bash
172
+ attackmap analyze <path> # review a repo (--output dir, --format all|json|markdown)
173
+ attackmap analyze repoA repoB … # multi-repo fleet scan
174
+ attackmap analyze <path> --cve # dependency CVEs (OSV.dev)
175
+ attackmap analyze <path> --recall # widen taint discovery (extra reach = SPECULATIVE)
176
+ attackmap analyze <path> --llm # AI narrative (--llm-provider claude|openai)
177
+ attackmap analyze <path> --hunt --verify # LLM exploit-hypothesis hunt, adjudicated vs. source
178
+ attackmap analyze <path> --triage # cluster/dedupe/rank existing findings
179
+ attackmap analyze <path> --remediate # review-first fix suggestions
180
+ attackmap analyze <path> --baseline prev.json --fail-on-new-high # PR gate
181
+ attackmap suggest ./repo # recommend analyzer plugins · attackmap modules # list installed
182
+ ```
183
+
184
+ Verify-jury knobs (`--verify-votes` / `--hunt-lenses` / `--hunt-rounds` /
185
+ `--hunt-budget`) and suppression (`--no-suppress` / `--suppress-file`) are
186
+ documented in the [CLI reference](https://docs.mlaify.io/cli/).
187
+
188
+ ## What AttackMap is *not*
189
+
190
+ - **Not a runtime detector.** It's static; its detection hints are leads for your
191
+ SIEM team, not deployable rules.
192
+ - **Not a replacement for dedicated SCA.** `--cve` folds CVE signal into an
193
+ architecture-aware narrative; Trivy/Grype/Dependabot go deeper on resolution.
194
+ - **Not a sound taint engine.** Taint follows local assignments *within* one
195
+ function (intra-procedural def-use) and a call-graph-refined import walk
196
+ *across* files; it does not follow a value into a helper it is passed to, and
197
+ branches are not distinguished. Precision over recall; findings are evidence,
198
+ not proof. See the limits in `src/attackmap/taint_flow.py`.
199
+ - **Not exhaustive.** Heuristic by design, with explicit confidence tiers and
200
+ guardrails for stale signals.
201
+
202
+ ## Documentation & links
203
+
204
+ - **[docs.mlaify.io](https://docs.mlaify.io)** — user guide, install, CLI,
205
+ analyzers, SDK
206
+ - **[Wiki](https://github.com/mlaify/AttackMap/wiki)** — architecture, roadmap,
207
+ contributor references
208
+ - **[Roadmap / Bug Triage / Kanban](https://github.com/orgs/mlaify/projects)** —
209
+ project boards · [Road to 1.0](https://github.com/mlaify/AttackMap/issues/209)
210
+ - [`CHANGELOG.md`](https://github.com/mlaify/AttackMap/blob/main/CHANGELOG.md) · [`CONTRIBUTING.md`](https://github.com/mlaify/AttackMap/blob/main/CONTRIBUTING.md) ·
211
+ [`SECURITY.md`](https://github.com/mlaify/AttackMap/blob/main/SECURITY.md) · [`VISION.md`](https://github.com/mlaify/AttackMap/blob/main/VISION.md)
212
+
213
+ ## Special thanks
214
+
215
+ AttackMap is built by its contributors.
216
+
217
+ <a href="https://github.com/mlaify/AttackMap/graphs/contributors"><img src="https://contrib.rocks/image?repo=mlaify/AttackMap" alt="AttackMap contributors" /></a>
218
+
219
+ ## Contributing
220
+
221
+ Issues and PRs welcome — see [CONTRIBUTING.md](https://github.com/mlaify/AttackMap/blob/main/CONTRIBUTING.md). By contributing
222
+ you agree your contributions will be MIT-licensed.
223
+
224
+ ## License
225
+
226
+ [MIT](https://github.com/mlaify/AttackMap/blob/main/LICENSE). Copyright (c) 2026 Matthew Davis and AttackMap Contributors.
@@ -0,0 +1,91 @@
1
+ attackmap/__init__.py,sha256=RoHwsPKvbkve8wJBXWeWUAWRD1e6oOE5TKvmEkhkOmg,48
2
+ attackmap/analyzer.py,sha256=7aSkHvm39NB9jg9RUiAd4XYwZkJyO9QU4mmdCVabxUQ,20112
3
+ attackmap/analyzer_contracts.py,sha256=_FOsCEOj_eMj__CC7mxwSYCBQ0AcehXTAiRjM8HYkzg,6992
4
+ attackmap/analyzers.py,sha256=7iyaIdFXtPHf-kub5YjdP8Ss95CrFozS-Dkp2ARyycM,39956
5
+ attackmap/anomalies.py,sha256=lHoU6ZgBEKuiA9SfXCYveMo_BOm6A-uSlxffI2UioSA,25677
6
+ attackmap/asset_model.py,sha256=Wbok0X8lwlhY8rRqtxag_JaOhB8lwPQL4hswjgLpbD0,9292
7
+ attackmap/attack_taxonomy.py,sha256=i-Rhebo-6j1rnfUOt7hgtpS4h5fdQYdVeiMFvpbyEwY,5117
8
+ attackmap/auth_protocol.py,sha256=qRSu8vhUvIvR1S0Mv6n1B3-Lu82ILOk6TCTa4TXG4xE,32860
9
+ attackmap/authz.py,sha256=i5mXy0RIKCa8lux1isQitYuUcPODbPhh_G2u9sjvP6o,78211
10
+ attackmap/bench.py,sha256=5EVfJd6Bp3eN3peV7ytYzTY_HEhrkw2T9Gpus6GwUJA,17379
11
+ attackmap/cli.py,sha256=DKdU65ZR_DKM7MMu4mTPUbSlNE55IQnjDn1Zh1sjo28,63955
12
+ attackmap/config_scanner.py,sha256=ZQnClLnCm5xq3TSr5PXWFPhMm-WUrg2oh6bML5qXenA,15550
13
+ attackmap/context_pack.py,sha256=TcCa9zsdDxVLk95rPvDSeSqezGwXcFMMCQEbX9qkIR4,3229
14
+ attackmap/contracts.py,sha256=UXMipxKPtZj75MSFxIBXT1ZezyYjVFaYxlHKd8XaL2M,8614
15
+ attackmap/control_model.py,sha256=TLedoovmlFoV3Fk2HzIu726iVqPqIHPnDvmtfEM2Dxg,11606
16
+ attackmap/crossrepo.py,sha256=dV6DLZB17NaslqlNtc8l7xD6PGSp0ieGCCjj2IuJpgw,14094
17
+ attackmap/crypto.py,sha256=3kz5tu5-i445dPYtY_dAr9U7EVStwzUtGA-NNOpfzf0,8982
18
+ attackmap/cve.py,sha256=9XbUoZUx-_hF41ofY42s2ws_3RxG5M0VE_EvvUegJxY,26651
19
+ attackmap/defensive_review.py,sha256=sFgCvvoprk2hfqLiE4QaAeMASXYPgsl37vhct1NSG88,27274
20
+ attackmap/detection_opportunities.py,sha256=eTaDl0nRWSptT5xN6OamrluHEeU5NsmgxOLnfDkVEqw,53826
21
+ attackmap/diagrams.py,sha256=rOlFYPY5HhVRWeQCVo2WyPYYx-wUtaXuEffM3K4TKlQ,8927
22
+ attackmap/diff.py,sha256=nWDnyReVLCZNdVLeRnmMXv6UUUnZx45pTB8qPpc55Z0,11691
23
+ attackmap/exploitability.py,sha256=tutkIXBq3FJpXfUxnX1Dy8ofyNyQVau5bbntz_y_8_k,18527
24
+ attackmap/fingerprint.py,sha256=1_h9Xn6xxVV9Sit4Vh6iyU1uu2bdNVqndqFoUpiJaxA,3937
25
+ attackmap/fleet.py,sha256=0BWHMJJAPnSiQ3t2spUBJvjB9DjVBZ94l_Ne3-atQ_4,14613
26
+ attackmap/gitref.py,sha256=sSM8_Frcm3bgDjjPRIXXN4hhS71b5tOQGXQSic-XerM,4932
27
+ attackmap/graph.py,sha256=_xjhcOXSMwPVtkRyWLjYQA-msw3_L1f32TNYw4bVSsg,836
28
+ attackmap/handler_auth.py,sha256=DpdMfBX459KKgWdJAnfBaGdDpw_vbjyO6Oz6HX9Tkic,30378
29
+ attackmap/handler_span.py,sha256=eJ1kpnFzPc14wfhZukS8FnP2WXvY96HvR8UzSyWy7x0,2610
30
+ attackmap/hunt_harness.py,sha256=KM9NKdyiy2Vw2W4kWheP46sjtJOv_QJEOEK-Eh-F_zQ,20183
31
+ attackmap/insights.py,sha256=SzVrqOLV3BStDmXKBAPEQWimGZ4_FOMBpdbJ3utUkrM,29185
32
+ attackmap/llm_review.py,sha256=rkgIGrDyZjq6Kc7Hxg-IFmg5OAQ5IgMrcFj39_q1Txc,29948
33
+ attackmap/lockfiles.py,sha256=h1u3eK_Qz7ooEYOe626PvaVtvZIn5iuOoPfXz-hzG8U,20730
34
+ attackmap/mass_assignment.py,sha256=vOu7I_zlw5sPTsK6ilvxOCxiQoNNMiHe8yun3RCslrE,22588
35
+ attackmap/md.py,sha256=PEG2rbNjNtAO4eY9cpRkU2a80PxsixJknnLDs8aHm1U,7714
36
+ attackmap/merge.py,sha256=msQqRHxtDlRP7j4HqWPzbOIDvEKY293vtzl-AIciwmY,14575
37
+ attackmap/models.py,sha256=0sM-fTSDX07aocVcOQyGUdBbH0jXQluMpNSvKX2WGAI,49233
38
+ attackmap/plugins_lock.py,sha256=k___dPEVX4kk7WntV0Uf1v3oM2R5Q_FpbSewUOhdObY,3785
39
+ attackmap/popular_packages.py,sha256=SLarQ6Euy5ap6Tgj0FrsiyWXn1PA2R8PyLp0prdZahU,14569
40
+ attackmap/progress.py,sha256=M_lspUmcuhlTV7Imy7p1ebhB9Zn5tL0wcKB0_-82PJU,9491
41
+ attackmap/recon_models.py,sha256=AOJurJDjH6i6tgRXP4cxydBAL0wJ6fQMABNsqsfEgLI,591
42
+ attackmap/recon_to_analysis.py,sha256=7eQgXE0a-Kr27mRvHvwU6aV9sYMAWnojuEPxL9-nNuw,5075
43
+ attackmap/redact.py,sha256=abY_KbnZo8ttJtLfIJnusU8o5Wc08Ss4u68gR8pmCvU,10954
44
+ attackmap/report.py,sha256=iGV75g_tWFQce5oQDLKfMu3M6mRFlc-AQibHZo6O4l4,18491
45
+ attackmap/review_eval.py,sha256=yO5VE892NnadesyHFCsdtkZ1aZhs-LAKovZLMRgoZoQ,14552
46
+ attackmap/review_json.py,sha256=5gP60JobR34Tw2ojFQ00g5YAWPozYdLmhvLcNYB6bhs,13478
47
+ attackmap/review_prompts.py,sha256=5oXjlkfOHfcdpMTYsgKAxqQqsVe5Scr2iOAeVPR-GrA,38640
48
+ attackmap/route_auth_fusion.py,sha256=jMotiXuiGJrkGr6eNjTcQHmXE5e4tO5o8pIz1utG7B4,21274
49
+ attackmap/safe_fs.py,sha256=5gCGgJCqj18HXVSiEeZlyHEi59M8d1hpeaS7U6AolJY,11879
50
+ attackmap/sarif.py,sha256=tTQxmpywA2vWYauVQI04tgCxFBC-PAK6wQncT0FXM6c,14723
51
+ attackmap/sbom.py,sha256=FyxwcVk7ABJjF5oejGt4V7TZMrwN-vcQ283YphthvGM,14686
52
+ attackmap/scanner.py,sha256=SSU8QDG1c7lzV2MIHGu8JBIUt57XXN4-H74mJZwnz5s,63815
53
+ attackmap/secrets_history.py,sha256=qE-MPmkFE0m6OPkmdWrmyvqXJSWeese2KXCNrsyFsRA,6604
54
+ attackmap/security_overlay.py,sha256=XdRjaL8dgHps2ctmd1jEPDAbeArtxsLa2_NjLqG1yok,2136
55
+ attackmap/srcpaths.py,sha256=FSBo2u87dsw5NhKBuXma5uAkkEy_oX07rI4ol9cpZnE,12216
56
+ attackmap/suggest.py,sha256=MJ4GDQvlfe9VRgW4Y1SDHH0MYrzk93O88_88LXX9p3Y,13348
57
+ attackmap/supply_chain.py,sha256=8cwFvzq9XeHkL2DTczsC9DPuJFObUESMGaucZzEQYDA,32205
58
+ attackmap/suppress.py,sha256=ZcQECu14NeCEC2nklKF7ghKqdyPuc_oJkVu20FQMJTw,29869
59
+ attackmap/taint.py,sha256=_140fYovApndHs_FlHBEvVlN_rGR0DIF-E5JGZHn6S8,68185
60
+ attackmap/taint_flow.py,sha256=ZKiVLkh2qWpzUnlUZOvWiTTkhNat7jY7_A5mip1SiLM,60729
61
+ attackmap/taint_sinks.py,sha256=J0fQpMda1QyvaC0t5yEf2EMZN6lWuyQDhkbBHS-OhRA,15950
62
+ attackmap/taint_sinks.yaml,sha256=bDarNVJi9lYK771HB51kZjHrUveA9d9SI6FE9uekG6A,22571
63
+ attackmap/taint_sources.py,sha256=Tgg8e3cv7gpK47XHs8d1gqNxOHBypn4WLSsAeB1uEVo,19502
64
+ attackmap/taxonomy.py,sha256=gUTgxGtbDDrzouWWS8bgYPuykGsTrMxUvI76JP7RKEM,31736
65
+ attackmap/threat_model.py,sha256=GwNllOaONQxPVDBZ5h0ACQJmKpKxXUVO6qGLa5_ePjA,174386
66
+ attackmap/topology.py,sha256=Bw0kHG8cPV-8_IVN3LPIDw9nUSwFxuS8Nf6XqeD_DW4,11594
67
+ attackmap/triage.py,sha256=KYsVYzlNfe1w2ZBuriPbG3lHOZl_oKhx6qzhww4BhRA,5897
68
+ attackmap/weaknesses.py,sha256=OLaG3KyIRPvOaPqC1h3jDvbK1hRqU8nJaeqhUkM120k,14748
69
+ attackmap/webhardening.py,sha256=ZYUY3RAPg9W4OlLPGbUM6pdg2mrkuCBfwzUjf04a4p0,20387
70
+ attackmap/webhook_verification.py,sha256=NzkHwrMfk3ur9to3QLQsDRttiQaehVrIykze8HZwUBs,51724
71
+ attackmap/workflow_scanner.py,sha256=QZAHoL6IpVatIKJjCgCbBM1i6vPP2MlZLmKT9pLf7I0,40242
72
+ attackmap/detections/__init__.py,sha256=daa2e6FDhm5AyZfM-zO9Z0-6LN4K0ol-4wihpEr3Etc,19256
73
+ attackmap/detections/bola.yml,sha256=LQEBHH7bSLjHEyMvdixb4Onlb3IAKaKPjC4fwx2bSgA,2389
74
+ attackmap/detections/cloud.yml,sha256=EX91biru0UNeJV04n18G3jWX5vDS_8NzALVtyMeu1O8,31442
75
+ attackmap/detections/injection.yml,sha256=M4HBbB2taHyFzwBvL7sWj8AtuzyVM76hndb8LRe4Qd0,7675
76
+ attackmap/detections/secrets.yml,sha256=goSVW7EQKUXw2btI-r66oN5MGgRGmz58Rp6k9UXV8EI,1964
77
+ attackmap/detections/sigma.py,sha256=j6H0dinp8A1VYLTehdkj4MA-T-6E9ee_80oUqePOn6Q,20769
78
+ attackmap/detections/ssrf.yml,sha256=Siu_4eIae66Weyynu2Im2YfvuNTC6x6JQHVcGdAQJW4,4465
79
+ attackmap/detections/weakness.yml,sha256=WtXFJe8lyrTRqcT5ZL8v6qZlhccJi_Da7PWhDiXEGGA,2784
80
+ attackmap/detections/webhook.yml,sha256=Mu64zGcuJ_U2Lj9N9X9ZBiWqw5sMBtzjDEj1jTTPMRA,1815
81
+ attackmap/detections/workflow.yml,sha256=V9ZNTr0cA_FgyJjVOMHIVTfYpBzR9eT9rkVZGciDaOg,5785
82
+ attackmap/sdk/__init__.py,sha256=01vTjYRKIGttkVQiWk2w5Nng5qg2e8fZBQlAz5LJJ9o,12106
83
+ attackmap/sdk/contracts.py,sha256=M0Eu9Skv4u4Sk1N_UxraPnz0dzpmSZ1PQZqG6iK60kg,352
84
+ attackmap/sdk/fs.py,sha256=YVmWvtxBD7rH7vTLUVXOg8M2rrdziZ_HUeFfwumtShI,5942
85
+ attackmap/sdk/models.py,sha256=qA7Lhg8Vx5X0TJIVl8XQQRKKcOvOF_pROY8UtY2R6hE,1203
86
+ attackmap-0.6.4.dist-info/licenses/LICENSE,sha256=vtPQVGUyxq359j0JmD3_eJaXyHmaHyjzaMOtaLwJc88,1097
87
+ attackmap-0.6.4.dist-info/METADATA,sha256=qr4jvYgGoDq51CKxoYMG94l1KmYvBHWRWGIh6V9rHWw,12455
88
+ attackmap-0.6.4.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
89
+ attackmap-0.6.4.dist-info/entry_points.txt,sha256=Tupx9uE-Kg5wKY3pJCbIn-BT_iqHIQV2Iuhk-A0MvEs,48
90
+ attackmap-0.6.4.dist-info/top_level.txt,sha256=vtBiQh5-74BM1EN6EAORE8i_rNzybwtwX9VkBJQPBVE,10
91
+ attackmap-0.6.4.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.2.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ attackmap = attackmap.cli:app
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Matthew Davis and AttackMap Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ attackmap