{
  "executive_summary": {
    "badge": "Caution",
    "security_score": 80.0,
    "view": "composite",
    "scanner_badges": {
      "agentshield": "unavailable",
      "cisco-skill-scanner": "Unsafe",
      "agent-audit-kit": "Unsafe",
      "bearer": "Verified",
      "nerlo-behavioral": "Verified",
      "nerlo-install-instruction": "Verified",
      "trivy": "Verified",
      "osv-scanner": "unavailable"
    },
    "finding_counts": {
      "critical": 0,
      "high": 21,
      "medium": 134,
      "low": 7
    },
    "recommendation": "imagesorcery-mcp may be integrated with compensating controls: review the 21 high-severity findings below, restrict granted permissions to the minimum the manifest declares, and subscribe to monitoring alerts for score changes."
  },
  "source_provenance": {
    "repository_url": "https://github.com/sunriseapps/imagesorcery-mcp",
    "commit_sha_scanned": null,
    "license": "MIT",
    "maintainer": "titulus",
    "name": "imagesorcery-mcp",
    "version": "0.12.0"
  },
  "per_scanner_detail": [
    {
      "scanner_name": "agentshield",
      "scanner_version": "1.4.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 1.530200662004063,
      "status": "not_applicable",
      "metadata": {
        "source": "npm",
        "source_url": "https://www.npmjs.com/package/ecc-agentshield",
        "install_command": "npm install -g ecc-agentshield@1.4.0",
        "scans_performed": []
      },
      "display_score": null,
      "display_badge": "unavailable"
    },
    {
      "scanner_name": "cisco-skill-scanner",
      "scanner_version": "2.0.11",
      "score": 0.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/repo/CONFIG.md",
          "line_number": null,
          "rule_identifier": "TOOL_ABUSE_UNDECLARED_NETWORK",
          "title": "Undeclared network usage",
          "description": "Skill code uses network libraries but doesn't declare network requirement",
          "remediation": "Declare network usage in compatibility field or remove network calls"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "low",
          "category": "social_engineering",
          "file_path": "/repo/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "data_exfiltration",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/download_clip.py",
          "line_number": 29,
          "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
          "title": "Outbound network request primitives that can transmit data externally",
          "description": "Pattern detected: requests.get(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "data_exfiltration",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/download_models.py",
          "line_number": 33,
          "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
          "title": "Outbound network request primitives that can transmit data externally",
          "description": "Pattern detected: requests.get(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 56,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 57,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 169,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
          "line_number": 43,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
          "line_number": 339,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/repo/src/imagesorcery_mcp/README.md",
          "line_number": null,
          "rule_identifier": "TOOL_ABUSE_UNDECLARED_NETWORK",
          "title": "Undeclared network usage",
          "description": "Skill code uses network libraries but doesn't declare network requirement",
          "remediation": "Declare network usage in compatibility field or remove network calls"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "low",
          "category": "social_engineering",
          "file_path": "/repo/src/imagesorcery_mcp/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/src/imagesorcery_mcp/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_INVALID_NAME",
          "title": "Skill name does not follow agent skills naming rules",
          "description": "Skill name 'imagesorcery_mcp' is invalid. Agent skills require lowercase letters, numbers, and hyphens only, with a maximum length of 64 characters.",
          "remediation": "Rename the skill to match `[a-z0-9-]{1,64}` (e.g., 'pdf-processing')"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/src/imagesorcery_mcp/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "data_exfiltration",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/download_clip.py",
          "line_number": 29,
          "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
          "title": "Outbound network request primitives that can transmit data externally",
          "description": "Pattern detected: requests.get(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "data_exfiltration",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/download_models.py",
          "line_number": 33,
          "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
          "title": "Outbound network request primitives that can transmit data externally",
          "description": "Pattern detected: requests.get(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 56,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 57,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 169,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
          "line_number": 43,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
          "line_number": 339,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/repo/src/imagesorcery_mcp/scripts/README.md",
          "line_number": null,
          "rule_identifier": "TOOL_ABUSE_UNDECLARED_NETWORK",
          "title": "Undeclared network usage",
          "description": "Skill code uses network libraries but doesn't declare network requirement",
          "remediation": "Declare network usage in compatibility field or remove network calls"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "low",
          "category": "social_engineering",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "data_exfiltration",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/download_clip.py",
          "line_number": 29,
          "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
          "title": "Outbound network request primitives that can transmit data externally",
          "description": "Pattern detected: requests.get(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "medium",
          "category": "data_exfiltration",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/download_models.py",
          "line_number": 33,
          "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
          "title": "Outbound network request primitives that can transmit data externally",
          "description": "Pattern detected: requests.get(",
          "remediation": "Ensure network operations are necessary and document allowed destinations"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 56,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 57,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 169,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "low",
          "category": "social_engineering",
          "file_path": "/repo/src/imagesorcery_mcp/resources/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/src/imagesorcery_mcp/resources/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "low",
          "category": "social_engineering",
          "file_path": "/repo/src/imagesorcery_mcp/tools/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/src/imagesorcery_mcp/tools/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
          "line_number": 43,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "high",
          "category": "unauthorized_tool_use",
          "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
          "line_number": 339,
          "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
          "title": "Package installation from untrusted remote sources",
          "description": "Pattern detected: pip install git+https://",
          "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "low",
          "category": "social_engineering",
          "file_path": "/repo/src/imagesorcery_mcp/prompts/SKILL.md",
          "line_number": null,
          "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
          "title": "Vague skill description",
          "description": "Skill description is too short (16 chars). Provide detailed explanation.",
          "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
        },
        {
          "tool_name": "cisco-skill-scanner",
          "severity": "informational",
          "category": "policy_violation",
          "file_path": "/repo/src/imagesorcery_mcp/prompts/SKILL.md",
          "line_number": null,
          "rule_identifier": "MANIFEST_MISSING_LICENSE",
          "title": "Skill does not specify a license",
          "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
          "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
        }
      ],
      "execution_duration_seconds": 86.94252936499834,
      "status": "complete",
      "metadata": {
        "source": "pypi",
        "source_url": "https://pypi.org/project/cisco-ai-skill-scanner/2.0.11/",
        "report_type": "cisco-skill-sast",
        "analyzers_used": [
          "bytecode",
          "pipeline",
          "static_analyzer"
        ],
        "skills_scanned": [
          "repo",
          "imagesorcery_mcp",
          "scripts",
          "resources",
          "tools",
          "prompts"
        ],
        "install_command": "pip install --require-hashes -r docker/scanner-base/cisco-skill-scanner/requirements.txt",
        "severity_counts": {
          "low": 6,
          "high": 15,
          "medium": 9,
          "critical": 0,
          "informational": 7
        }
      },
      "display_score": 0.0,
      "display_badge": "Unsafe"
    },
    {
      "scanner_name": "agent-audit-kit",
      "scanner_version": "0.3.26",
      "score": 0.0,
      "scanner_badge": "Unsafe",
      "findings": [
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "secret-exposure",
          "file_path": "src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 110,
          "rule_identifier": "AAK-SECRET-004",
          "title": "Generic high-entropy secret",
          "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
          "remediation": "Move to environment variables or secrets manager."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "secret-exposure",
          "file_path": "src/imagesorcery_mcp/scripts/post_install.py",
          "line_number": 111,
          "rule_identifier": "AAK-SECRET-004",
          "title": "Generic high-entropy secret",
          "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
          "remediation": "Move to environment variables or secrets manager."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "secret-exposure",
          "file_path": "src/imagesorcery_mcp/scripts/populate_telemetry_keys.py",
          "line_number": 43,
          "rule_identifier": "AAK-SECRET-004",
          "title": "Generic high-entropy secret",
          "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
          "remediation": "Move to environment variables or secrets manager."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "secret-exposure",
          "file_path": "src/imagesorcery_mcp/scripts/populate_telemetry_keys.py",
          "line_number": 49,
          "rule_identifier": "AAK-SECRET-004",
          "title": "Generic high-entropy secret",
          "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
          "remediation": "Move to environment variables or secrets manager."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "supply-chain",
          "file_path": "pyproject.toml",
          "line_number": null,
          "rule_identifier": "AAK-SUPPLY-004",
          "title": "No lockfile present",
          "description": "A package manifest exists but no lockfile was found. Without lockfiles, dependency versions float and can be silently updated.",
          "remediation": "Generate and commit lockfile."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "low",
          "category": "supply-chain",
          "file_path": "SECURITY.md",
          "line_number": null,
          "rule_identifier": "AAK-SEC-MD-001",
          "title": "MCP server repo missing SECURITY.md or security_contact",
          "description": "A repository whose name or pyproject keywords declare it as an MCP server ships without a top-level SECURITY.md AND without a `security_contact` entry in marketplace.json / pyproject.toml / package.json. Anthropic's April 2026 SECURITY.md guidance makes this the baseline expectation so researchers have a channel.",
          "remediation": "Add SECURITY.md at the repo root with a disclosure email and response SLA; OR add `security_contact` to the project manifest."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "mcp-config",
          "file_path": "src/imagesorcery_mcp/server.py",
          "line_number": 135,
          "rule_identifier": "AAK-MCP-018",
          "title": "Missing rate limiting on MCP endpoint",
          "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
          "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/config.py",
          "line_number": 84,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/config.py",
          "line_number": 128,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/config.py",
          "line_number": 162,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/overlay.py",
          "line_number": 44,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/overlay.py",
          "line_number": 118,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/overlay.py",
          "line_number": 48,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/overlay.py",
          "line_number": 51,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/overlay.py",
          "line_number": 58,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/overlay.py",
          "line_number": 65,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/overlay.py",
          "line_number": 68,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/detect.py",
          "line_number": 83,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/detect.py",
          "line_number": 77,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/detect.py",
          "line_number": 81,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/detect.py",
          "line_number": 88,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/detect.py",
          "line_number": 95,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/detect.py",
          "line_number": 102,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/detect.py",
          "line_number": 141,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/detect.py",
          "line_number": 198,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
          "line_number": 50,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
          "line_number": 64,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
          "line_number": 92,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
          "line_number": 54,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
          "line_number": 61,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
          "line_number": 67,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/crop.py",
          "line_number": 50,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/crop.py",
          "line_number": 64,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/crop.py",
          "line_number": 72,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/crop.py",
          "line_number": 84,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/crop.py",
          "line_number": 86,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/crop.py",
          "line_number": 54,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/crop.py",
          "line_number": 61,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/crop.py",
          "line_number": 67,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
          "line_number": 51,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
          "line_number": 65,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
          "line_number": 94,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
          "line_number": 55,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
          "line_number": 62,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
          "line_number": 68,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
          "line_number": 59,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
          "line_number": 73,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
          "line_number": 103,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
          "line_number": 63,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
          "line_number": 70,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
          "line_number": 76,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/fill.py",
          "line_number": 79,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/fill.py",
          "line_number": 93,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/fill.py",
          "line_number": 246,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/fill.py",
          "line_number": 248,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/fill.py",
          "line_number": 83,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/fill.py",
          "line_number": 90,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/fill.py",
          "line_number": 96,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 86,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 92,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 101,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 129,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 171,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 173,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 84,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 90,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 98,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 104,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 122,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 136,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 146,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/resize.py",
          "line_number": 151,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
          "line_number": 50,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
          "line_number": 64,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
          "line_number": 108,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
          "line_number": 110,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
          "line_number": 54,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
          "line_number": 61,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
          "line_number": 67,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
          "line_number": 25,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
          "line_number": 36,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
          "line_number": 39,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
          "line_number": 47,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
          "line_number": 34,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
          "line_number": 56,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/blur.py",
          "line_number": 59,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/blur.py",
          "line_number": 73,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/blur.py",
          "line_number": 124,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/blur.py",
          "line_number": 126,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/blur.py",
          "line_number": 63,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/blur.py",
          "line_number": 70,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/blur.py",
          "line_number": 76,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
          "line_number": 58,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
          "line_number": 72,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
          "line_number": 133,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
          "line_number": 135,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
          "line_number": 62,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
          "line_number": 69,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
          "line_number": 75,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/rotate.py",
          "line_number": 47,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/rotate.py",
          "line_number": 53,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/rotate.py",
          "line_number": 62,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/rotate.py",
          "line_number": 70,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/rotate.py",
          "line_number": 82,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/rotate.py",
          "line_number": 84,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/rotate.py",
          "line_number": 51,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/rotate.py",
          "line_number": 59,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/rotate.py",
          "line_number": 65,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/ocr.py",
          "line_number": 41,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/ocr.py",
          "line_number": 39,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/ocr.py",
          "line_number": 45,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/ocr.py",
          "line_number": 56,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/ocr.py",
          "line_number": 72,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/ocr.py",
          "line_number": 115,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/ocr.py",
          "line_number": 59,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/ocr.py",
          "line_number": 145,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/ocr.py",
          "line_number": 151,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/find.py",
          "line_number": 106,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/find.py",
          "line_number": 100,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/find.py",
          "line_number": 104,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/find.py",
          "line_number": 114,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/find.py",
          "line_number": 121,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/find.py",
          "line_number": 129,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/find.py",
          "line_number": 159,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/find.py",
          "line_number": 226,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/change_color.py",
          "line_number": 41,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/change_color.py",
          "line_number": 80,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/change_color.py",
          "line_number": 45,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/change_color.py",
          "line_number": 52,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "medium",
          "category": "taint-analysis",
          "file_path": "src/imagesorcery_mcp/tools/change_color.py",
          "line_number": 57,
          "rule_identifier": "AAK-LOGINJ-001",
          "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
          "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
          "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "secret-exposure",
          "file_path": "src/imagesorcery_mcp/telemetry_amplitude.py",
          "line_number": 26,
          "rule_identifier": "AAK-SPLUNK-TOKLOG-001",
          "title": "Session token written to log sink in cleartext",
          "description": "An MCP server, agent, or tool logs a session token, JWT, or Bearer credential through a generic log sink (logger.info / .warn / .error, print) without redaction. CVE-2026-20205 (splunk-mcp-server < 1.0.3) shipped this exact pattern \u2014 session tokens ended up in the Splunk `_internal` index, readable by anyone with index-read. Any token written to a log sink is also a supply-chain risk: the log file, shipper, and SIEM are now in scope for the token's blast radius.",
          "remediation": "Redact token-shaped values before logging. Never interpolate a raw `Authorization`, `Bearer`, JWT, `splunkd_session`, or `st-` credential into a log message. Pin `splunk-mcp-server >= 1.0.3`."
        },
        {
          "tool_name": "agent-audit-kit",
          "severity": "high",
          "category": "secret-exposure",
          "file_path": "src/imagesorcery_mcp/telemetry_posthog.py",
          "line_number": 29,
          "rule_identifier": "AAK-SPLUNK-TOKLOG-001",
          "title": "Session token written to log sink in cleartext",
          "description": "An MCP server, agent, or tool logs a session token, JWT, or Bearer credential through a generic log sink (logger.info / .warn / .error, print) without redaction. CVE-2026-20205 (splunk-mcp-server < 1.0.3) shipped this exact pattern \u2014 session tokens ended up in the Splunk `_internal` index, readable by anyone with index-read. Any token written to a log sink is also a supply-chain risk: the log file, shipper, and SIEM are now in scope for the token's blast radius.",
          "remediation": "Redact token-shaped values before logging. Never interpolate a raw `Authorization`, `Bearer`, JWT, `splunkd_session`, or `st-` credential into a log message. Pin `splunk-mcp-server >= 1.0.3`."
        }
      ],
      "execution_duration_seconds": 68.13076637400081,
      "status": "complete",
      "metadata": {
        "source": "pypi",
        "source_url": "https://pypi.org/project/agent-audit-kit/0.3.26/",
        "report_type": "agent-audit-kit-sast",
        "files_scanned": 79,
        "install_command": "pip install --require-hashes -r docker/scanner-base/agent-audit-kit/requirements.txt",
        "rules_evaluated": 211,
        "severity_counts": {
          "low": 1,
          "high": 6,
          "medium": 125,
          "critical": 0,
          "informational": 0
        }
      },
      "display_score": 0.0,
      "display_badge": "Unsafe"
    },
    {
      "scanner_name": "bearer",
      "scanner_version": "2.0.2",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 18.46644166999613,
      "status": "complete",
      "metadata": {
        "source": "github-releases",
        "source_url": "https://github.com/Bearer/bearer",
        "report_type": "security",
        "rules_loaded": 1,
        "install_command": "curl -sfL https://raw.githubusercontent.com/Bearer/bearer/main/contrib/install.sh | sh -s -- -b /usr/local/bin \"v2.0.2\""
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "nerlo-behavioral",
      "scanner_version": "0.1.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 63.84246390100452,
      "status": "complete",
      "metadata": {
        "source": "nerlo-original",
        "source_url": "https://github.com/nerlo-ai/nerlo",
        "report_type": "nerlo-behavioral",
        "ruleset_path": "/opt/nerlo-rules/exfiltration.yaml",
        "files_scanned": 40,
        "install_command": "pip install 'semgrep==1.97.0'"
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "nerlo-install-instruction",
      "scanner_version": "0.1.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 63.63743060300476,
      "status": "complete",
      "metadata": {
        "source": "nerlo-original",
        "source_url": "https://github.com/nerlo-ai/nerlo",
        "report_type": "nerlo-install-instruction",
        "ruleset_path": "/opt/nerlo-rules/install_instructions.yaml",
        "files_scanned": 10,
        "install_command": "pip install 'semgrep==1.97.0'"
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "trivy",
      "scanner_version": "0.71.0",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 2.234428340991144,
      "status": "complete",
      "metadata": {
        "source": "github-releases",
        "source_url": "https://github.com/aquasecurity/trivy/releases/tag/v0.71.0",
        "report_type": "filesystem-vulnerability",
        "install_command": "curl -sfL -o /tmp/trivy.deb https://github.com/aquasecurity/trivy/releases/download/v0.71.0/trivy_0.71.0_Linux-64bit.deb && echo '<sha256>  /tmp/trivy.deb' | sha256sum -c - && dpkg -i /tmp/trivy.deb",
        "manifests_scanned": []
      },
      "display_score": 100.0,
      "display_badge": "Verified"
    },
    {
      "scanner_name": "osv-scanner",
      "scanner_version": "2.3.8",
      "score": 100.0,
      "scanner_badge": "Verified",
      "findings": [],
      "execution_duration_seconds": 1.7662505049956962,
      "status": "not_applicable",
      "metadata": {
        "source": "github-releases",
        "source_url": "https://github.com/google/osv-scanner/releases/tag/v2.3.8",
        "report_type": "osv-vulnerability",
        "ecosystems_seen": [],
        "install_command": "curl -sfL -o /usr/local/bin/osv-scanner https://github.com/google/osv-scanner/releases/download/v2.3.8/osv-scanner_linux_amd64 && echo '<sha256>  /usr/local/bin/osv-scanner' | sha256sum -c - && chmod +x /usr/local/bin/osv-scanner",
        "manifests_scanned": [],
        "finding_id_aliases": {},
        "cross_scanner_correlation": {
          "only_osv": [],
          "only_trivy": [],
          "intersection_ids": []
        }
      },
      "display_score": null,
      "display_badge": "unavailable"
    }
  ],
  "threat_model": "Threat model synthesis has not yet run for this scan. This section is generated by the registry's LLM pipeline (Req 22.3) and will appear in the next regeneration of this report.",
  "audit_chain": {
    "scan_job_id": "f6026881-c991-4fbe-87ea-10929dd64c87",
    "scan_completed_at": "2026-07-21T02:09:40.003170+00:00",
    "scanner_versions": {
      "agentshield": "1.4.0",
      "cisco-skill-scanner": "2.0.11",
      "agent-audit-kit": "0.3.26",
      "bearer": "2.0.2",
      "nerlo-behavioral": "0.1.0",
      "nerlo-install-instruction": "0.1.0",
      "trivy": "0.71.0",
      "osv-scanner": "2.3.8"
    },
    "scanner_base_image": "us-central1-docker.pkg.dev/nerlo-vsk-prod/nerlo/scanner-base@sha256:8da4f6692918e836ddba4c8ddd26562eb341283e3054981c2af54dcfba1038d5",
    "ai_decision_log_ids": [
      "ca49b48a-0126-43fd-8072-2562728a5f93"
    ],
    "self_attestation_url": "http://localhost:8000/api/v1/registry/self-attestation"
  },
  "appendix": {
    "raw_scanner_reports": [
      {
        "scanner_name": "agentshield",
        "scanner_version": "1.4.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 1.530200662004063,
        "status": "not_applicable",
        "metadata": {
          "source": "npm",
          "source_url": "https://www.npmjs.com/package/ecc-agentshield",
          "install_command": "npm install -g ecc-agentshield@1.4.0",
          "scans_performed": []
        },
        "display_score": null,
        "display_badge": "unavailable"
      },
      {
        "scanner_name": "cisco-skill-scanner",
        "scanner_version": "2.0.11",
        "score": 0.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/repo/CONFIG.md",
            "line_number": null,
            "rule_identifier": "TOOL_ABUSE_UNDECLARED_NETWORK",
            "title": "Undeclared network usage",
            "description": "Skill code uses network libraries but doesn't declare network requirement",
            "remediation": "Declare network usage in compatibility field or remove network calls"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "low",
            "category": "social_engineering",
            "file_path": "/repo/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "data_exfiltration",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/download_clip.py",
            "line_number": 29,
            "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
            "title": "Outbound network request primitives that can transmit data externally",
            "description": "Pattern detected: requests.get(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "data_exfiltration",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/download_models.py",
            "line_number": 33,
            "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
            "title": "Outbound network request primitives that can transmit data externally",
            "description": "Pattern detected: requests.get(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 56,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 57,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 169,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
            "line_number": 43,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
            "line_number": 339,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/repo/src/imagesorcery_mcp/README.md",
            "line_number": null,
            "rule_identifier": "TOOL_ABUSE_UNDECLARED_NETWORK",
            "title": "Undeclared network usage",
            "description": "Skill code uses network libraries but doesn't declare network requirement",
            "remediation": "Declare network usage in compatibility field or remove network calls"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "low",
            "category": "social_engineering",
            "file_path": "/repo/src/imagesorcery_mcp/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/src/imagesorcery_mcp/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_INVALID_NAME",
            "title": "Skill name does not follow agent skills naming rules",
            "description": "Skill name 'imagesorcery_mcp' is invalid. Agent skills require lowercase letters, numbers, and hyphens only, with a maximum length of 64 characters.",
            "remediation": "Rename the skill to match `[a-z0-9-]{1,64}` (e.g., 'pdf-processing')"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/src/imagesorcery_mcp/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "data_exfiltration",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/download_clip.py",
            "line_number": 29,
            "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
            "title": "Outbound network request primitives that can transmit data externally",
            "description": "Pattern detected: requests.get(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "data_exfiltration",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/download_models.py",
            "line_number": 33,
            "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
            "title": "Outbound network request primitives that can transmit data externally",
            "description": "Pattern detected: requests.get(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 56,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 57,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 169,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
            "line_number": 43,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
            "line_number": 339,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/repo/src/imagesorcery_mcp/scripts/README.md",
            "line_number": null,
            "rule_identifier": "TOOL_ABUSE_UNDECLARED_NETWORK",
            "title": "Undeclared network usage",
            "description": "Skill code uses network libraries but doesn't declare network requirement",
            "remediation": "Declare network usage in compatibility field or remove network calls"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "low",
            "category": "social_engineering",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "data_exfiltration",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/download_clip.py",
            "line_number": 29,
            "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
            "title": "Outbound network request primitives that can transmit data externally",
            "description": "Pattern detected: requests.get(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "medium",
            "category": "data_exfiltration",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/download_models.py",
            "line_number": 33,
            "rule_identifier": "DATA_EXFIL_NETWORK_REQUESTS",
            "title": "Outbound network request primitives that can transmit data externally",
            "description": "Pattern detected: requests.get(",
            "remediation": "Ensure network operations are necessary and document allowed destinations"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 56,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 57,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 169,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "low",
            "category": "social_engineering",
            "file_path": "/repo/src/imagesorcery_mcp/resources/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/src/imagesorcery_mcp/resources/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "low",
            "category": "social_engineering",
            "file_path": "/repo/src/imagesorcery_mcp/tools/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/src/imagesorcery_mcp/tools/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
            "line_number": 43,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "high",
            "category": "unauthorized_tool_use",
            "file_path": "/repo/src/imagesorcery_mcp/tools/find.py",
            "line_number": 339,
            "rule_identifier": "TOOL_ABUSE_UNTRUSTED_PACKAGE_SOURCE",
            "title": "Package installation from untrusted remote sources",
            "description": "Pattern detected: pip install git+https://",
            "remediation": "Prefer trusted registries and pinned package versions over direct URL/VCS installs"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "low",
            "category": "social_engineering",
            "file_path": "/repo/src/imagesorcery_mcp/prompts/SKILL.md",
            "line_number": null,
            "rule_identifier": "SOCIAL_ENG_VAGUE_DESCRIPTION",
            "title": "Vague skill description",
            "description": "Skill description is too short (16 chars). Provide detailed explanation.",
            "remediation": "Provide a clear, detailed description of what the skill does and when to use it"
          },
          {
            "tool_name": "cisco-skill-scanner",
            "severity": "informational",
            "category": "policy_violation",
            "file_path": "/repo/src/imagesorcery_mcp/prompts/SKILL.md",
            "line_number": null,
            "rule_identifier": "MANIFEST_MISSING_LICENSE",
            "title": "Skill does not specify a license",
            "description": "Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.",
            "remediation": "Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)"
          }
        ],
        "execution_duration_seconds": 86.94252936499834,
        "status": "complete",
        "metadata": {
          "source": "pypi",
          "source_url": "https://pypi.org/project/cisco-ai-skill-scanner/2.0.11/",
          "report_type": "cisco-skill-sast",
          "analyzers_used": [
            "bytecode",
            "pipeline",
            "static_analyzer"
          ],
          "skills_scanned": [
            "repo",
            "imagesorcery_mcp",
            "scripts",
            "resources",
            "tools",
            "prompts"
          ],
          "install_command": "pip install --require-hashes -r docker/scanner-base/cisco-skill-scanner/requirements.txt",
          "severity_counts": {
            "low": 6,
            "high": 15,
            "medium": 9,
            "critical": 0,
            "informational": 7
          }
        },
        "display_score": 0.0,
        "display_badge": "Unsafe"
      },
      {
        "scanner_name": "agent-audit-kit",
        "scanner_version": "0.3.26",
        "score": 0.0,
        "scanner_badge": "Unsafe",
        "findings": [
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "secret-exposure",
            "file_path": "src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 110,
            "rule_identifier": "AAK-SECRET-004",
            "title": "Generic high-entropy secret",
            "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
            "remediation": "Move to environment variables or secrets manager."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "secret-exposure",
            "file_path": "src/imagesorcery_mcp/scripts/post_install.py",
            "line_number": 111,
            "rule_identifier": "AAK-SECRET-004",
            "title": "Generic high-entropy secret",
            "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
            "remediation": "Move to environment variables or secrets manager."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "secret-exposure",
            "file_path": "src/imagesorcery_mcp/scripts/populate_telemetry_keys.py",
            "line_number": 43,
            "rule_identifier": "AAK-SECRET-004",
            "title": "Generic high-entropy secret",
            "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
            "remediation": "Move to environment variables or secrets manager."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "secret-exposure",
            "file_path": "src/imagesorcery_mcp/scripts/populate_telemetry_keys.py",
            "line_number": 49,
            "rule_identifier": "AAK-SECRET-004",
            "title": "Generic high-entropy secret",
            "description": "A value assigned to a secret-like key has high Shannon entropy, indicating a likely credential or API key.",
            "remediation": "Move to environment variables or secrets manager."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "supply-chain",
            "file_path": "pyproject.toml",
            "line_number": null,
            "rule_identifier": "AAK-SUPPLY-004",
            "title": "No lockfile present",
            "description": "A package manifest exists but no lockfile was found. Without lockfiles, dependency versions float and can be silently updated.",
            "remediation": "Generate and commit lockfile."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "low",
            "category": "supply-chain",
            "file_path": "SECURITY.md",
            "line_number": null,
            "rule_identifier": "AAK-SEC-MD-001",
            "title": "MCP server repo missing SECURITY.md or security_contact",
            "description": "A repository whose name or pyproject keywords declare it as an MCP server ships without a top-level SECURITY.md AND without a `security_contact` entry in marketplace.json / pyproject.toml / package.json. Anthropic's April 2026 SECURITY.md guidance makes this the baseline expectation so researchers have a channel.",
            "remediation": "Add SECURITY.md at the repo root with a disclosure email and response SLA; OR add `security_contact` to the project manifest."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "mcp-config",
            "file_path": "src/imagesorcery_mcp/server.py",
            "line_number": 135,
            "rule_identifier": "AAK-MCP-018",
            "title": "Missing rate limiting on MCP endpoint",
            "description": "An MCP server endpoint does not declare rate limiting. Unrestricted access allows credential stuffing and enumeration attacks.",
            "remediation": "Add per-IP and per-token rate limits. Reject bursts above the limit with 429."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/config.py",
            "line_number": 84,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/config.py",
            "line_number": 128,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/config.py",
            "line_number": 162,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/overlay.py",
            "line_number": 44,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/overlay.py",
            "line_number": 118,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/overlay.py",
            "line_number": 48,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/overlay.py",
            "line_number": 51,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/overlay.py",
            "line_number": 58,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/overlay.py",
            "line_number": 65,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/overlay.py",
            "line_number": 68,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/detect.py",
            "line_number": 83,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/detect.py",
            "line_number": 77,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/detect.py",
            "line_number": 81,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/detect.py",
            "line_number": 88,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/detect.py",
            "line_number": 95,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/detect.py",
            "line_number": 102,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/detect.py",
            "line_number": 141,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/detect.py",
            "line_number": 198,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
            "line_number": 50,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
            "line_number": 64,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
            "line_number": 92,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
            "line_number": 54,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
            "line_number": 61,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_lines.py",
            "line_number": 67,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/crop.py",
            "line_number": 50,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/crop.py",
            "line_number": 64,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/crop.py",
            "line_number": 72,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/crop.py",
            "line_number": 84,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/crop.py",
            "line_number": 86,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/crop.py",
            "line_number": 54,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/crop.py",
            "line_number": 61,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/crop.py",
            "line_number": 67,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
            "line_number": 51,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
            "line_number": 65,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
            "line_number": 94,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
            "line_number": 55,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
            "line_number": 62,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_arrows.py",
            "line_number": 68,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
            "line_number": 59,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
            "line_number": 73,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
            "line_number": 103,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
            "line_number": 63,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
            "line_number": 70,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_circle.py",
            "line_number": 76,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/fill.py",
            "line_number": 79,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/fill.py",
            "line_number": 93,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/fill.py",
            "line_number": 246,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/fill.py",
            "line_number": 248,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/fill.py",
            "line_number": 83,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/fill.py",
            "line_number": 90,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/fill.py",
            "line_number": 96,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 86,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 92,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 101,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 129,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 171,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 173,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 84,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 90,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 98,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 104,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 122,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 136,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 146,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/resize.py",
            "line_number": 151,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
            "line_number": 50,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
            "line_number": 64,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
            "line_number": 108,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
            "line_number": 110,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
            "line_number": 54,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
            "line_number": 61,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_rectangle.py",
            "line_number": 67,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
            "line_number": 25,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
            "line_number": 36,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
            "line_number": 39,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
            "line_number": 47,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
            "line_number": 34,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/metainfo.py",
            "line_number": 56,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/blur.py",
            "line_number": 59,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/blur.py",
            "line_number": 73,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/blur.py",
            "line_number": 124,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/blur.py",
            "line_number": 126,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/blur.py",
            "line_number": 63,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/blur.py",
            "line_number": 70,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/blur.py",
            "line_number": 76,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
            "line_number": 58,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
            "line_number": 72,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
            "line_number": 133,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
            "line_number": 135,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
            "line_number": 62,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
            "line_number": 69,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/draw_text.py",
            "line_number": 75,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/rotate.py",
            "line_number": 47,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/rotate.py",
            "line_number": 53,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/rotate.py",
            "line_number": 62,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/rotate.py",
            "line_number": 70,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/rotate.py",
            "line_number": 82,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/rotate.py",
            "line_number": 84,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/rotate.py",
            "line_number": 51,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/rotate.py",
            "line_number": 59,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/rotate.py",
            "line_number": 65,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/ocr.py",
            "line_number": 41,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/ocr.py",
            "line_number": 39,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/ocr.py",
            "line_number": 45,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/ocr.py",
            "line_number": 56,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/ocr.py",
            "line_number": 72,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/ocr.py",
            "line_number": 115,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/ocr.py",
            "line_number": 59,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/ocr.py",
            "line_number": 145,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/ocr.py",
            "line_number": 151,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/find.py",
            "line_number": 106,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/find.py",
            "line_number": 100,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/find.py",
            "line_number": 104,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/find.py",
            "line_number": 114,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/find.py",
            "line_number": 121,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/find.py",
            "line_number": 129,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/find.py",
            "line_number": 159,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/find.py",
            "line_number": 226,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/change_color.py",
            "line_number": 41,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/change_color.py",
            "line_number": 80,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/change_color.py",
            "line_number": 45,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/change_color.py",
            "line_number": 52,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "medium",
            "category": "taint-analysis",
            "file_path": "src/imagesorcery_mcp/tools/change_color.py",
            "line_number": 57,
            "rule_identifier": "AAK-LOGINJ-001",
            "title": "MCP tool logs caller-controlled input without CRLF/ANSI sanitization",
            "description": "A `@tool`-decorated function parameter flows into logger.info / print / sys.stdout.write / console.log without stripping control characters (\\r, \\n, \\x1b) first. CVE-2026-6494 (AAP MCP, CVSS 5.3 MEDIUM, CWE-117) lets an attacker forge log entries and inject ANSI escape sequences to socially engineer an operator.",
            "remediation": "Strip \\r\\n\\x1b (or accept only printable ASCII) before logging anything derived from tool input. Prefer structured logging (JSON/logfmt) so log consumers aren't confused by forged lines."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "secret-exposure",
            "file_path": "src/imagesorcery_mcp/telemetry_amplitude.py",
            "line_number": 26,
            "rule_identifier": "AAK-SPLUNK-TOKLOG-001",
            "title": "Session token written to log sink in cleartext",
            "description": "An MCP server, agent, or tool logs a session token, JWT, or Bearer credential through a generic log sink (logger.info / .warn / .error, print) without redaction. CVE-2026-20205 (splunk-mcp-server < 1.0.3) shipped this exact pattern \u2014 session tokens ended up in the Splunk `_internal` index, readable by anyone with index-read. Any token written to a log sink is also a supply-chain risk: the log file, shipper, and SIEM are now in scope for the token's blast radius.",
            "remediation": "Redact token-shaped values before logging. Never interpolate a raw `Authorization`, `Bearer`, JWT, `splunkd_session`, or `st-` credential into a log message. Pin `splunk-mcp-server >= 1.0.3`."
          },
          {
            "tool_name": "agent-audit-kit",
            "severity": "high",
            "category": "secret-exposure",
            "file_path": "src/imagesorcery_mcp/telemetry_posthog.py",
            "line_number": 29,
            "rule_identifier": "AAK-SPLUNK-TOKLOG-001",
            "title": "Session token written to log sink in cleartext",
            "description": "An MCP server, agent, or tool logs a session token, JWT, or Bearer credential through a generic log sink (logger.info / .warn / .error, print) without redaction. CVE-2026-20205 (splunk-mcp-server < 1.0.3) shipped this exact pattern \u2014 session tokens ended up in the Splunk `_internal` index, readable by anyone with index-read. Any token written to a log sink is also a supply-chain risk: the log file, shipper, and SIEM are now in scope for the token's blast radius.",
            "remediation": "Redact token-shaped values before logging. Never interpolate a raw `Authorization`, `Bearer`, JWT, `splunkd_session`, or `st-` credential into a log message. Pin `splunk-mcp-server >= 1.0.3`."
          }
        ],
        "execution_duration_seconds": 68.13076637400081,
        "status": "complete",
        "metadata": {
          "source": "pypi",
          "source_url": "https://pypi.org/project/agent-audit-kit/0.3.26/",
          "report_type": "agent-audit-kit-sast",
          "files_scanned": 79,
          "install_command": "pip install --require-hashes -r docker/scanner-base/agent-audit-kit/requirements.txt",
          "rules_evaluated": 211,
          "severity_counts": {
            "low": 1,
            "high": 6,
            "medium": 125,
            "critical": 0,
            "informational": 0
          }
        },
        "display_score": 0.0,
        "display_badge": "Unsafe"
      },
      {
        "scanner_name": "bearer",
        "scanner_version": "2.0.2",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 18.46644166999613,
        "status": "complete",
        "metadata": {
          "source": "github-releases",
          "source_url": "https://github.com/Bearer/bearer",
          "report_type": "security",
          "rules_loaded": 1,
          "install_command": "curl -sfL https://raw.githubusercontent.com/Bearer/bearer/main/contrib/install.sh | sh -s -- -b /usr/local/bin \"v2.0.2\""
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "nerlo-behavioral",
        "scanner_version": "0.1.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 63.84246390100452,
        "status": "complete",
        "metadata": {
          "source": "nerlo-original",
          "source_url": "https://github.com/nerlo-ai/nerlo",
          "report_type": "nerlo-behavioral",
          "ruleset_path": "/opt/nerlo-rules/exfiltration.yaml",
          "files_scanned": 40,
          "install_command": "pip install 'semgrep==1.97.0'"
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "nerlo-install-instruction",
        "scanner_version": "0.1.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 63.63743060300476,
        "status": "complete",
        "metadata": {
          "source": "nerlo-original",
          "source_url": "https://github.com/nerlo-ai/nerlo",
          "report_type": "nerlo-install-instruction",
          "ruleset_path": "/opt/nerlo-rules/install_instructions.yaml",
          "files_scanned": 10,
          "install_command": "pip install 'semgrep==1.97.0'"
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "trivy",
        "scanner_version": "0.71.0",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 2.234428340991144,
        "status": "complete",
        "metadata": {
          "source": "github-releases",
          "source_url": "https://github.com/aquasecurity/trivy/releases/tag/v0.71.0",
          "report_type": "filesystem-vulnerability",
          "install_command": "curl -sfL -o /tmp/trivy.deb https://github.com/aquasecurity/trivy/releases/download/v0.71.0/trivy_0.71.0_Linux-64bit.deb && echo '<sha256>  /tmp/trivy.deb' | sha256sum -c - && dpkg -i /tmp/trivy.deb",
          "manifests_scanned": []
        },
        "display_score": 100.0,
        "display_badge": "Verified"
      },
      {
        "scanner_name": "osv-scanner",
        "scanner_version": "2.3.8",
        "score": 100.0,
        "scanner_badge": "Verified",
        "findings": [],
        "execution_duration_seconds": 1.7662505049956962,
        "status": "not_applicable",
        "metadata": {
          "source": "github-releases",
          "source_url": "https://github.com/google/osv-scanner/releases/tag/v2.3.8",
          "report_type": "osv-vulnerability",
          "ecosystems_seen": [],
          "install_command": "curl -sfL -o /usr/local/bin/osv-scanner https://github.com/google/osv-scanner/releases/download/v2.3.8/osv-scanner_linux_amd64 && echo '<sha256>  /usr/local/bin/osv-scanner' | sha256sum -c - && chmod +x /usr/local/bin/osv-scanner",
          "manifests_scanned": [],
          "finding_id_aliases": {},
          "cross_scanner_correlation": {
            "only_osv": [],
            "only_trivy": [],
            "intersection_ids": []
          }
        },
        "display_score": null,
        "display_badge": "unavailable"
      }
    ]
  },
  "report": {
    "report_id": "6fe01bd6-db40-4891-962b-9f8c6fff6586",
    "format": "json",
    "generated_at": "2026-07-22T00:40:04.476693+00:00",
    "scanner_filter": null,
    "signature": null
  }
}