Rules / CFG069
CFG069 HTTP-transport MCP server without log redaction
Severity: warn
OWASP: LLM02:2026 – Sensitive Information Disclosure
OWASP MCP: MCP01:2025 – Token Mismanagement & Secret Exposure — provisional (MCP Top 10 v0.1)
CVE: CVE-2026-42282, CVE-2026-41495
What cfgaudit checks
HTTP-transport MCP servers (e.g. n8n-mcp) log full request bodies — including Authorization: Bearer … tokens, API keys, and OAuth credentials — at default log levels. If a config enables HTTP transport without redaction or a quiet log level, those credentials land in log files (CVE-2026-42282 / CVE-2026-41495).
cfgaudit flags an MCP server (in settings.json mcpServers or .mcp.json) when its env:
- enables HTTP transport —
MCP_HTTP_ENABLED/HTTP_ENABLED/USE_HTTP/HTTP_SERVER/ENABLE_HTTPtruthy, orMCP_TRANSPORT/TRANSPORT/SERVER_MODE/MCP_MODEset to anhttp(s) value, and - does not constrain request logging — no
LOG_REDACT/REDACT_LOGS/DISABLE_REQUEST_LOGGINGtruthy, noMCP_LOG_SENSITIVE/REQUEST_LOGGING/LOG_REQUESTSset false, and no quietLOG_LEVEL/MCP_LOG_LEVEL(warn/error/silent/…).
These env names are heuristic (they vary by server), so the rule is warn: a prompt to verify logging is safe, not a hard error.
Trigger example
{
"mcpServers": {
"n8n": { "command": "npx", "args": ["-y", "n8n-mcp"], "env": { "MCP_TRANSPORT": "http" } }
}
}
→ warn (HTTP transport, no log-redaction / quiet level).
Safe alternative
Constrain request logging, or use stdio transport:
{ "env": { "MCP_TRANSPORT": "http", "LOG_LEVEL": "warn", "LOG_REDACT": "true" } }
{ "env": { "MCP_TRANSPORT": "stdio" } }
References
- CVE-2026-42282, CVE-2026-41495
- CFG050 / CFG068 — related MCP credential-exposure rules
- OWASP Top 10 for MCP — MCP01 (Token Mismanagement & Secret Exposure)
Documentation for cfgaudit 1.18.1. Source of this page · Rule implementation