{"id":"CVE-2026-61730","kind":"vulnerability","aliases":["CVE-2026-61730"],"related":[],"title":"SOCFortress CoPilot: unauthenticated report mount leaks cloud credentials and findings","description":"SOCFortress CoPilot focuses on providing a single pane of glass for all your security operations needs. In affected deployments, the unauthenticated `/scoutsuite-report` `StaticFiles` mount in `backend/copilot.py` exposes the `scoutsuite-report` directory even though normal /api routes require JWT authentication. Generated HTML reports and `scoutsuite-results/scoutsuite_results_<name>.js` files disclose AWS, Azure and GCP IAM principals, resource inventories, misconfigurations and findings. Report names derive from caller-selected names with predictable defaults. During an admin- or analyst-initiated GCP scan, `backend/app/integrations/scoutsuite/routes/scoutsuite.py` saves the uploaded Google service-account JSON key into that same web-served directory. In `backend/app/integrations/scoutsuite/services/scoutsuite.py`, `generate_gcp_report_background` removes the key only after the scan finishes. Any anonymous client that can reach the host and request the file path can therefore retrieve the private key during the scan and use the service account's cloud permissions, as well as read retained cloud-security reports. Credential isolation is released in version 0.1.77; a release fully remediating the report-disclosure component has not been established.","summary":"SOCFortress CoPilot serves its ScoutSuite report directory without authentication, so anyone who can reach the host can read cloud security reports. During a GCP scan it also saves the uploaded Google service-account key into that directory, letting an anonymous visitor retrieve the key and use the account's cloud permissions.","severity":"critical","cvss":9.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["aws","azure","gcp","package","scoutsuite","self-hosted","socfortress-copilot"],"not_affected_if":["auth-proxy-blocks-path","managed-hosting","no-scoutsuite-scans"],"how_to_check":"- Check whether the deployed CoPilot version is below `0.1.77`.\n- Request `/scoutsuite-report/` on the host without credentials and see whether the files are listed or served.\n- Look for `scoutsuite-results/` and `scoutsuite-report` directories in the web-served path.","fix":"- Move CoPilot to version `0.1.77` or later, which the source states releases credential isolation.\n- The source says no release fully remediates the report disclosure yet; the report exposure is unknown to be fixed.","status":"open","published_at":"2026-10-30T15:16:53+00:00","first_seen_at":"2026-10-30T15:31:11+00:00","triaged_at":"2026-10-30T15:33:06+00:00","updated_at":"2026-10-30T15:33:06+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-30T15:33:06Z","model":"claude-haiku-5-5","output":{"fix":"- Move CoPilot to version `0.1.77` or later, which the source states releases credential isolation.\n- The source says no release fully remediates the report disclosure yet; the report exposure is unknown to be fixed.","reach":"internet","title":"SOCFortress CoPilot: unauthenticated report mount leaks cloud credentials and findings","impact":"high","summary":"SOCFortress CoPilot serves its ScoutSuite report directory without authentication, so anyone who can reach the host can read cloud security reports. During a GCP scan it also saves the uploaded Google service-account key into that directory, letting an anonymous visitor retrieve the key and use the account's cloud permissions.","audience":"businesses","category":"package","nicknames":[],"who_cares":["self-hosted","socfortress-copilot","gcp","aws","azure","scoutsuite"],"confidence":0.8,"fix_status":"available","needs_auth":"no","worst_case":"anonymous attacker retrieves GCP service-account key and cloud reports","analyst_note":"Confirm the fixed version and whether 0.1.77 fully closes the report-directory exposure; check the NVD page https://nvd.nist.gov/vuln/detail/CVE-2026-61730 and the project's release notes.","how_to_check":"- Check whether the deployed CoPilot version is below `0.1.77`.\n- Request `/scoutsuite-report/` on the host without credentials and see whether the files are listed or served.\n- Look for `scoutsuite-results/` and `scoutsuite-report` directories in the web-served path.","plain_action":"","needs_analyst":true,"not_affected_if":["managed-hosting","no-scoutsuite-scans","auth-proxy-blocks-path"],"who_is_affected":"Teams running self-hosted SOCFortress CoPilot with ScoutSuite GCP, AWS or Azure scans enabled, where the host is reachable by anonymous clients. Deployments behind network controls that block the /scoutsuite-report path reduce exposure, and teams that never run ScoutSuite scans are not affected by the key-saving path.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"critical"},"cost_usd":0.000825,"input_tokens":4447,"output_tokens":761,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-61730':13A,16A '/api':115C '/scoutsuite-report':101C '/scoutsuite_results_':127C '0.1.77':238C 'account':61B,76B,169C,219C 'admin':155C 'affect':97C 'also':54B 'analyst':158C 'analyst-initi':157C 'anonym':68B,194C 'anyon':38B 'authent':36B,119C 'aw':17B,131C 'azur':18B,132C 'backend/app/integrations/scoutsuite/routes/scoutsuite.py':162C 'backend/app/integrations/scoutsuite/services/scoutsuite.py':180C 'backend/copilot.py':105C 'background':184C 'caller':147C 'caller-select':146C 'client':195C 'cloud':7A,46B,78B,221C,229C 'cloud-secur':228C 'compon':247C 'copilot':2A,27B,29B,81C 'credenti':8A,232C 'cve':11A,14A 'default':152C 'deploy':98C 'deriv':144C 'directori':34B,65B,111C,178C 'disclos':130C 'disclosur':246C 'establish':251C 'even':112C 'expos':106C 'file':129C,204C 'find':10A,141C 'finish':192C 'focus':82C 'fulli':241C 'gcp':19B,51B,134C,160C,182C 'generat':120C,181C 'glass':89C 'googl':58B,166C 'host':24B,43B,200C 'html':121C 'iam':135C 'initi':159C 'inventori':138C 'isol':233C 'js':128C 'json':170C 'jwt':118C 'key':62B,72B,171C,187C,211C 'leak':6A 'let':66B 'misconfigur':139C 'mount':5A,103C 'name':143C,149C 'need':95C 'normal':114C 'oper':94C 'packag':20B 'pane':87C 'path':205C 'permiss':79B,222C 'predict':151C 'princip':136C 'privat':210C 'provid':84C 'reach':41B,198C 'read':45B,226C 'releas':235C,240C 'remedi':242C 'remov':185C 'report':4A,33B,48B,110C,122C,142C,183C,231C,245C 'report-disclosur':244C 'request':202C 'requir':117C 'resourc':137C 'result':126C 'retain':227C 'retriev':70B,208C 'rout':116C 'save':55B,163C 'scan':52B,161C,191C,214C 'scoutsuit':21B,32B,109C,125C 'scoutsuite-report':108C 'scoutsuite-result':124C 'secur':47B,93C,230C 'select':148C 'self':23B 'self-host':22B 'serv':30B,177C 'servic':60B,168C,218C 'service-account':59B,167C 'singl':86C 'socfortress':1A,26B,28B,80C 'socfortress-copilot':25B 'staticfil':102C 'therefor':207C 'though':113C 'unauthent':3A,100C 'upload':57B,165C 'use':74B,216C 'version':237C 'visitor':69B 'web':176C 'web-serv':175C 'well':224C 'without':35B","nicknames":[],"mitigations":[],"who_affected":"Teams running self-hosted SOCFortress CoPilot with ScoutSuite GCP, AWS or Azure scans enabled, where the host is reachable by anonymous clients. Deployments behind network controls that block the /scoutsuite-report path reduce exposure, and teams that never run ScoutSuite scans are not affected by the key-saving path.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T15:16:53+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-61730","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61730","severity":null,"published_at":"2026-10-30T15:16:53+00:00","modified_at":"2026-10-30T15:16:53+00:00","first_seen_at":"2026-10-30T15:31:11+00:00","fetched_at":"2026-10-30T15:31:11+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}