SAF-T1913: HTTP POST Exfil

September 2, 2026 · View on GitHub

Overview

  • Tactic: Exfiltration (ATK-TA0010)
  • Technique ID: SAF-T1913
  • Research Packet: research/techniques/SAF-T1913
  • Traceability Ledger: traceability-ledger.yml
  • Documentation Status: Stable
  • Evidence Status: Research-Derived
  • Severity: High
  • Severity Rationale: A completed transfer can disclose credentials or other high-sensitivity data, but severity depends on accessible content, destination trust, approval, and request completion.
  • First Observed: Not observed in production in the reviewed direct-authority corpus as of 2026-09-02.
  • Last Updated: 2026-09-02

Scope

HTTP POST Exfil is the transfer of sensitive data from an MCP host or client to an adversary-controlled remote MCP server by placing that data in tools/call arguments carried in a Streamable HTTP POST body.

In Scope

  • Sensitive content appears in params.arguments of a tools/call request addressed to a remote MCP server.
  • The current Streamable HTTP transport sends the JSON-RPC message as one HTTP POST whose immediate recipient is that server.

Out of Scope

  • Prompt injection, tool poisoning, and prior collection are prerequisites or co-occurring behaviors; arbitrary command execution and use of disclosed credentials are follow-on behaviors.
  • URI or link-unfurl leakage, server-side request forgery, email or attachment transfer, stdio, and custom transports use a different channel or boundary.

Distinguishing Characteristics

The defining observables are an outbound POST, an MCP tools/call operation, sensitive-data classification for the request content, and receipt by the selected remote MCP endpoint. A request to an unintended destination is SSRF; a crawler fetching a secret-bearing URL is URI or link-unfurl exfiltration.

Description

MCP revision 2026-07-28 requires each Streamable HTTP client request to be a new POST, and a tools/call request carries its tool name and arguments in the JSON-RPC body. The technique abuses this normal application channel: sensitive values become tool arguments, and the client delivers them to a server controlled by or accessible to the adversary.

The complete HTTP-specific behavior is Research-Derived. Luca Beurer-Kellner and Marc Fischer demonstrated sensitive files being sent to a malicious MCP server through a concealed tool parameter, but their report does not identify the transport; the HTTP step follows independently from the current MCP transport specification.

Attack Vectors

  • Primary Vector: An adversary-controlled or compromised remote MCP server receives a sensitive tools/call argument through its Streamable HTTP endpoint.
  • Secondary Vectors:
    • A poisoned tool description or other adversarial instruction causes the agent to populate an otherwise benign argument with sensitive content.
    • Missing, misleading, or incomplete approval presentation allows the transfer despite MCP's consent principles.
  • Affected Components: MCP host, client, remote server, Streamable HTTP transport, tool approval layer, and egress telemetry pipeline.
  • Trust Boundary Crossed: The outbound data boundary from the host's sensitive context to the remote MCP server.

Technical Details

Prerequisites

  • The host is connected to a remote MCP server through Streamable HTTP and can invoke one of its tools.
  • Sensitive content is accessible to the agent or host and can be placed into a tool argument.
  • Consent, destination policy, or content controls do not prevent the request.

Attack Flow

  1. Reconnaissance or Setup: The adversary operates or compromises a remote MCP server and exposes a tool whose argument can accept attacker-useful data.
  2. Delivery: Adversarial instructions or another prerequisite influence the agent to obtain sensitive content and place it in that argument.
  3. Trigger or Execution: The client constructs a tools/call JSON-RPC request containing the selected tool and arguments.
  4. Boundary Crossing: The client sends the request body as an HTTP POST to the remote MCP endpoint without effective approval or content blocking.
  5. Objective: The remote server receives the sensitive argument value, completing the bounded confidentiality loss.
  6. Follow-On Activity: Credential use, persistence, additional collection, and further exfiltration are separate behaviors requiring their own evidence and classification.

Example Scenario

An inert test host calls a remote tool at collector.example.invalid; the fixture records only a synthetic sensitivity label and placeholder hash, not a secret. This illustrates the request boundary without supplying an operational receiver or reusable payload.

The following sanitized message mirrors only the protocol shape documented by the MCP Tools specification.

{
  "jsonrpc": "2.0",
  "id": "example-1",
  "method": "tools/call",
  "params": {
    "name": "format_note",
    "arguments": {
      "sensitivity_label": "synthetic-secret",
      "value_hash": "sha256:placeholder"
    }
  }
}

Evidence and Current State

Evidence Summary

