Prompt Injection Now Has ATT&CK IDs: T1698, T1699, T1700

What the three new MITRE IDs mean, which of them has a published detection, and what an app builder can log and test today.

Timothy Lindblom

Founder, Newly

Published Last updated

MITRE ATT&CK v20, released October 13, 2026, gave prompt injection its own technique IDs: T1698 for indirect injection, T1699 for direct injection and T1700 for AI-enabled exfiltration. Of those three, only T1700 has a MITRE detection strategy so far. If your app has an AI feature, use the IDs as labels for what you log and test, and mark each one detected, unknown or confirmed by owner evidence.

What did MITRE add in ATT&CK v20?

ATT&CK is MITRE's catalog of how attackers behave, used by security teams to name what they see. The v20 release notes list the new AI entries below. SecurityWeek reported on October 19 that the release also adds 15 detection strategies (6 Enterprise, 9 ICS) backed by 38 analytics.

IDNameTacticLast modified
T1698Indirect Prompt InjectionExecution (TA0002)October 12, 2026
T1699Direct Prompt InjectionExecution (TA0002)September 22, 2026
T1700AI-Enabled ExfiltrationExfiltration (TA0010)October 9, 2026
T1608.007AI Result PoisoningResource Development (TA0042)October 7, 2026

Checked on MITRE's pages on October 24, 2026. The first three are version 1.0 and list SaaS and Windows as platforms.

What does each ID mean for an app with an AI feature?

MITRE writes for organizations defending their own AI agents. If you ship an app with a chat or assistant feature, you are the one running that agent, so the same three steps apply to your request path.

Request path of an app with an AI feature: user text enters at T1699, fetched content enters at T1698, the model calls tools, and data leaving through a tool is T1700.Signed-in usertypes a messageOutside contentpage, file, email, ticketYour AI featuremodel plus its promptTools and datadatabase, email, filesOutside destinationURL, address, repositoryT1699T1698T1700Detection points: log the source of every input, every tool call and every destination.
Where the three IDs sit in the request path of an app with an AI feature.

T1699: the person using the app is the source

MITRE describes input typed straight into the model's interface to bypass safeguards or force behavior you did not intend. Its mitigation text says to prevent user-supplied prompts from directly authorizing consequential actions, and to tie interactions to authenticated identities. In your app, that means the model should never be the thing that decides whether a user may do something.

T1698: the content the model reads is the source

Here the instructions sit in web pages, documents, emails, tickets or code that the model retrieves later. The user never typed them. MITRE lists independent authorization for requests that come from content, dedicated agent identities with minimal permissions, and limited network access for agents that read untrusted content. The inbox assistant page and the web form to CRM case show what this looks like in practice.

T1700: the way out is the source

T1700 covers an injected agent using its tool connections to move data out. MITRE notes that other exfiltration techniques then apply to the transfer itself. A chat window that renders images from model output is a small example; the advisory for CVE-2026-22551 describes it in an AI chat product, fixed in version 1.71.0. Our page on the content security policy fix covers the setting.

Which of these IDs come with a MITRE detection?

At our check on October 24, 2026, MITRE's detection strategies list has none for T1698 or T1699. It has DET0927 for T1700 and DET0922 for AI Result Poisoning.

IDMITRE detection at Oct 24, 2026What you can log in your own app
T1698None listedA source label on every piece of text sent to the model: user, upload, fetched page, email, database row
T1699None listedThe signed-in user ID, a per-user message count and any refused or blocked request
T1700DET0927, with a SaaS analytic (AN2078) that looks for an agent reading protected data, calling a tool with it and a destination recording a transfer outside authorized flowsTool name, user, destination host and size of each tool call, with secrets and message bodies left out
T1608.007DET0922, which says there is no target-side behavioral analyticIf the feature searches the web, the list of domains it read from

The IDs are most useful as shared words. When you write an incident note, a ticket or a message to a client or an agency partner, "a T1698 path reached the support-ticket tool" says where the injected text came from and which step to fix. It also lets you search other people's reports for the same label. Use them for naming, and keep the evidence next to the label: the log line, the tool call and the date.

T1608.007 is different. It happens on the public web, before any of your code runs, and MITRE says a defender cannot reliably tell it from ordinary publishing. If your AI feature browses or searches, the practical control is the same as for T1698: treat what it reads as untrusted and keep its permissions small.

What a missing detection means

No published detection for T1698 and T1699 does not mean the behavior cannot be seen. It means nobody has written a shared rule yet, so your own logs are the evidence. The right column is our suggestion, not MITRE's.

What should you check in your own app this week?

OWASP's LLM01:2026 Prompt Injection covers direct and indirect injection in one entry and lists controls such as holding credentials in application code and requiring human confirmation before privileged or irreversible actions. OpenAI's agent safety guide adds structured outputs between steps, so there is no free-text channel to abuse. CISA's May 2026 agentic AI guide says to avoid broad or unrestricted access to sensitive data. Turned into five checks:

  1. List the inputs. Search your server code for every call to the model and write down where its text comes from. Anything that is not the signed-in user's own message is T1698 territory.
  2. List the tools. For each one, find which credential it uses. A service key that can read every user's rows lets one injected request reach all of them. Call each tool as a second test account.
  3. Find the exits. Any tool that fetches a URL, sends an email or message, writes to a repository or renders a remote image is a T1700 route. Restrict it to hosts you name.
  4. Search your env files for EXPO_PUBLIC_. Expo's docs state that these values are visible in plain text in the compiled app. A provider key there lets anyone call the model without your prompt, your limits or your logs, and AI inside a Newly app uses credits.
  5. Add the log fields from the table above and read one day of them. Look for tool calls to hosts you did not expect.

