Skip to content

Commit ec5a300

Browse files
committed
feat(orchestration): Remove SQLMap from the agent codeflow
1 parent 9d67c3f commit ec5a300

4 files changed

Lines changed: 2 additions & 9 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ SecNode API helps security engineers and backend teams run repeatable API risk a
1212

1313
- Ingests local or remote OpenAPI/Swagger schema files
1414
- **Phase 1c Deep Recon:** Automatically analyzes body schemas and uses AI to plan `arjun` parameter discovery.
15-
- **Tool Orchestration:** Integrates `nuclei`, `sqlmap`, and `dirsearch` directly into the agent reasoning.
15+
- **Tool Orchestration:** Integrates `nuclei` and `dirsearch` directly into the agent reasoning.
1616
- **AI-Driven Logic:** Uses an LLM to understand API behavior and generate adversarial test cases.
1717
- **Autonomous Agent:** Supports iterative replanning with request budgets and finding deduplication.
1818
- **Reporting:** Produces both human-readable Markdown and machine-readable JSON findings.
@@ -101,7 +101,7 @@ secnodeapi --target http://api.local/spec --mode agent --request-budget 500 --ma
101101

102102
## Docker Support
103103

104-
The easiest way to run SecNode with all integrated tools (`nuclei`, `sqlmap`, `arjun`, `dirsearch`) is via Docker.
104+
The easiest way to run SecNode with all integrated tools (`nuclei`, `arjun`, `dirsearch`) is via Docker.
105105

106106
### Build
107107
```bash

src/secnodeapi/services/tool_orchestrator.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
from ..tools.runners.arjun_runner import ArjunRunner
2626
from ..tools.runners.dirsearch_runner import DirsearchRunner
2727
from ..tools.runners.nuclei_runner import NucleiRunner
28-
from ..tools.runners.sqlmap_runner import SqlmapRunner
2928
from ..vulnerability_models import APIEndpoint, Finding, SchemaStructure
3029

3130
logger = structlog.get_logger(__name__)
@@ -64,7 +63,6 @@ async def _ask_ai_for_tool_plan(api_structure: SchemaStructure, base_url: str) -
6463
" - dirsearch: Directory and endpoint brute-forcing. Run on the base URL.\n"
6564
" - arjun: HTTP parameter discovery. Run on each endpoint URL.\n"
6665
" - nuclei: Vulnerability scanning with templates. Run on the base URL.\n"
67-
" - sqlmap: SQL injection verification. Run only on endpoints with query parameters or forms.\n\n"
6866
"Return ONLY valid JSON: "
6967
'{"plan": [{"tool": "tool_name", "target_url": "https://...", "reason": "why", "priority": "high|medium|low"}]}\n'
7068
"Limit total invocations to 8 maximum. Prioritize dirsearch and nuclei first."
@@ -110,8 +108,6 @@ async def _run_single_tool(plan: ToolPlan) -> tuple[ToolPlan, ToolRun]:
110108
run = await runner.run_with_output(invocation_id, plan.target_url)
111109
elif plan.tool == "nuclei" and isinstance(runner, NucleiRunner):
112110
run = await runner.run_api_scan(invocation_id, plan.target_url)
113-
elif plan.tool == "sqlmap" and isinstance(runner, SqlmapRunner):
114-
run = await runner.run_verification(invocation_id, plan.target_url)
115111
else:
116112
run = await runner.run(invocation_id, plan.target_url, [])
117113

src/secnodeapi/tools/parsers/normalized.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,6 @@ def _parse_generic(run: ToolRun) -> List[ParsedFinding]:
290290
"dirsearch": _parse_dirsearch,
291291
"nuclei": _parse_nuclei,
292292
"ffuf": _parse_ffuf,
293-
"sqlmap": _parse_sqlmap,
294293
"zap-cli": _parse_zap,
295294
"zap": _parse_zap,
296295
"kr": _parse_kiterunner,

src/secnodeapi/tools/runners/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,13 @@
55
from .ffuf_runner import FfufRunner
66
from .kiterunner_runner import KiterunnerRunner
77
from .nuclei_runner import NucleiRunner
8-
from .sqlmap_runner import SqlmapRunner
98
from .zap_runner import ZapRunner
109

1110
RUNNERS = {
1211
"arjun": ArjunRunner(),
1312
"dirsearch": DirsearchRunner(),
1413
"ffuf": FfufRunner(),
1514
"nuclei": NucleiRunner(),
16-
"sqlmap": SqlmapRunner(),
1715
"zap": ZapRunner(),
1816
"kiterunner": KiterunnerRunner(),
1917
}

0 commit comments

Comments
 (0)