Claim IDClaimEvidence StatusSource ID and SourceLimitations
SAF-T1913-C001Current Streamable HTTP uses one POST per JSON-RPC client request.Research-DerivedSRC-mcp-streamable-http-2026-07-28: Streamable HTTPCurrent revision only.
SAF-T1913-C002tools/call carries tool name and arguments.Research-DerivedSRC-mcp-tools-2026-07-28: MCP ToolsMessage shape does not establish authorization.
SAF-T1913-C003POST sends a representation for target-specific processing.Research-DerivedSRC-rfc9110: RFC 9110 §9.3.3Generic HTTP semantics only.
SAF-T1913-C004Sensitive tool arguments cross to a remote MCP server in the POST body.Research-DerivedSRC-mcp-streamable-http-2026-07-28 and SRC-invariant-tpa-2025-04-01: transport, experimentExplicit inference; experiment transport unstated.
SAF-T1913-C005Invariant demonstrated concealed sensitive-data transfer in an MCP tool parameter.DemonstratedSRC-invariant-tpa-2025-04-01: Beurer-Kellner and FischerControlled experiment; transport unstated.
SAF-T1913-C006MCP requires consent for user-data exposure and tool use, but cannot enforce it at protocol level.Research-DerivedSRC-mcp-overview-2026: MCP SpecificationImplementation behavior varies.
SAF-T1913-C007Current requests expose Mcp-Method and Mcp-Name for intermediaries.Research-DerivedSRC-mcp-streamable-http-2026-07-28: request metadataEarlier revisions differ; no content label.
SAF-T1913-C008OpenTelemetry standardizes outbound HTTP method and destination fields.Research-DerivedSRC-otel-http-spans-1.44.0: HTTP client spansApproval and DLP fields are supplemental.
SAF-T1913-C009Correlation of transport, destination, approval, and DLP labels is a defensible analytic.Research-DerivedSRC-attack-m1057-v1.1: Data Loss PreventionSynthetic validation only.
SAF-T1913-C010Metadata alone cannot establish sensitive POST content.Research-DerivedSRC-otel-http-spans-1.44.0: HTTP span attributesProduct telemetry may add fields.
SAF-T1913-C011Approved, trusted exports are the bounded expected lookalike.Research-DerivedSRC-mcp-overview-2026: consent principlesTrust or approval can be wrong.
SAF-T1913-C012CVE-2025-34072 is adjacent link-unfurl exfiltration.DemonstratedSRC-cve-2025-34072 and SRC-cve-34072: CVE record, original disclosureURI and preview-fetch channel, not MCP POST content.
SAF-T1913-C013CVE-2026-15643 is adjacent HealthLake MCP pagination SSRF.DemonstratedSRC-aws-cve-2026-15643 and SRC-cve-2026-15643: AWS bulletin, CVE recordSSRF; CISA ADP recorded no exploitation evidence.
SAF-T1913-C014No exact production, direct-vulnerability, or complete-demo case qualified in the reviewed corpus.Research-DerivedSRC-nvd-fsp-catalog-queries-2026-09-01, SRC-nvd-http-post-query-2026-09-02, SRC-cisa-kev-2026-09-01Bounded corpus conclusion, not universal absence.
SAF-T1913-C015Immediate impact is conditional confidentiality loss.Research-DerivedSRC-invariant-tpa-2025-04-01: Invariant experimentSeverity depends on data and completion.
SAF-T1913-C016Approval, destination filtering, and DLP constrain the transfer.Research-DerivedSRC-mitre-attack-t1048-v1.6 and SRC-attack-m1057-v1.1: T1048, M1057Layered controls retain bypasses.
SAF-T1913-C017Response should contain, preserve, scope, and rotate when credentials are exposed.Research-DerivedSRC-aws-cve-2026-15643: AWS workaround guidanceRotation applies to revocable secrets.
SAF-T1913-C018SSRF differs by unintended-destination request behavior.Research-DerivedSRC-mcp-security-2026-07-28: MCP SSRF guidanceChains can contain both behaviors.
SAF-T1913-C019ATT&CK T1048 is analogous, not direct.Research-DerivedSRC-mitre-attack-t1048-v1.6: T1048ATT&CK does not model MCP message semantics.
SAF-T1913-C020Current POST and header assumptions are protocol-version dependent.Research-DerivedSRC-mcp-streamable-http-2026-07-28: backward compatibilityOlder and custom transports remain possible.

Current State

  • Affected Environments: Remote MCP connections using Streamable HTTP where an agent can populate tool arguments with sensitive data and approval, destination, or DLP controls are ineffective.
  • Known Exploitation: No qualifying direct production incident was identified; the closest tool-parameter result is a controlled demonstration with an unstated transport.
  • Available Protections: Explicit approval, trusted-destination policy, network filtering, and DLP inspection can interrupt the transfer.
  • Residual Risk: Compromised trusted servers, mistaken approvals, transformed data, missing DLP labels, and legacy transports can bypass or blind the example analytic.

Known Breaches and Vulnerabilities

