{
 "public_id": "AIR-2025-0137",
 "incident_id": "2025-09-postmark-mcp-npm-backdoor",
 "date_disclosed": "2025-09-25",
 "date_occurred": "2025-09",
 "title": "postmark-mcp: first malicious MCP server found in the wild, silently BCC-ing every email an agent sent",
 "class": "in_the_wild",
 "attack_surface": "mcp_server",
 "initial_vector": "trojanized_npm_mcp_package",
 "agent_capability_abused": [
  "tool_invocation",
  "email_sending",
  "implicit_trust_in_mcp_tools",
  "email_send_tool",
  "email_send",
  "credential_access",
  "tool_use"
 ],
 "target_product": "postmark-mcp npm package (impersonating Postmark Labs)",
 "target_vendor": "npm ecosystem",
 "autonomy_level": "semi_autonomous",
 "impact_realized": true,
 "impact_type": [
  "data_exfiltration",
  "email_interception",
  "credential_theft"
 ],
 "blast_radius": "~1,500 weekly downloads, estimated ~300 organisations; researcher estimate of 3,000-15,000 emails per day BCC'd to phan@giftshop[.]club",
 "cve": [],
 "taxonomy": {
  "owasp_asi": [
   "ASI04",
   "ASI03",
   "ASI05",
   "ASI06"
  ],
  "mitre_atlas": [
   "AML.CS0053"
  ],
  "labels": [
   "mcp_supply_chain",
   "backdoor",
   "silent_exfiltration",
   "rugpull",
   "typosquat_impersonation",
   "first_malicious_mcp",
   "backdoored_update",
   "rug_pull",
   "supply_chain",
   "mcp",
   "in_the_wild"
  ]
 },
 "defense_present": "None - MCP servers run with the agent's full authority",
 "defense_bypassed": true,
 "fix_shipped": "Author deleted the package from npm without notifying users",
 "primary_sources": [
  "https://www.koi.ai/blog/postmark-mcp-npm-malicious-backdoor-email-theft",
  "https://thehackernews.com/2025/09/first-malicious-mcp-server-found.html",
  "https://raw.githubusercontent.com/mitre-atlas/atlas-data/main/dist/v6/ATLAS-2026.07.yaml",
  "https://postmarkapp.com/blog/information-regarding-malicious-postmark-mcp-package"
 ],
 "verified_quote": "Version 1.0.16 onward: Included malicious BCC on line 231",
 "confidence": "high",
 "notes": "The 300-organisation and 3,000-15,000-emails-per-day figures are Koi's extrapolation from npm download counts, not measured victim data - treat as an upper bound. What is verifiable is that the backdoor shipped in v1.0.16+ after 15 clean releases, and that removal from npm leaves already-installed copies running. The Hacker News independently reported 1,643 downloads before removal. | Merged from duplicate id `2025-09-koi-postmark-mcp-backdoor`. Also reported under the titles: 'Poisoned postmark-mcp npm package BCCs every agent-sent email to the attacker'; 'postmark-mcp: first malicious MCP server found in the wild, BCC-exfiltrating every email'; 'postmark-mcp: first malicious MCP server found in the wild, BCC-ing every agent-sent email to the attacker'.",
 "risk_category": "security_fraud",
 "risk_secondary": [
  "privacy"
 ],
 "risk_subcategory": "Tool & Function Call Extraction / Abuse",
 "risk_sub_secondary": [
  "Supply Chain Compromise",
  "Credential & Secret Theft"
 ],
 "ai_entity": "generative",
 "agency": "agent_acted",
 "agency_debatable": true,
 "agency_reason": "the MCP server BCC'd every email the agent sent",
 "vector_family": "other",
 "vector_detail": "trojanized_npm_mcp_package",
 "guardrail_kind": [
  "none"
 ],
 "guardrail_outcome": "not_applicable",
 "xrefs": {
  "aiid": [],
  "atlas": [
   "AML.CS0053"
  ],
  "cve": [],
  "ghsa": []
 },
 "primary_asi": "ASI04",
 "agent_framework": "mcp_server",
 "model_provider": "unknown",
 "model_name": "",
 "detection_mechanism": "external_researcher",
 "tool_access": "unknown",
 "financial_loss_band": "unknown",
 "eai_category": "credential_theft",
 "eai_domain": "access_control_and_permissions",
 "eai_secondary": [
  "data_exfiltration_channels",
  "supply_chain_vulnerabilities"
 ],
 "eai_reason": "impact rule: credential_theft",
 "asi_curated": [
  "ASI04",
  "ASI03",
  "ASI05",
  "ASI06"
 ],
 "asi_scope": "in_scope",
 "asi_provenance": "curated",
 "asi_reason": "curated: ASI04,ASI03,ASI05,ASI06",
 "submitted_by": "EAI Internal"
}