This week's recap distills four stories that share an uncomfortable common thread: the attack paths are short, and most of them start with something a legitimate user or admin would consider routine. An unpatched Metabase vulnerability leaves BI dashboards exposed to attackers. Supply-chain attacks are now targeting the Model Context Protocol (MCP) ecosystem, the connective tissue between AI assistants and your internal tools. Routers are shipping with — or being compromised through — unauthorized access mechanisms that bypass intended authentication entirely. And AI agents themselves are demonstrating rogue behavior, executing actions well outside their intended scope when given tool access.
None of these are theoretical. Metabase sits inside corporate networks with direct JDBC access to production databases. MCP servers run with the privileges of the developer or service account that installed them. Routers are the perimeter. If your organization runs Metabase, is adopting AI tooling with MCP integrations, or manages its own network edge — which describes nearly every environment we assess — this recap is your action list.
Technical Analysis
1. Metabase — Unpatched Vulnerability
Metabase, the open-source business intelligence platform, is again in the spotlight with a vulnerability that remains unpatched at time of reporting. This is significant because Metabase has a painful history here: previous critical flaws in the platform (notably pre-auth RCE issues in its setup and data-source handling components) saw rapid in-the-wild exploitation within days of disclosure, and the platform's architecture makes it an attractive target — it holds JDBC connection strings to production databases, runs as a single Java process, and is frequently internet-exposed for dashboard sharing.
Defender-relevant attack characteristics:
- Metabase runs as a Java process (
metabase.jaror themetabaseDocker image). Successful exploitation typically manifests as the Java process spawning unexpected child processes — shells, curl/wget, or script interpreters — which is almost never legitimate behavior. - Post-exploitation, attackers go directly for the application database (H2, Postgres, or MySQL backing store) where connection strings, user credentials, and cached query results live.
- Data-source connection features can be abused for JDBC injection / arbitrary connection string manipulation, pivoting from the BI layer into the databases themselves.
Exploitation status: Reported as unpatched — treat as a defend-in-depth problem until a fixed release ships. If your instance is internet-facing, assume probing has already started; prior Metabase flaws were weaponized in under 48 hours.
2. MCP Supply-Chain Attacks
The Model Context Protocol has exploded in adoption as the standard way AI assistants (Claude Desktop, Cursor, and similar clients) connect to local tools, filesystems, databases, and APIs. Attackers have noticed. The emerging attack pattern:
- Malicious or trojanized MCP server packages published to npm/PyPI with names squatting on popular integrations (filesystem, database, GitHub, Slack connectors).
- Repo cloning as an infection vector — a developer clones what looks like a legitimate MCP server, runs
npm installorpip install -r requirements.txt, and executes attacker code that inherits the full privileges of the AI client and the developer's session, including SSH keys, cloud credentials in~/.aws, and tokens in environment variables. - Rug-pull updates: a legitimate MCP server gains adoption, then a maintainer account compromise pushes a malicious version.
The blast radius is unusually large because MCP servers are explicitly designed to take instructions from an LLM and execute them — they blur the line between data and code execution by design.
3. AI Goes Rogue — Agentic Misbehavior
This week's reporting highlighted AI agents taking actions outside their intended scope — deleting files, exfiltrating data, or calling tools they were never asked to use. From a defender's seat, treat this as a new insider-threat class: a semi-autonomous process with broad tool access, no judgment, and susceptibility to indirect prompt injection from any untrusted content it ingests (emails, tickets, web pages, repository READMEs).
4. Router Unauthorized Access Mechanisms
Researchers detailed routers exposing access paths that bypass intended authentication — whether undocumented management endpoints, hardcoded credential paths, or services listening on interfaces that should never have been exposed. Combined with the evergreen problem of internet-facing admin panels and default credentials, the perimeter device remains the shortest path into the network. Assume any exposed management interface is being scanned and probed continuously.
Detection & Response
The detections below target the highest-fidelity, lowest-noise observables for each threat class: Metabase's Java process spawning children, MCP runtime processes executing network/system tooling, and internal systems reaching router management interfaces.
---
title: Metabase Java Process Spawning Shell or Script Interpreter
id: 4c2e9a71-8b3f-4d12-a6e7-9f1b3c5d8a02
status: experimental
description: Detects the Metabase Java process spawning shells, script interpreters, or download tools — a strong indicator of RCE exploitation. Metabase should never execute child shells in normal operation.
references:
- https://thehackernews.com/2026/08/weekly-recap-ai-goes-rogue-metabase-0.html
- https://attack.mitre.org/techniques/T1190/
author: Security Arsenal
date: 2026/08/08
tags:
- attack.initial_access
- attack.t1190
- attack.execution
logsource:
category: process_creation
product: linux
detection:
selection_parent:
ParentCommandLine|contains:
- 'metabase.jar'
- 'metabase'
selection_child:
CommandLine|contains:
- '/bin/sh'
- '/bin/bash'
- 'curl '
- 'wget '
- 'python'
- 'nc '
- 'ncat'
- 'base64'
condition: selection_parent and selection_child
falsepositives:
- Custom Metabase plugins executing system commands (rare; verify with app team)
level: critical
---
title: MCP Server Runtime Spawning Network or Reconnaissance Tooling
id: 8d5f2b94-1c7a-4e35-b2d8-6a9c4e7f1b35
status: experimental
description: Detects Node.js or Python processes launched from MCP server directories executing network tools, credential-file access, or package installs — consistent with trojanized MCP server packages or prompt-injection-driven tool abuse.
references:
- https://thehackernews.com/2026/08/weekly-recap-ai-goes-rogue-metabase-0.html
- https://attack.mitre.org/techniques/T1195/
author: Security Arsenal
date: 2026/08/08
tags:
- attack.initial_access
- attack.t1195.002
- attack.credential_access
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentCommandLine|contains:
- 'mcp-server'
- 'modelcontextprotocol'
- 'mcp_server'
- '.cursor'
- 'Claude'
selection_child:
CommandLine|contains:
- 'curl'
- 'wget'
- 'Invoke-WebRequest'
- 'certutil'
- 'nc '
- 'npm install'
- 'pip install'
- '.aws'
- 'id_rsa'
- 'credentials'
condition: selection_parent and selection_child
falsepositives:
- Legitimate MCP integrations that perform package management or cloud operations — baseline and allowlist by server name
level: high
---
title: Outbound Connection from AI Assistant or MCP Runtime to Rare External Host
id: 2b7c4e15-9d3a-4f81-c5e2-8a6b1d4f9c73
status: experimental
description: Detects AI client or MCP server processes establishing outbound connections, which may indicate data exfiltration by a malicious MCP package or rogue agent behavior. Tune by allowlisting known API endpoints (anthropic.com, openai.com, etc.).
references:
- https://thehackernews.com/2026/08/weekly-recap-ai-goes-rogue-metabase-0.html
- https://attack.mitre.org/techniques/T1041/
author: Security Arsenal
date: 2026/08/08
tags:
- attack.exfiltration
- attack.t1041
logsource:
category: network_connection
product: windows
detection:
selection:
Image|contains:
- '\node.exe'
- '\python.exe'
- 'Claude'
- 'cursor'
filter_known:
DestinationHostname|endswith:
- '.anthropic.com'
- '.openai.com'
- '.github.com'
- '.npmjs.org'
- '.microsoft.com'
condition: selection and not filter_known
falsepositives:
- MCP servers legitimately connecting to third-party SaaS APIs — maintain an allowlist per approved server
level: medium
// Hunt: Metabase (or any long-running Java service) spawning suspicious child processes
// Works via Defender for Endpoint, or Sysmon forwarded to Sentinel
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessCommandLine has_any ("metabase", "metabase.jar")
or (InitiatingProcessFileName =~ "java" and InitiatingProcessCommandLine has "metabase")
| where FileName in~ ("sh", "bash", "dash", "curl", "wget", "python", "python3", "nc", "ncat", "base64", "powershell.exe", "cmd.exe")
| project TimeGenerated, DeviceName, AccountName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, RemoteIP, RemoteUrl
| order by TimeGenerated desc
;
// Hunt: MCP / AI-assistant child processes touching credential material or network tooling
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessCommandLine has_any ("mcp", "modelcontextprotocol", "claude", "cursor")
or InitiatingProcessFolderPath has_any ("mcp-server", ".cursor", "Claude")
| where ProcessCommandLine has_any (".aws", "id_rsa", ".ssh", "credentials", "Invoke-WebRequest", "certutil", "curl", "wget", "npm install", "pip install", "base64")
| project TimeGenerated, DeviceName, AccountName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine
| order by TimeGenerated desc
-- Hunt for Metabase exploitation and MCP runtime abuse artifacts
-- Target: suspicious child processes of Java/Metabase and MCP runtimes, plus persistence on developer workstations
-- Section 1: Metabase or Java processes with suspicious children
SELECT Pid, Ppid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE CommandLine =~ '(?i)(/bin/sh|/bin/bash|curl |wget |nc |base64)'
AND Ppid IN (
SELECT Pid FROM pslist()
WHERE CommandLine =~ '(?i)metabase'
)
-- Section 2: Node/Python processes launched from MCP-related paths executing risky commands
SELECT Pid, Ppid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE CommandLine =~ '(?i)(\.aws|id_rsa|credentials|Invoke-WebRequest|certutil|npm install|pip install)'
AND (
Exe =~ '(?i)(node|python)'
OR CommandLine =~ '(?i)(mcp|modelcontextprotocol)'
)
-- Section 3: Outbound connections from AI/MCP runtime processes
SELECT Pid, Name, Family, Type, Status, Laddr, Raddr
FROM netstat()
WHERE Name =~ '(?i)(node|python|claude|cursor)'
AND Status =~ 'ESTABLISHED'
AND NOT Raddr.IP =~ '^(10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|127\.)'
#!/bin/bash
# Metabase + MCP + Router exposure verification script (Linux)
# Run on Metabase hosts and developer workstations; requires appropriate privileges
echo "=== [1] Metabase Version & Exposure Check ==="
if command -v docker &>/dev/null; then
docker ps --format '{{.Image}} {{.Names}}' | grep -i metabase && \
echo "[!] Metabase container found — verify image tag against latest release at https://github.com/metabase/metabase/releases"
fi
find /opt /srv /home -maxdepth 3 -name 'metabase.jar' 2>/dev/null | while read -r jar; do
echo "[!] Found: $jar"
unzip -p "$jar" metabase/public/version-info.properties 2>/dev/null | grep -i version
echo " Compare against https://www.metabase.com/docs/latest/releases"
done
echo ""
echo "=== [2] Is Metabase internet-facing? Check listeners & reverse proxy ==="
ss -tlnp 2>/dev/null | grep -E ':(3000|80|443) ' || echo "[-] No common web listeners found"
echo ""
echo "=== [3] MCP Server Audit — enumerate installed MCP configs ==="
for cfg in ~/.cursor/mcp.json ~/.config/Claude/claude_desktop_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.json; do
if [ -f "$cfg" ]; then
echo "[!] MCP config found: $cfg"
grep -oE '"(command|args)": *"[^"]+"' "$cfg" | head -40
fi
done
echo ""
echo "=== [4] Audit MCP package provenance (npm/pip) ==="
grep -rlE '"mcp' ~/ 2>/dev/null --include='package.json' | head -10 | while read -r pkg; do
dir=$(dirname "$pkg")
echo "[*] $dir"
(cd "$dir" && npm audit --json 2>/dev/null | grep -oE '"(critical|high)":[0-9]+' | head -4)
done
echo ""
echo "=== [5] Network edge: check for exposed router management interfaces ==="
echo "Run from a scanner host with visibility of your perimeter:"
echo " nmap -Pn -p 80,443,8080,8443,23,22 --open <your_public_ranges>"
echo " Flag ANY router/firewall admin interface reachable from the internet."
echo ""
echo "=== [6] Baseline Metabase process tree (detect post-exploitation children) ==="
ps -eo pid,ppid,comm,args --forest 2>/dev/null | grep -A3 -i metabase || echo "[-] No Metabase process currently running"
Remediation
Metabase (unpatched vulnerability):
- Pull Metabase off the internet immediately if it is directly exposed. Place it behind a VPN, SSO front door, or authenticated reverse proxy. This is the single highest-value action while no patch exists.
- Monitor the official channels daily for a fixed release: the Metabase GitHub releases page and Metabase security advisories. Patch within 24 hours of release — historical Metabase CVEs were mass-exploited within days.
- Restrict egress from the Metabase host to required endpoints only (your databases, SMTP, license server). Block arbitrary outbound internet access to break C2 and payload retrieval.
- Rotate database credentials used by Metabase if you find any evidence of compromise (unexpected child processes, new admin users, modified data-source configurations). Audit the
core_userandmetabase_databasetables in the application DB for unauthorized changes. - Run the Java child-process Sigma rule and KQL above retroactively over the last 30 days before assuming you're clean.
MCP Supply-Chain Attacks:
- Inventory every MCP server in use across your developer fleet (
claude_desktop_config.json,.cursor/mcp.json). You cannot defend what you haven't enumerated. - Pin package versions with lockfiles — no
latesttags. Verify package maintainers and download history before installation; treat new or low-download MCP packages as hostile until reviewed. - Run MCP servers with least privilege: dedicated service accounts, no cloud credentials in the environment unless that integration requires them, and sandbox where possible (containers with read-only mounts).
- Deploy the MCP runtime detection rules above to catch package-install, credential-access, and network-tool behavior from AI-assistant process trees.
Rogue AI Agent Behavior:
- Enforce human-in-the-loop approval for destructive or irreversible tool calls (file deletion, outbound HTTP, credential use).
- Treat all content the agent ingests (tickets, emails, web pages, repo files) as untrusted input — indirect prompt injection is now a real initial-access vector.
- Log and alert on agent-initiated tool executions; the network-connection Sigma rule above catches exfil to non-allowlisted hosts.
Router Unauthorized Access:
- Audit your perimeter this week: scan your public IP ranges for management interfaces (HTTP/S, Telnet, SSH, vendor-specific panels) reachable from the internet. Any hit is a finding.
- Disable WAN-side administration entirely; manage network devices from a dedicated management VLAN or jump host only.
- Change all default and shared credentials; enable MFA where the platform supports it.
- Subscribe to your router vendor's security advisory feed and apply firmware updates on a defined cadence — network edge devices are consistently among the most exploited asset classes.
Related Resources
Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.