Why a taxonomy session is not a poster session
A taxonomy earns its place in an engagement in exactly one way: it is the completeness check you run after open-ended exploration, so that the report can say which surfaces were explored and which were not. That is the fourth of the four things a report may claim, and it is the only one a taxonomy can supply. Everything on this page exists to make that fourth claim honest.
OWASP Top 10 for LLM Applications, 2026 edition 8 min live
Here is the whole list, with where each item sat in the previous edition. Read the right-hand column first. Four rows in it are the reason this session exists.
| ID (2026) | Title | Where it was in 2025 |
|---|---|---|
| LLM01:2026 | Prompt Injection | LLM01 - steady at the top |
| LLM02:2026 | Sensitive Information Disclosure | LLM02 - steady |
| LLM03:2026 | Excessive Agency | LLM06 - up 3 |
| LLM04:2026 | Supply Chain | LLM03 |
| LLM05:2026 | Data and Model Poisoning | LLM04 |
| LLM06:2026 | Unbounded Consumption | LLM10 - up 4 |
| LLM07:2026 | Misinformation | LLM09 |
| LLM08:2026 | Hidden Context Exposure | LLM07 System Prompt Leakage - renamed and re-scoped |
| LLM09:2026 | Vector and Embedding Weaknesses | LLM08 |
| LLM10:2026 | Improper Output Handling | LLM05 - down 5, the furthest fall |
How the 2026 ranking was made, and why it is the best teaching moment on this page
The ranking is 75% community vote and 25% incident data, and the incident half was drawn from 7,714 real incidents, of which 6,639 were classifiable. That is a serious evidence base by the standards of this field. Now the part worth stopping on.
Ranked by raw incident count alone, Prompt Injection falls out of the top 10 entirely. OWASP kept it at number one anyway, and published its reasoning: the absence is read as a defence effect. Mature teams spend real money holding injection off, so comparatively few clean exploits reach public incident databases. Meanwhile Misinformation was voted near the bottom by the community but sits near the top of the incident record - the opposite failure, a risk practitioners underrate and reality does not.
The lesson generalises past OWASP and into your own dashboard: an incident count measures what got through AND what got reported. It does not measure what is dangerous. The same distortion is why a quiet quarter in your own incident tracker is not evidence that a class is under control, and why "we have never seen this" is not a finding.
OWASP Top 10 for Agentic Applications, and the boundary rule 6 min live
There is a second list, released in December 2025, running ASI01 to ASI10. It is not a replacement and not a subset. The two lists divide the ground by a rule worth memorising, because it decides which taxonomy your finding belongs in and therefore who reads it.
| ID | Title |
|---|---|
| ASI01 | Agent behaviour / goal hijack title unconfirmed |
| ASI02 | Tool Misuse and Exploitation |
| ASI03 | Identity and Privilege Abuse |
| ASI04 | Agentic Supply Chain |
| ASI05 | Unexpected Code Execution |
| ASI06 | Memory and Context Poisoning |
| ASI07 | Insecure Inter-Agent Communication |
| ASI08 | Cascading Failures |
| ASI09 | Human-Agent Trust Exploitation |
| ASI10 | Rogue Agents |
ASI01_Agent_Behaviour_Hijack.md and the December announcement says "Agent Behavior Hijacking", while secondary coverage of the final release says "Agent Goal Hijack". Until the released PDF is checked, write it as "ASI01 (agent behaviour / goal hijack)". This is a small thing and it is also the whole discipline: a course that guesses one title will guess a number later. The ASI02 to ASI10 titles above come from draft filenames plus agreeing secondary summaries, so treat them as strong but not primary.
Applied to Beacon: the Analyst Bot writing SQL that a warehouse executes is squarely an LLM-list problem right up until you notice the query runs with a credential, at which point ASI03 Identity and Privilege Abuse joins LLM10:2026 Improper Output Handling on the same finding. The Support Bot that can issue a refund credit is an actor by any reading, so its worst findings will carry ASI02 alongside LLM03:2026. The Insight Bot caches what it reads, which is ASI06 Memory and Context Poisoning territory even though nothing it does looks agentic in a demo.
MITRE ATLAS, and the two fields that turn it into a test plan 8 min live
OWASP gives you categories. ATLAS gives you techniques with IDs you can put in a ticket, tactics that say where in an operation a technique sits, and - new in the version 6 schema - an evidence grade that tells you what to test first.
dist/v6/ATLAS-2026.07.yaml dataset that the site is built from, which is the strongest available source, but the rendered site may lag or lead it. So never write "ATLAS has 178 techniques". Write "ATLAS dataset 2026.07 has 178 techniques". The discipline costs you four words and saves you an argument.
The two v6 fields worth building a workflow around
maturitygrades the evidence behind a technique: Realized 68, Demonstrated 92, Feasible 18. Realized means it has been observed in the wild. That is a ready-made test-prioritisation axis and you should use it exactly that way - test Realized first, put Demonstrated on the watch list, and let Feasible sit in the backlog until something changes. It is the cheapest defensible ordering argument you will ever get to make to a stakeholder who wants everything tested at once.platformsshows Agentic AI 119, Generative AI 92, Predictive AI 70, Enterprise 61. Agentic AI is now the largest tag in the dataset. If your inventory says you have "a chatbot" and your ATLAS coverage is drawn from the Generative AI tag alone, you are working from the smaller half of the map.
ATT&CK-reference in v5 to attack-reference in v6. Tooling written against v5 silently returns null mappings rather than erroring, so a coverage report built on it will show a clean, confident, entirely empty ATT&CK column. Only 37 of 178 techniques carry a cross-reference at all, which makes an all-null result look plausible. Check one known-good technique by hand before you trust any automated mapping.
The technique IDs for Beacon's surface
These are the rows you will actually cite in findings for the rest of the builder track. All verified from the 2026.07 dataset.
| ID | Name | Tactic | Maturity |
|---|---|---|---|
AML.T0051(.000 Direct, .001 Indirect, .002 Triggered) | LLM Prompt Injection | Execution | Realized |
AML.T0054 | LLM Jailbreak | Defense Evasion, Privilege Escalation | Realized |
AML.T0053 | AI Agent Tool Invocation | Execution, PrivEsc, Lateral Movement | Demonstrated |
AML.T0086 | Exfiltration via AI Agent Tool Invocation | Exfiltration | Realized |
AML.T0080 (.000 Memory, .001 Thread) | AI Agent Context Poisoning | Persistence | Demonstrated |
AML.T0110 (.000 / .001 / .002) | AI Agent Tool Poisoning | Persistence | Realized, no mitigation mapped |
AML.T0070 / AML.T0071 | RAG Poisoning / False RAG Entry Injection | Persistence / Defense Evasion | Demonstrated |
AML.T0056 / AML.T0057 | Extract LLM System Prompt / LLM Data Leakage | Exfiltration | Feasible / Demonstrated |
AML.T0084 (.000-.003) | Discover AI Agent Configuration | Discovery | Demonstrated |
AML.T0077 | LLM Response Rendering | Exfiltration | Demonstrated, no mitigation mapped |
AML.T0098 / AML.T0082 / AML.T0083 | Credential harvesting via tools / RAG / agent config | Credential Access | Demonstrated |
AML.T0101 | Data Destruction via AI Agent Tool Invocation | Impact | Realized |
AML.T0109 | AI Supply Chain Rug Pull | Defense Evasion | Realized, no mitigation mapped |
AML.T0034.002 | Agentic Resource Consumption | Impact | Feasible |
AML.T0061 | LLM Prompt Self-Replication | Persistence | Demonstrated |
NIST AI 100-2e2025 - the objective layer above both
NIST's adversarial ML taxonomy classifies by what the attacker is trying to achieve, which is the layer that survives when the technique names change. Five objectives: NISTAML.01 Availability Breakdown, .02 Integrity Violation, .03 Privacy Compromise, .04 Misuse Enablement - GenAI only, and .05 Supply Chain. Attacks are then classified on five axes: system type, lifecycle stage, properties violated, attacker capability and access, and attacker knowledge.
Two structural points to carry forward. First, NIST taxonomises predictive AI and generative AI separately, and the separation is not cosmetic - the attack surfaces genuinely differ, and a control inventory written for one does not transfer. Second, .04 Misuse Enablement exists only on the GenAI side, because it is the objective that has no predictive-model analogue: the attacker is not corrupting your system, they are using it as a capability. That distinction is why misuse findings so often fall between the security team and the trust-and-safety team, and why b1 asked you to name the two tracks and their owners before the engagement starts.
Map Beacon's surface, four framework references per row ★ 10 min · everyone builds
A taxonomy that lives in a slide is decoration. A taxonomy that lives in the test-case schema is infrastructure, because every finding then arrives carrying the IDs a reviewer needs to place it. Build the schema now and the rest of the builder track just fills it in.
Start from the eight classes, not from the frameworks. Direct injection, indirect injection, refusal bypass, sensitive information disclosure, excessive agency and tool abuse, improper output handling, context and memory poisoning, unbounded consumption. Eight rows. This is the working set for the whole course and it is deliberately smaller than any of the official lists, because a class you cannot write a test for is not doing work in an engagement.
Give every row its OWASP 2026 ID. Use the table in Part 1 and check yourself against the version trap: improper output handling is LLM10:2026, not LLM05. Excessive agency is LLM03:2026, not LLM06. Unbounded consumption is LLM06:2026, not LLM10. If your row for context poisoning says LLM04, you have copied from a 2025 source.
Add the agentic ID where the boundary rule says it applies. For the Support Bot, context poisoning also carries ASI06 and tool abuse also carries ASI02, because that bot is an actor. For a read-only bot with no tools, leave the agentic column empty and say why in a comment. An empty cell with a reason is documentation; an empty cell without one is an oversight.
Add the ATLAS technique ID and copy its maturity across. The maturity value is the field you will sort by when the schedule slips, so it belongs on the row rather than in someone's head. Mark the rows where ATLAS has no mitigation mapped with a flag of its own - those rows cannot be closed by pointing at a control, only by bounding a consequence.
Add the NIST objective. One of the five. This is the column your executive summary is written from, because "an integrity violation on the refund path" survives a framework version change and "AML.T0051.001" does not.
Add the trial protocol and the defence reference. N from b1, result recorded as k of N rather than a boolean, and the name of the control that is supposed to hold this class. That last field is what turns the suite into a regression test in b10: when a control is removed or reconfigured, you know exactly which rows to re-run.
mitigation_gap. When ATLAS maps no mitigation to a Realized technique, there is no control to point at during the harden-and-retest round, and a team that discovers this at retest time has already promised someone a fix. Flag it at mapping time and the conversation happens while options still exist.
Read the effectiveness matrix, top row first ★ 8 min · together
Here is the same eight-class taxonomy from the other side: not what an attacker does, but what each control actually removes. Read the top row before anything else. It belongs to the control every team reaches for first, and it is the only row on the board with zeroes in it.
Find the zeroes. The system-prompt instruction telling the model to ignore injected commands scores a flat zero against indirect injection, context and memory poisoning, improper output handling and unbounded consumption. Not a small number - zero. That encodes the consistent published position that instruction-level defences do not solve injection, and it is deliberately not softened.
Ask why those four classes specifically. They are the classes where the hostile text does not arrive from the person talking to the bot. A system-prompt instruction is being asked to police text that arrives looking exactly like the text it is meant to obey, from a source it cannot verify. The failure is architectural, so no rewording of the instruction changes the row.
Now read down the columns with the big numbers. Least-privilege scoping at 0.75 against excessive agency. Human approval at 0.85. Sandboxed execution at 0.80 against improper output handling. Rate and spend caps at 0.85 against unbounded consumption. Every large number on this board belongs to a control that removes a capability rather than requesting good behaviour. That is OWASP's design philosophy from Part 1, showing up as arithmetic.
Take the working conclusion into b3. The next session is the class with the zeroes running through it. You already know from this matrix that the fix will not be a better instruction, so the question b3 actually has to answer is what the measured limits of the real defences are - and what a defender does about the gap that remains after all of them.
Try it yourself - this week ◐ 45-60 min total
- Search your own wiki, tickets and slide decks for "LLM05". Every hit that means improper output handling is a document written against the 2025 list. You are not looking for errors so much as for how old your internal mental model is.
- Fill the schema from Demo 1 for one real system you own. Eight rows, four framework references each. The rows you cannot fill are the more interesting output.
- Pull the ATLAS
maturityfield for the techniques on your rows and sort by it. Write down the Realized ones. That list, not your instinct, is your test order for the first sprint. - Find every Realized technique on your map with no mitigation mapped and, for each, write the one sentence describing what bounds the consequence today. If the sentence is "nothing", you have found the first item for b9.
- Check one automated ATLAS mapping by hand against the dataset. If your tooling predates the v6 rename, the ATT&CK column will be quietly empty rather than wrong, which is harder to notice.
Official sources covered
Every framework, figure and quotation on this page traces to a primary source catalogued in this course's source map, verified 2026-08-14. This page covers:
2026/final/maturity (Realized 68 / Demonstrated 92 / Feasible 18) and platforms (Agentic AI 119 largest)Part 3 · [P] · the test-prioritisation axisATT&CK-reference to attack-referencePart 3 · [P] · v5 tooling returns null silentlyThree questions before you go 🎯 ◐ 90 seconds
1 · A well-written vendor page lists Improper Output Handling as LLM05. What have you learned about the page?
This one ID is the fastest version check available, because it moved five places, further than anything else. The useful move is not to correct the number but to distrust the rest of the page: mitigations, severity guidance and coverage claims written against the 2025 list will also be a year stale. Three other IDs moved too - Excessive Agency up to LLM03:2026, Unbounded Consumption up to LLM06:2026, and System Prompt Leakage renamed and re-scoped to LLM08:2026 Hidden Context Exposure.
2 · Ranked by raw incident count alone, Prompt Injection drops out of the OWASP top 10 entirely, and OWASP keeps it at number one. What is the transferable lesson?
The mirror image is on the same list: Misinformation was voted near the bottom and sits near the top of the incident record. Two opposite distortions from the same dataset. Carry this into your own dashboard - a quiet quarter in your incident tracker is not evidence a class is under control, it is a measurement of what reached you and got written down. This is the same absence-of-evidence problem that runs through the whole course, arriving here as a ranking methodology rather than as a test result.
3 · Your ATLAS mapping shows several Realized techniques with no mitigation mapped at all - T0110 Tool Poisoning, T0109 Rug Pull, T0077 among them. What is the correct response?
Option C inverts the maturity field: Realized is the strongest evidence grade in the dataset, meaning observed in the wild. Option B is the more tempting error, because a complete-looking column passes review - but a borrowed mitigation that nobody has evaluated against this technique is a claim you cannot support, and it hides exactly the row a reader most needs to see. The honest move is to flag it at mapping time, before anyone has been promised a fix, and let the blast-radius limits from b1 carry the weight.