T09 · Insecure Skill Coding Practices
- Location
scripts/cliproxy_scanner.py:159- Finding
Caller-Controlled Allowlist Permits Exfiltration of Codex Bearer Tokens
- Content
View full analysis
None: parsed = urlparse(probe_url) if parsed.scheme != "https": raise SystemExit("Security check failed: --probe-url must use https") host = (parsed.hostname or "").lower() allowed = _normalize_hosts_csv(allowed_hosts_csv) if not host: raise SystemExit("Security check failed: --probe-url host is empty") if host not in allowed: if unsafe_allow: return raise SystemExit( f"Security check failed: probe host '{host}' not in allowlist {sorted(allowed)}. " "Use --allow-unsafe-probe-host only if you fully trust this host." ) ``` ```python p.add_argument("--allowed-probe-hosts", default=DEFAULT_ALLOWED_PROBE_HOSTS, help="Comma-separated allowlist for probe host, default: chatgpt.com") p.add_argument("--allow-unsafe-probe-host", action="store_true", help="Allow probe host outside allowlist (DANGEROUS)") ``` ### Technical Analysis The management API replaces the `$TOKEN$` placeholder in the probe Authorization header with the real Codex bearer token and sends it to `probe_url`. This network transmission is necessary for the declare ...[truncated 2051 chars]- Remediation
View remediation