Event or IdentifierDate and EnvironmentImpact and RemediationRelationship to This TechniqueEvidence Limitation
No qualifying direct case identifiedAuthority corpus reviewed 2026-09-02Direct production, vulnerability, and full HTTP-specific demonstration evidence remains a gap.Explicit gapThe bounded searches cannot establish universal absence.
Rank 1: Invariant Tool Poisoning Experiment 12025-04-01; controlled MCP client experimentSensitive MCP configuration and SSH-key content was sent through a hidden tool parameter; researchers recommend UI, pinning, cross-server, and dataflow controls.Selected adjacent component demonstrationThe report does not state the transport and is not a production incident.
Rank 2: CVE-2025-340722025-06-24 disclosure; deprecated Anthropic Slack MCP ServerPrompt injection and link unfurling produced zero-click private-data disclosure; the deprecated server was not expected to receive a fix.Selected adjacent vulnerability and demonstrationData is embedded in a URL and fetched by preview services, not carried as MCP POST content.
Rank 3: CVE-2026-156432026-07-14; AWS HealthLake MCP Server before 0.0.14Crafted pagination could disclose temporary AWS credentials to an arbitrary endpoint; fixed in 0.0.14, with least privilege and rotation guidance.Selected adjacent vulnerabilityThe mechanism is SSRF; CISA ADP recorded exploitation none on 2026-07-15.

Real-World Incidents or Demonstrations

Luca Beurer-Kellner and Marc Fischer's controlled experiment is the closest mechanism evidence: it shows sensitive values concealed in a tool parameter and received by a malicious MCP server. It is not described as a breach, and the unstated transport prevents it from establishing the complete HTTP-specific behavior.

Impact Assessment

DimensionRatingRationale and Conditions
ConfidentialityHighCredentials, private keys, or other high-sensitivity arguments can be disclosed when the request reaches the adversary-controlled server.
IntegrityNoneThe bounded technique ends at data receipt; later use or modification is a separate behavior.
AvailabilityNoneThe bounded transfer does not inherently disrupt service.
ScopeAdjacentOne POST crosses from the host's sensitive context to one remote server; blast radius grows with repeated calls and data access.

Severity Conditions

  • Severity increases when: the agent can reach credentials, private keys, regulated records, or other high-sensitivity data; tools run without intelligible approval; or the destination is untrusted.
  • Severity decreases when: data access is minimized and the request must pass explicit approval, destination allowlisting, and DLP blocking.

Detection Methods

Required Telemetry

SourceEvents or ActionsRequired FieldsCollection Notes
MCP client or gatewayOutbound Streamable HTTP requesttimestamp, client and actor IDs, request ID, Mcp-Method, Mcp-Name, protocol versionNormalize header names case-insensitively and preserve version for legacy handling.
HTTP client spans or egress proxyOutbound request and responsehttp.request.method, server.address, url.full, status code, optional body sizeCorrelate each send attempt; do not assume standard spans expose content.
Approval, trust, and DLP pipelineAuthorization and content-policy evaluationapproval state, destination trust, nonempty sensitive-data classesRetain classifications or hashes instead of raw secret values.

Indicators of Compromise (IoCs)

  • No durable technique-specific IoC was identified; use behavioral correlation because the MCP endpoint and POST method can be legitimate.

Behavioral Indicators

  • A tools/call POST to an untrusted or unknown server carries a positive sensitive-data classification without recorded approval.
  • Repeated POST attempts, new server addresses, or body-size deviation can increase investigative priority but do not independently prove exfiltration.
  • Approval without trusted destination, or trusted destination without approval, remains suspicious under the example rule.

Detection Analytic

The standalone experimental analytic is maintained in detection-rule.yml.

  • Analytic Goal: Identify sensitive tools/call POSTs that lack the combined approval and destination-trust conditions.
  • Rule Status: Experimental; representative synthetic validation only. Detection proof
  • Detection Logic: Match POST plus tools/call plus a nonempty DLP class, then suppress only an approved transfer to a trusted or partner-allowlisted destination.
  • Correlation Window: One request event; repeated attempts may be aggregated by request, actor, client, and destination for triage.
  • Known False Positives: Approved emergency exports, stale trust labels, and overly broad DLP classification.
  • Known Limitations: Missing DLP metadata, transformed content, mistaken approval, compromised trusted servers, legacy revisions, and custom transports can evade or blind the rule.
  • Tuning Guidance: Populate destination trust from controlled inventory, require explicit approval provenance, and tune DLP classes without retaining raw values.

Validation

Mitigation Strategies

Preventive Controls

  1. Intelligible Tool Approval: Show the remote destination, tool name, sensitive data classes, and intended transfer before authorizing the call.
  2. Destination Filtering: Permit remote MCP POST traffic only to inventoried endpoints and treat destination changes as new trust decisions.
  3. Data Loss Prevention: Classify and block unapproved sensitive content before the HTTP request leaves the host or controlled gateway.

