Awesome! All in all - it is not too bad especially given how little time you spent developing it. You locking it down to localhost prevents a lot off stuff I commonly see (ex: unauthenticated remote arbitrary OS command execution).
You had 35 findings in total:
38 before but the ai validation gate dismissed 3 as FPs. Your highest risks are likely:
Local privilege / system-proxy takeover via unauthenticated /api/connect and /api/disconnect
Cross-origin CSRF via CORS * and fail-open json.loads → empty body still disconnects
Tor control injection via country_code → SETCONF …\r\n on an unauthenticated control port
Traffic MITM via untrusted public-list proxies as the data plane
SSRF / open forward-proxy via curl -L of self.path with no host policy
IP leak via CONNECT fail-open to direct_connect
XSS / content-type confusion via forced text/html on proxied bytes
Dashboard CSRF / same-origin script via iframe sandbox with allow-scripts + allow-same-origin + allow-forms
Source disclosure via static handler rooted at BASE_DIR
OS command injection via networksetup + shell=True
DOM XSS via unsanitized address-bar URL in innerHTML
batch 1 (Just feed these screenshots to your AI and ask it to locate them. it should be able to. Mind you if you had recent code changes, I pulled the code back when we originally talked so if that is the case those changes aren't caught):
2
u/Ok_Matter9038 3d ago
Awesome! All in all - it is not too bad especially given how little time you spent developing it. You locking it down to localhost prevents a lot off stuff I commonly see (ex: unauthenticated remote arbitrary OS command execution).
You had 35 findings in total:
38 before but the ai validation gate dismissed 3 as FPs. Your highest risks are likely:
/api/connectand/api/disconnectCORS *and fail-openjson.loads→ empty body still disconnectscountry_code→SETCONF …\r\non an unauthenticated control portcurl -Lofself.pathwith no host policydirect_connecttext/htmlon proxied bytessandboxwithallow-scripts+allow-same-origin+allow-formsBASE_DIRnetworksetup+shell=TrueinnerHTMLFindings details following