The wider list, including a hands-on chat test, is in the 15-minute chatbot self-test, and the pre-launch review puts it next to the other checks. If your tools are MCP servers, use the MCP authorization checklist. The overview is Is my AI-built app secure?

Where do you stand?

Every item starts as unknown. Move one to confirmed only when you hold the evidence listed under it. A scan from outside cannot move any of these for you, because the model's behavior and your server logs are not visible from a public request.

Your prompt injection check, by ATT&CK ID

  • Detected: You found the problem.
  • Unknown: Not checked yet, or the check could not tell.
  • Confirmed by owner evidence: You checked and kept the proof.
  1. 1. You can list every place text reaches the model from other than the signed-in user, and each one is labeled in your logs.

    Evidence: the list of sources (uploads, fetched pages, email, tickets, database rows) and a sample log line showing the source label.

  2. 2. Every tool the model can call runs with the signed-in user's permissions, not a service key that can reach more.

    Evidence: the tool list with the credential each tool uses, and the result of calling each one as a second test account.

  3. 3. Actions that send, delete, pay or share need a tap from the user before they run.

    Evidence: a screen recording or screenshot of the confirmation step.

  4. 4. Anything the model can fetch, send or render goes to an allowlist of hosts, and chat messages do not load remote images from model output.

    Evidence: the allowlist in your code and your content security policy or image rule.

  5. 5. No AI provider key sits in an EXPO_PUBLIC_ variable, and each user has a message limit.

    Evidence: the list of public variables from your env files and the limit setting.

  6. 6. Tool calls are logged with user, tool name and destination host, with secrets left out of the log.

    Evidence: one redacted log entry for a real tool call.

0 detected6 unknown0 confirmed by owner evidence

Your answers stay in this browser tab. Nothing is saved or sent.

Frequently asked questions

Which ATT&CK ID is direct prompt injection and which is indirect?

T1699 is Direct Prompt Injection: text a person types into the model's interface. T1698 is Indirect Prompt Injection: instructions placed in content the model later reads, such as a web page, document, email or ticket. The order is easy to swap, so check the ID before you write it into a report.

Does ATT&CK v20 tell me how to detect prompt injection?

Not directly. At our check on October 24, 2026, the pages for T1698 and T1699 list mitigations but no detection strategy. T1700, AI-Enabled Exfiltration, has DET0927 with three analytics. For the other two, detection comes from the logs your own app keeps.

Is my mobile app in scope for these techniques?

The techniques list SaaS and Windows as platforms and describe enterprise AI agents. An app you built with an AI feature still has the same pattern: a model that reads text and can call tools. The IDs give you shared labels. MITRE does not list mobile as a platform, and this page does not claim a mapping to Expo or React Native apps.

Can a good system prompt stop prompt injection?

It lowers the odds and does not close the problem. OWASP's 2026 entry says language models make no architectural distinction between instructions and data, and lists holding credentials and state-changing power in application code, not in the model, as a control. Limit what a successful injection can reach.

What is T1608.007 AI Result Poisoning and does it affect me?

It describes publishing web content to steer how AI search and assistants answer. MITRE notes it happens outside enterprise defenses and that a defender cannot reliably tell it from ordinary publishing. It matters to your app only if the AI feature searches the web and acts on what it finds.

Does a red.run.cloud scan find prompt injection?

No. The free scan reads the stack your site serves and matches versions to known vulnerabilities, and the full scan looks for reachable paths from outside. Neither one reads your model's behavior or your server-side logs, so prompt injection stays unknown until you have your own evidence.

Sources

All sources were opened on October 24, 2026. Back to the security hub.

  1. ATT&CK v20 release notes, October 13, 2026, MITRE ATT&CK
  2. T1698 Indirect Prompt Injection, MITRE ATT&CK
  3. T1699 Direct Prompt Injection, MITRE ATT&CK
  4. T1700 AI-Enabled Exfiltration, MITRE ATT&CK
  5. T1608.007 Stage Capabilities: AI Result Poisoning, MITRE ATT&CK
  6. DET0927 Detect AI-Enabled Exfiltration, MITRE ATT&CK
  7. DET0922 Detection of AI Result Poisoning, MITRE ATT&CK
  8. ATT&CK detection strategies list, MITRE ATT&CK
  9. MITRE ATT&CK v20 catalogs AI abuse, October 19, 2026, SecurityWeek
  10. OWASP Top 10 for LLM Applications 2026, OWASP GenAI Security Project
  11. LLM01:2026 Prompt Injection, OWASP GenAI Security Project
  12. Safety in building agents, OpenAI developer docs
  13. Careful Adoption of Agentic AI Services, May 1, 2026, CISA
  14. GHSA-qwjm-9c66-w4q4 (CVE-2026-22551), markdown image exfiltration, GitHub Advisory Database
  15. Environment variables in Expo, Expo docs

Continue Learning