Detective Controls

  1. MCP-Aware Egress Telemetry: Record current Mcp-Method and Mcp-Name with standard HTTP client destination fields and protocol version.
  2. Content-Policy Correlation: Alert when a sensitive data class appears without both approval and a trusted destination.

Response Procedures

Immediate Actions

  • Disable or isolate the implicated remote MCP endpoint and stop the affected client session while preserving request identifiers.
  • Revoke or rotate credentials whose classification indicates they may have crossed the boundary.

Investigation Steps

  • Correlate the request, actor, client, server address, tool name, approval record, DLP classes, status, and retries without copying raw secret values into the case record.
  • Determine whether the observed channel was the MCP POST body, URI unfurling, SSRF, or another transfer mechanism, and classify co-occurring delivery or collection separately.

Remediation

  • Remove the adversarial server or unsafe tool, repair approval and destination policy, and add regression fixtures for the observed data class and trust decision.
  • Validate credential rotation and re-run MCP-aware egress detection before restoring the connection.
TechniqueRelationshipDistinction
SAF-T1001: Tool Poisoning AttackPrerequisiteChanges agent intent; SAF-T1913 starts at sensitive argument transfer.
SAF-T1911: Parameter ExfiltrationBroader channelCovers sensitive data placed in tool arguments; SAF-T1913 narrows the channel to a Streamable HTTP POST body sent to a remote MCP server.
SAF-T1902: Response-Borne Covert ChannelAlternativeEmbeds data in a URI and depends on a fetcher rather than an MCP POST body.

MITRE ATT&CK Mapping

ATT&CK IDTechniqueMapping TypeRationale
T1048Exfiltration Over Alternative ProtocolAnalogousT1048 includes HTTP/S transfer to an alternate network location, but does not model MCP tools/call semantics and depends on the relationship to command and control.

References

  1. SRC-mcp-overview-2026: Model Context Protocol Specification, revision 2026-07-28 — consent, data privacy, tool safety, and enforcement limits.
  2. SRC-mcp-streamable-http-2026-07-28: MCP Streamable HTTP, revision 2026-07-28 — POST transport, request body, headers, and backward compatibility.
  3. SRC-mcp-tools-2026-07-28: MCP Tools, revision 2026-07-28 — tools/call, arguments, and approval guidance.
  4. SRC-mcp-security-2026-07-28: MCP Security Best Practices, revision 2026-07-28 — SSRF definition and distinction.
  5. SRC-rfc9110: RFC 9110: HTTP Semantics — Roy T. Fielding, Mark Nottingham, and Julian Reschke, 2022 — POST semantics.
  6. SRC-invariant-tpa-2025-04-01: MCP Security Notification: Tool Poisoning Attacks — Luca Beurer-Kellner and Marc Fischer, 2025 — controlled hidden-argument exfiltration.
  7. SRC-otel-http-spans-1.44.0: OpenTelemetry Semantic Conventions for HTTP Spans 1.44.0 — outbound HTTP telemetry fields.
  8. SRC-mitre-attack-t1048-v1.6: MITRE ATT&CK T1048, version 1.6 — contributors Alfredo Abarca and William Cain — analogous mapping and detection context.
  9. SRC-attack-m1057-v1.1: MITRE ATT&CK M1057, version 1.1 — DLP classification, monitoring, and blocking.
  10. SRC-cve-34072: Anthropic Slack MCP Server Data Exfiltration — wunderwuzzi, 2025 — original adjacent link-unfurl disclosure.
  11. SRC-cve-2025-34072: CVE-2025-34072 — VulnCheck CNA with CISA ADP enrichment — identifier, affected record, and proof-of-concept status.
  12. SRC-aws-cve-2026-15643: AWS bulletin 2026-054-AWS — AWS Security; Marios Gyftos credited — HealthLake MCP SSRF, fixed version, and response guidance.
  13. SRC-cve-2026-15643: CVE-2026-15643 — Amazon CNA with CISA ADP enrichment — affected range and exploitation assessment.
  14. SRC-nvd-fsp-catalog-queries-2026-09-01: NVD CVE API query for Model Context Protocol — 77-record authority-catalog review on 2026-09-02.
  15. SRC-nvd-http-post-query-2026-09-02: NVD CVE API query for HTTP POST exfiltration — three-record authority-catalog review on 2026-09-02.
  16. SRC-cisa-kev-2026-09-01: CISA Known Exploited Vulnerabilities catalog, version 2026.09.01 — exact-ID membership checks with bounded interpretation.

Version History

VersionDateChangesAuthor
1.02026-09-02Clean-room initial technique, evidence packet, and tested detector.OpenAI Codex clean-room agent /root/cleanroom_saf_t1913