BudgetScan

Run #4

swesweep-fasthttp · completed

Model
qwen/qwen3.8-27b
Triage model
qwen/qwen3.8-27b
Provider
koscompute
Started
2026-10-17 19:50:32 UTC
Completed
2026-10-18 00:48:07 UTC
Files
78 / 78
  scanned
78
  triage: completed
86
Findings
179
Tokens in / out
4,874,278 / 1,901,214
Cost
$7.75 (estimate:openrouter-list)
Throughput
85.7 tok/s

LLM calls

StageOutcomeCallsTokens inTokens outAvg service sBackoff s
arbiterok52 427,78113,602 6.970.0
contextok78 247,049609,369 145.100.0
scanempty2 14,77624,492 213.5128.3
scanok78 370,599999,097 250.47130.8
scantimeout29 00 600.14220.4
triageok430 3,814,073254,654 13.6973.6
triagetimeout24 00 600.116.2

Findings

SeverityTitleFileTriage
medium Stale TransferEncoding and RequestURI state when http.Request is reused ConvertRequest fasthttpadaptor/request.go
INVALID
medium Duplicate HTTP headers are collapsed instead of preserved ConvertRequest fasthttpadaptor/request.go
VALID
medium Special header cases are matched before canonicalization and are case-sensitive ConvertRequest fasthttpadaptor/request.go
INVALID
medium Protocol desync: bufio.Reader discards tunneled data after CONNECT 200 httpProxyDial fasthttpproxy/dialer.go
INVALID
medium Unbounded hang on CONNECT when ConnectTimeout is zero (default) httpProxyDial fasthttpproxy/dialer.go
INVALID
medium Nil fasthttp.DialFunc returned on malformed proxy environment, causing process panic FasthttpProxyHTTPDialerTimeout fasthttpproxy/proxy_env.go
INVALID
medium Unbounded writer blocking when the receiving end fills the channel and stops reading Write fasthttputil/pipeconns.go
INVALID
medium Write timeout discards pooled buffer and latches write deadline to closed Write fasthttputil/pipeconns.go
INVALID
medium Information disclosure: raw header bytes in error messages headerErrorMsg header.go
INVALID
medium Partial header state corruption after trailer parse error tryReadTrailer header.go
INVALID
medium Silent acceptance of duplicate Content-Length with divergent values parseHeaders (ResponseHeader) header.go
INVALID
medium LF-only header line separation creates parser differential readLine headerscanner.go
VALID
medium readBodyIdentity allows unbounded body growth when maxBodySize <= 0 readBodyIdentity http.go
INVALID
medium ContinueReadBodyStream silently returns oversized body stream on ErrBodyTooLarge ContinueReadBodyStream http.go
INVALID
medium Unvalidated IPv6 zone allows arbitrary bytes validateIPv6Literal ipv6.go
INVALID
medium Lazy init panics when Clients is empty even if AddClient populated cs LBClient.init lbclient.go
INVALID
medium Nil request or response forwarded unchecked to client and health callback lbClient.DoDeadline lbclient.go
INVALID
medium IPv6 and non-TCP remote addresses collapse to the same counter key 0 getConnIP4 peripconn.go
VALID
medium Pooled wrapper can be closed after reuse, closing a different connection perIPConn.Close / perIPTLSConn.Close peripconn.go
INVALID
medium Goroutine and memory leak on client disconnect during long profile or trace PprofHandler pprofhandler/pprof.go
INVALID
medium Stale child signals and PID reuse can corrupt child process tracking Prefork.prefork prefork/prefork.go
INVALID
medium Index out of range panic in FormFile on empty file header slice RequestCtx.FormFile server.go
INVALID
medium Unbounded multipart form memory allocation via default FormValue/MultipartForm (DoS) RequestCtx.FormValue / RequestCtx.MultipartForm server.go
INVALID
medium Permanent worker goroutines and channel per NewFunc instance NewFunc stackless/func.go
INVALID
medium Hidden worker can be terminated by f panic or runtime.Goexit funcWorker stackless/func.go
INVALID
medium Nil destination writer causes panic when flushing buffered output (*writer).do stackless/writer.go
INVALID
medium HTTP status-line control-character injection formatStatusLine status.go
INVALID
medium Nil StreamWriter accepted without validation NewStreamReader stream.go
INVALID
medium Premature end-of-stream is reported as normal EOF for fixed Content-Length bodies requestStream.Read streaming.go
INVALID
medium Unbounded DNS cache growth allows memory exhaustion getTCPAddrs / dial tcpdialer.go
INVALID
medium No concurrency limit on DNS resolution — unlimited concurrent resolver queries dial / getTCPAddrs tcpdialer.go
INVALID
medium File descriptor leak when fcntl fails after socket creation newSocketCloexec tcplisten/socket_zos_s390x.go
INVALID
medium Nil Config receiver can panic in NewListener (*Config).NewListener tcplisten/tcplisten.go
INVALID
medium ReleaseTimer panics on nil timer ReleaseTimer timer.go
INVALID
medium Quadratic-time denial of service in path normalization normalizePath uri.go
VALID
medium Reset may invoke malicious or invalid io.Closer values Reset() userdata.go
INVALID
low Algorithmic-complexity DoS in Args.Del/DelBytes (O(n^2) delAllArgsStable) delAllArgsStable / Del / DelBytes args.go
–
low Possible index-out-of-range panic in b2s for empty byte slices AddBytesKV / SetBytesKV / DelBytes / PeekMultiBytes (via b2s) args.go
–
low WriteBrotliLevel returns uncompressed input length instead of compressed byte count for non-blocking writers WriteBrotliLevel brotli.go
–
low ParseUfloat checks negative value before parse error ParseUfloat bytesconv.go
–
low Panic on negative int in writeHexInt / AppendUint (DoS if reachable) writeHexInt, AppendUint bytesconv.go
–
low AddMissingPort fails to append default port for unbracketed IPv6 literals AddMissingPort client.go
–
low WriteGzipLevel / WriteDeflateLevel return input length instead of compressed byte count for non-blocking writers WriteGzipLevel / WriteDeflateLevel compress.go
–
low Ignored error on fallback compression writer creation can yield nil writer acquireRealGzipWriter / acquireRealDeflateWriter compress.go
–
low Max-Age integer wrap can alter cookie lifetime Cookie.ParseBytes cookie.go
–
low Parsed SameSite and Partitioned attributes bypass safety invariants Cookie.ParseBytes cookie.go
–
low Quote-unaware cookie scanner truncates values cookieScanner.next/nextRaw cookie.go
–
low Unbounded remote response body can exhaust memory main examples/client/client.go
–
low Attacker-controlled response body printed directly to output sendGetRequest examples/client/client.go
–
low Empty JSON body treated as successful parse sendPostRequest examples/client/client.go
–
← Previous Page 2 of 4 · 179 total Next →
Arguments
{
  "paths": [
    "/home/ubuntu/sw/swesweep-fasthttp"
  ],
  "files_from": null,
  "re_triage": null,
  "report": null,
  "triage_levels": null,
  "skip_existing": false,
  "model": "qwen/qwen3.8-27b",
  "backend": "koscompute",
  "api_url": null,
  "openrouter_provider": null,
  "parallel": 4,
  "scan_parallel": null,
  "triage_parallel": null,
  "max_connections": null,
  "timeout": 600,
  "thinking": "medium",
  "thinking_scan": null,
  "thinking_triage": null,
  "retries": 20000,
  "max_chars": 350000,
  "extensions": ".go",
  "ignore_dirs": null,
  "skip_tests": true,
  "output_dir": "/home/ubuntu/nano-analyzer-results/swesweep-fasthttp",
  "triage_threshold": "medium",
  "triage_rounds": 5,
  "min_confidence": 0.0,
  "project": null,
  "repo_dir": null,
  "verbose_triage": false,
  "debug_info": null,
  "threat_model": "library",
  "custom_threat_model": null,
  "custom_threat_model_file": null,
  "threat_model_autodetect": true,
  "budget_usd": null,
  "deadline": null,
  "prices_file": null,
  "db": "/home/ubuntu/nano-analyzer-results/swesweep-fasthttp/scan.db",
  "resume": true,
  "summary_sections": {}
}
Threat model
{
  "profile": "library",
  "fingerprint": "00ff1b1a7b11",
  "sources": [
    {
      "kind": "profile",
      "label": "library",
      "chars": 1526,
      "truncated": false
    }
  ],
  "effective": [
    {
      "kind": "profile",
      "label": "library",
      "chars": 1526,
      "truncated": false
    }
  ],
  "warnings": [],
  "contradiction": null,
  "scan_text": "[Profile: library (Reusable library / SDK)]\nAttacker: Code that calls the public API, and above all the data it passes through: parsers, decoders, deserializers and protocol handlers receive adversarial payloads that the host application obtained from untrusted sources.\nEntry points / trust boundary: Public (exported) functions, methods, constructors and callbacks, and every buffer, string, file or stream handed to them. Internal and private helpers are reachable only through the public surface.\nAssets and impact: Memory safety and integrity of the host process (out-of-bounds access, use-after-free, type confusion); correct behaviour on malformed input; resource bounds (unbounded allocation, algorithmic complexity, infinite loops on crafted input); concurrency invariants of components documented as thread-safe.",
  "triage_text": "[Profile: library (Reusable library / SDK)]\nAttacker: Code that calls the public API, and above all the data it passes through: parsers, decoders, deserializers and protocol handlers receive adversarial payloads that the host application obtained from untrusted sources.\nEntry points / trust boundary: Public (exported) functions, methods, constructors and callbacks, and every buffer, string, file or stream handed to them. Internal and private helpers are reachable only through the public surface.\nAssets and impact: Memory safety and integrity of the host process (out-of-bounds access, use-after-free, type confusion); correct behaviour on malformed input; resource bounds (unbounded allocation, algorithmic complexity, infinite loops on crafted input); concurrency invariants of components documented as thread-safe.\nNot a vulnerability under this model: Missing parameter validation in non-public (internal, private, static) functions that are not directly reachable from outside when the public boundary already enforces the invariant; misuse that violates a documented precondition of the public API.\nVerdict rules: Trust invariants: the public API must validate all inputs. Non-public methods may assume invariants verified at the public boundary; do not report missing parameter validation in them as a security vulnerability unless the code is directly reachable from outside or a public path can deliver input that violates the invariant. A crash, memory corruption or unbounded resource use reachable through the public API with a crafted payload is VALID."
}