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.
- attackmap/__init__.py +2 -0
- attackmap/analyzer.py +449 -0
- attackmap/analyzer_contracts.py +194 -0
- attackmap/analyzers.py +1003 -0
- attackmap/anomalies.py +612 -0
- attackmap/asset_model.py +245 -0
- attackmap/attack_taxonomy.py +133 -0
- attackmap/auth_protocol.py +702 -0
- attackmap/authz.py +1695 -0
- attackmap/bench.py +467 -0
- attackmap/cli.py +1474 -0
- attackmap/config_scanner.py +389 -0
- attackmap/context_pack.py +82 -0
- attackmap/contracts.py +201 -0
- attackmap/control_model.py +280 -0
- attackmap/crossrepo.py +356 -0
- attackmap/crypto.py +240 -0
- attackmap/cve.py +717 -0
- attackmap/defensive_review.py +647 -0
- attackmap/detection_opportunities.py +1221 -0
- attackmap/detections/__init__.py +491 -0
- attackmap/detections/bola.yml +57 -0
- attackmap/detections/cloud.yml +609 -0
- attackmap/detections/injection.yml +167 -0
- attackmap/detections/secrets.yml +48 -0
- attackmap/detections/sigma.py +511 -0
- attackmap/detections/ssrf.yml +98 -0
- attackmap/detections/weakness.yml +62 -0
- attackmap/detections/webhook.yml +45 -0
- attackmap/detections/workflow.yml +121 -0
- attackmap/diagrams.py +237 -0
- attackmap/diff.py +301 -0
- attackmap/exploitability.py +493 -0
- attackmap/fingerprint.py +91 -0
- attackmap/fleet.py +370 -0
- attackmap/gitref.py +129 -0
- attackmap/graph.py +26 -0
- attackmap/handler_auth.py +639 -0
- attackmap/handler_span.py +62 -0
- attackmap/hunt_harness.py +505 -0
- attackmap/insights.py +701 -0
- attackmap/llm_review.py +846 -0
- attackmap/lockfiles.py +521 -0
- attackmap/mass_assignment.py +543 -0
- attackmap/md.py +175 -0
- attackmap/merge.py +333 -0
- attackmap/models.py +1284 -0
- attackmap/plugins_lock.py +114 -0
- attackmap/popular_packages.py +193 -0
- attackmap/progress.py +258 -0
- attackmap/recon_models.py +31 -0
- attackmap/recon_to_analysis.py +149 -0
- attackmap/redact.py +220 -0
- attackmap/report.py +424 -0
- attackmap/review_eval.py +335 -0
- attackmap/review_json.py +308 -0
- attackmap/review_prompts.py +796 -0
- attackmap/route_auth_fusion.py +474 -0
- attackmap/safe_fs.py +285 -0
- attackmap/sarif.py +373 -0
- attackmap/sbom.py +418 -0
- attackmap/scanner.py +1379 -0
- attackmap/sdk/__init__.py +278 -0
- attackmap/sdk/contracts.py +17 -0
- attackmap/sdk/fs.py +156 -0
- attackmap/sdk/models.py +59 -0
- attackmap/secrets_history.py +161 -0
- attackmap/security_overlay.py +71 -0
- attackmap/srcpaths.py +301 -0
- attackmap/suggest.py +394 -0
- attackmap/supply_chain.py +688 -0
- attackmap/suppress.py +740 -0
- attackmap/taint.py +1540 -0
- attackmap/taint_flow.py +1419 -0
- attackmap/taint_sinks.py +431 -0
- attackmap/taint_sinks.yaml +308 -0
- attackmap/taint_sources.py +396 -0
- attackmap/taxonomy.py +465 -0
- attackmap/threat_model.py +3441 -0
- attackmap/topology.py +316 -0
- attackmap/triage.py +151 -0
- attackmap/weaknesses.py +365 -0
- attackmap/webhardening.py +479 -0
- attackmap/webhook_verification.py +1067 -0
- attackmap/workflow_scanner.py +964 -0
- attackmap-0.6.4.dist-info/METADATA +226 -0
- attackmap-0.6.4.dist-info/RECORD +91 -0
- attackmap-0.6.4.dist-info/WHEEL +5 -0
- attackmap-0.6.4.dist-info/entry_points.txt +2 -0
- attackmap-0.6.4.dist-info/licenses/LICENSE +21 -0
- 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
|
+
[](https://github.com/mlaify/AttackMap/blob/main/LICENSE)
|
|
84
|
+
[](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
|
+
| [](https://docs.mlaify.io/gui/) | [](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,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
|