| # External Knowledge & Tool Integrations |
|
|
| Rhodawk now embeds three external knowledge / capability sources directly |
| into the runtime so the orchestrator and analysis engines can use them |
| offline, without round-tripping to the public web on every audit. |
|
|
| | Vendor | Lives at | Python module | What it gives Rhodawk | |
| |-------------------------------------------------------------|-----------------------------------|---------------------------|------------------------| |
| | [`jo-inc/camofox-browser`](https://github.com/jo-inc/camofox-browser) | `/opt/camofox` (npm) + node server | `camofox_client.py` | Anti-detection Firefox-fork browsing for live web tasks (cve_intel, repo_harvester, knowledge_rag, red_team_fuzzer, bounty_gateway) | |
| | [`0xmaximus/Galaxy-Bugbounty-Checklist`](https://github.com/0xmaximus/Galaxy-Bugbounty-Checklist) | `vendor/galaxy_bugbounty/` | `bugbounty_checklist.py` | 24-category bug bounty methodology + payload corpora keyed by CWE / vuln tag | |
| | [`zomasec/client-side-bugs-resources`](https://github.com/zomasec/client-side-bugs-resources) | `vendor/clientside_bugs/` | `clientside_resources.py` | Curated client-side (XSS / CSP / postMessage / prototype-pollution / CORS) reading list β section-indexed | |
| | [`PrathamLearnsToCode/paper2code`](https://github.com/PrathamLearnsToCode/paper2code) | `vendor/paper2code/` | `paper2code_engine.py` | arXiv-paper β citation-anchored, ambiguity-audited Python scaffold (uses the existing OpenClaude gRPC bridge for LLM calls) | |
|
|
| ## Where they plug into the existing engines |
|
|
| ### `bugbounty_checklist.py` |
| |
| * **`vuln_classifier.py`** β after CWE classification, call |
| `bugbounty_checklist.match_for_tag(cwe)` to surface the canonical |
| Galaxy checklist for that class (24 categories covered: XSS, SSRF, |
| SQLi, OAuth, CSRF bypass, IDOR, file upload, request smuggling, |
| rate-limit bypass, password reset, IIS, Log4Shell, WordPress, β¦). |
| * **`red_team_fuzzer.py` / `harness_factory.py`** β call |
| `payloads_for("sql_injection")` to seed the SQLi corpus from |
| Galaxy's `SQL.txt`, or `payloads_for("xss")` to harvest inline |
| XSS payload snippets from the README. |
| * **`hermes_orchestrator.py`** β call |
| `hints_for_finding(cwe=..., label=..., description=...)` to inject |
| hand-curated tradecraft bullets into the triage prompt. |
|
|
| ### `clientside_resources.py` |
| |
| * **`knowledge_rag.py`** β `seed_urls()` returns a flat unique list of |
| the upstream README's links, perfect as initial input to the |
| embedding-store ingest loop. |
| * **`red_team_fuzzer.py`** β `for_tag("postmessage")` returns the |
| reference write-ups to attach to a generated client-side PoC. |
| * **`vuln_classifier.py`** β `search("dompurify")` etc. surfaces |
| reference research write-ups when classifying client-side findings. |
| |
| ### `paper2code_engine.py` |
| |
| * **`hermes_orchestrator.py`** Night-Hunt mode β when a new primitive |
| surfaces in the wild, call `paper2code_engine.run(arxiv_url)` to |
| scaffold a reproduction under `/data/paper2code/{slug}/` with an |
| ambiguity audit. The orchestrator can then hand the scaffold to |
| the OpenClaude gRPC bridge for completion. |
| * **`training_store.py`** β register the scaffold's |
| `REPRODUCTION_NOTES.md` + `ambiguity_audit.json` as a training |
| example for the data flywheel. |
| * **`knowledge_rag.py`** β the ambiguity audit (per-dimension |
| SPECIFIED / PARTIALLY_SPECIFIED / UNSPECIFIED classification) is |
| embedded alongside the paper text so the RAG store learns *what is |
| uncertain*, not just *what was written*. |
| |
| ## Quick programmatic checks |
| |
| ```python |
| import bugbounty_checklist as bb |
| print(bb.stats()) # {'categories': 24, 'total_payloads': ...} |
| print(bb.list_categories()) |
| print(bb.payloads_for('sqli', limit=5)) |
| print(bb.hints_for_finding(cwe='CWE-918')) |
| |
| import clientside_resources as cs |
| print(cs.stats()) # sections + resource count |
| print(cs.for_tag('prototype_pollution')) |
|
|
| import paper2code_engine as p2c |
| print(p2c.stats()) # vendor + LLM availability |
| result = p2c.run('https://arxiv.org/abs/1706.03762') # heuristic mode if no LLM |
| print(result.to_dict()) |
| ``` |
| |
| ## Vendoring policy |
| |
| * All three repos are mirrored under `vendor/` so the runtime is |
| self-contained and reproducible β no surprise upstream changes can |
| break a Rhodawk scan in the middle of an engagement. |
| * Re-vendoring is a manual operation (just `git clone` the upstream |
| and copy the relevant directories) β version pinning is implicit |
| through git history. |
| * Source licenses (MIT for camofox-browser and clientside-bugs, |
| MIT for paper2code, MIT for Galaxy-Bugbounty-Checklist) are |
| preserved alongside the vendored content. |
| |