From 865611d552daad5d5d9ba6343acaf20df6c12f1a Mon Sep 17 00:00:00 2001 From: CyberSecurityUP Date: Fri, 10 Jul 2026 17:35:11 -0300 Subject: [PATCH] =?UTF-8?q?recon:=20time-box=20tool=20installs=20and=20ski?= =?UTF-8?q?p=20on=20failure=20=E2=80=94=20never=20stall=20on=20a=20downloa?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A missing or un-downloadable recon tool must never block the run. Both the recon intensity directive and the general tool doctrine now instruct agents to: - wrap every install in `timeout 90 || echo skip` and run non-interactively - try each tool install at most once; on failure/no-package/no-network/hang, skip immediately and fall back to an installed alternative or curl/nc/dig/python3 - never wait on, retry, or block the whole recon for a single tool download --- neurosploit-rs/crates/harness/src/pipeline.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/neurosploit-rs/crates/harness/src/pipeline.rs b/neurosploit-rs/crates/harness/src/pipeline.rs index d2a7926..fe00ffc 100644 --- a/neurosploit-rs/crates/harness/src/pipeline.rs +++ b/neurosploit-rs/crates/harness/src/pipeline.rs @@ -89,10 +89,13 @@ fn tool_doctrine(mcp_on: bool) -> String { Keep bursts small and non-disruptive — this is a control check, not a DoS.\n\ - TOOL DOWNLOAD (authorized): when a public PoC or scanner is needed you MAY `git clone` a specific PoC/exploit \ repo or download a tool (`git clone`, `wget`, `pip install`, `go install`, `cargo install`) — use pinned, \ - reputable sources; review before running; never run destructive payloads.\n\ + reputable sources; review before running; never run destructive payloads. ALWAYS time-box downloads/installs \ + (`timeout 90 || echo skip`) and try each at most once — if it fails, isn't packaged, has no network \ + or hangs, SKIP it and fall back to curl/nc/dig/python3. A missing or un-downloadable tool is NEVER a reason \ + to stall: move on with what you have.\n\ - {browser}\n\ - {ua}{proxy}{pocs}\ - Use only what is installed; degrade gracefully. Never run destructive or DoS actions.\n\n", + Use only what is installed; degrade gracefully. Never block on a single tool install. Never run destructive or DoS actions.\n\n", ua = ua_line(), proxy = proxy_line(), pocs = pocs_line(), @@ -1300,8 +1303,15 @@ fn recon_intensity_directive(level: usize) -> String { }; format!( "RECON INTENSITY: {label} — {rounds}. {extra}\n\ - INSTALL WHAT YOU NEED (authorized): if a recon tool is missing, install it before falling back — \ - `apt-get install -y `, `pip install `, `go install @latest`, `npm i -g `, or `cargo install `. \ + INSTALL WHAT YOU NEED (authorized), BUT NEVER GET STUCK ON AN INSTALL: if a recon tool is missing, \ + try to install it — but TIME-BOX every install and move on if it fails. Always wrap installs like \ + `timeout 90 apt-get install -y || timeout 90 go install @latest || echo 'skip '` and \ + run them non-interactively (`DEBIAN_FRONTEND=noninteractive`, `-y`, no prompts). \ + Try a given tool install AT MOST ONCE — if it errors, is not packaged, needs a different OS, \ + has no network, or hangs past the timeout, SKIP IT immediately and use an already-installed \ + alternative or plain `curl`/`nc`/`dig`/`openssl`/`python3`. Do not wait on, retry, or block the \ + whole recon for any single tool download — a missing tool is never a reason to stall. \ + Options — `pip install `, `go install @latest`, `npm i -g `, or `cargo install ` (all time-boxed). \ Recommended arsenal: subfinder/amass/assetfinder (subdomains), httpx/httprobe (probe live), \ gau/waybackurls/katana/hakrawler/gospider (URL harvest & crawl), gf (pattern-filter urls), \ arjun/paramspider (params), ffuf/feroxbuster/dirsearch (content discovery), nuclei (targeted templates), \