ROOTVIELROOTVIEL

Knowledge Base

A technical encyclopedia of security vulnerabilities

Each article explains a vulnerability from first principles — definition, root cause, how the attack works, vulnerable and corrected examples, impact, detection, mitigation and verification — and states plainly how ROOTVIEL handles it, with an honest support level. Nothing is attributed to the platform that its detectors do not actually support.

// support levels: verified · partial · heuristic · hypothesis · educational

“Verified” means a deterministic verifier settled a specific property under stated assumptions — not that the system is secure. Its evidence scope is shown next to it: ◇ structural property (checked over a static graph — no exploit run) or ▶ observed in execution (an effect reproduced in a sandbox). Absence of findings is never proof of absence of vulnerabilities.

Domain · 10

AI, LLM & agents

A language model has no boundary between instructions and data, so any text it reads can steer it. This domain covers prompt injection (direct and indirect), jailbreaks, system-prompt and data leakage, and how adding tools, memory and autonomy turns a prompt-level trick into a real-world action.

Verified by ROOTVIELStructural property
9 min

Excessive Agency

An LLM-based system is granted more capability, permission, or autonomy than its purpose requires, so when any upstream failure (an injection, a hallucination, a bad decision) occurs, the agent can turn it into a consequential action far beyond what the task ever needed.

CWE-272LLM06
Partial
9 min

Insecure Output Handling

A system passes model output into a privileged sink — a shell, a query, a browser, a downstream API — without validating or encoding it first, so the model’s text is trusted as if a human had vetted it and becomes the payload for a classic injection in the consuming component.

CWE-20LLM05
Verified by ROOTVIELObserved in execution
9 min

Jailbreak

A jailbreak is an input crafted to defeat a model’s safety alignment, coercing it into producing content or behaviour its training was meant to refuse — a robustness failure of the defence, not a bug in any line of application code.

CWE-74LLM01
Partial
11 min

Memory Poisoning

An attacker writes attacker-controlled content into an agent’s persistent memory so that it is reloaded on a later turn — or a later session — and steers the agent toward a privileged action. The payload and its effect are separated in time, which is what makes it insidious.

CWE-349LLM01
Partial
9 min

Model Denial of Service

An attacker drives an LLM system to consume resources far out of proportion to a single request — through long inputs, expensive generation, or recursive agent loops — degrading service or inflating cost, because no budget bounds how much a single request may consume.

CWE-400CWE-770LLM10
Verified by ROOTVIELObserved in execution
9 min

Direct Prompt Injection

An attacker places adversarial instructions directly in the user message to override the system prompt, extract hidden context, or coerce the model into behaviour its operator never intended — the canonical failure of treating a single token stream as both instructions and data.

CWE-74LLM01
Partial
11 min

Indirect Prompt Injection

An attacker hides instructions inside content the system will retrieve later — a document, a web page, a tool result — so the payload executes when some other user’s query pulls that content into the model’s context.

CWE-77CWE-74LLM01
Partial
11 min

RAG Poisoning

An attacker writes malicious content into the knowledge base a Retrieval-Augmented Generation system indexes, so that when a legitimate query retrieves it, the planted text enters the model’s context and steers its answer or its actions.

CWE-20LLM08LLM01
Partial
11 min

Retrieval Manipulation

A retrieval layer returns content that either reaches a privileged tool it should never reach, or is not scoped to the identity of the caller — so retrieved data crosses an authorization boundary the system failed to enforce.

CWE-862LLM08LLM02
Verified by ROOTVIELObserved in execution
9 min

System Prompt Leakage

An attacker coerces the model into revealing its system prompt — the hidden instructions, context, and sometimes secrets the operator placed there — turning the prompt from a private configuration into disclosed information an adversary can study and exploit.

CWE-200LLM07

Domain · 9

Agentic architecture

When an LLM plans and calls tools, security becomes a question of authority: what the system is allowed to do, regardless of what the model decides. Here: delegation and the confused deputy, capability and privilege escalation, cross-agent trust, the lethal trifecta, and why enforcement must be deterministic and live outside the model.

Hypothesis / UNKNOWN
12 min

Agent Collusion

Several agents, each individually within its permitted bounds, combine their capabilities through the channels that connect them to reach an outcome no single agent was allowed to reach. The danger is emergent — it lives in the composition, not in any one agent.

CWE-653CWE-200LLM06
Verified by ROOTVIELStructural property
11 min

Confused Deputy

An agent holds privileges and credentials of its own, and acts on attacker-supplied input. When it uses a token outside the audience or scope it was granted — or follows an attacker-chosen URL into cloud credentials — it becomes a deputy tricked into wielding authority it holds but the attacker does not.

CWE-287CWE-522CWE-918LLM06
Partial
12 min

Cross-Agent Prompt Injection

In a multi-agent system, a prompt injection that lands in one agent propagates to another — because one agent’s output is another agent’s input, or because supposedly isolated agents share a writable channel. A single infection becomes a cascade.

CWE-514CWE-653LLM01
Verified by ROOTVIELStructural property
12 min

Data Exfiltration (the Lethal Trifecta)

When one agent can read private data, is exposed to untrusted input, and can egress to the outside world — all three at once — an injected instruction can turn the agent into an exfiltration channel. The three legs together are what make it lethal.

CWE-200CWE-668LLM02LLM06
Verified by ROOTVIELStructural property
11 min

Insecure Agent Delegation

When one agent hands work to another, authority is supposed to narrow, identity is supposed to attenuate, depth is supposed to be bounded, and delegation must not loop. When any of these fails, a sub-agent ends up with more power — or a deeper, cyclic, runaway chain — than the original grant ever intended.

CWE-668CWE-799CWE-834
Partial
11 min

MCP Rug Pull (Tool Drift)

An MCP tool is benign when an operator reviews and approves it, then changes afterwards — its description, schema, or behaviour drifts to something malicious on a later fetch. The approval was for a version that no longer runs; trust granted once is silently inherited by a different tool.

CWE-494LLM03
Heuristic
11 min

MCP Tool Poisoning

A Model Context Protocol server advertises a tool whose name, description, or parameter documentation carries hidden instructions. Because the agent reads that declared metadata into the same context it reasons over, the tool definition itself becomes a prompt-injection vector — before the tool is ever called.

CWE-77LLM01
Verified by ROOTVIELStructural property
11 min

Privilege Escalation Through Agents

An agent ends up exercising authority it was never granted. Comparing three views of its power — what it effectively has, what it actually uses, and what was declared to it — exposes the gap: authority in use or in reach that no grant ever authorized.

CWE-269CWE-272LLM06
Verified by ROOTVIELStructural property
11 min

Tool Output Injection

A tool returns attacker-influenced content, and that content flows into a security-relevant decision — a policy check, an approval, a branch that grants access. The agent trusts a tool result as if it were a trusted fact, so untrusted output steers a decision it should never touch.

CWE-807LLM01

Domain · 25

Web3 & smart contracts

On-chain code is public, immutable and holds value, so a mistake is exploitable forever. This domain maps how protocols actually get broken — reentrancy, oracle and economic manipulation, access control, upgrade/proxy and cross-chain flaws — and treats a finding as proven only when the attack is executed in a sandbox and a deterministic check confirms it.

Verified by ROOTVIELObserved in execution
13 min

Broken Access Control & Authority

A privileged capability — ownership, an admin function, a fund movement — is reachable by someone who was never granted the authority to use it, whether through a missing modifier, an initializer that can be called again, or logic that moves value without checking either authority or entitlement.

CWE-284CWE-862SC01
Verified by ROOTVIELObserved in execution
13 min

Accounting / Vault Share Inflation

A vault derives each depositor’s shares from the ratio of total assets to total shares, and an attacker manipulates that ratio while it is fragile — classically as the first depositor into an empty vault — so later depositors’ shares round down to a value far below what they paid, and the attacker redeems the difference.

SC03
Partial
13 min

Bridge Authorization Failures

A cross-chain bridge accepts an instruction it should not: a forged or inauthentic message passes verification, a validator quorum is manipulated or under-sized, or the destination acts on source state that is not yet final and can be reorganized away.

CWE-287CWE-345CWE-347SC01
Partial
12 min

Cross-Chain Message Replay

A cross-chain message that was meant to execute exactly once on the destination is accepted and executed more than once — because the destination does not bind each message to a unique, consumed identity (per-message nonce) and to the correct source and chain.

CWE-294CWE-345SC02
Verified by ROOTVIELObserved in execution
13 min

Cross-Function Reentrancy

During an external call, control re-enters the contract through a different function that shares state with the one still executing. A guard or CEI check applied to only one entrypoint is bypassed because the attacker never re-enters the same function — they enter its sibling.

CWE-841SC05
Verified by ROOTVIELObserved in execution
13 min

Delegatecall Misuse

delegatecall runs another contract’s code against the caller’s own storage, balance, and identity. If the target address, or the code at it, is attacker-influenced, the attacker’s logic writes the caller’s storage — overwriting owners, pointers, or any slot — and acts as the caller.

CWE-829SC01
Partial
13 min

Denial of Service & Gas Exhaustion

A required operation becomes uncallable: an unbounded loop grows past the block gas limit, a single reverting recipient blocks a whole batch, or a griefer forces a critical path to consume so much gas it can never complete. The harm is unavailability — not, by itself, a loss of funds.

CWE-400SC10
Verified by ROOTVIELObserved in execution
13 min

Token Callback Reentrancy (ERC-721/1155)

Safe-transfer and safe-mint in ERC-721 and ERC-1155 call a hook on the recipient (onERC721Received / onERC1155Received) before the operation’s bookkeeping is complete. A recipient contract uses that hook to re-enter and mint, claim, or buy again while a per-address counter or supply check is still stale.

CWE-841SC05
Verified by ROOTVIELObserved in execution
13 min

Token Semantics: Fee-on-Transfer, Rebasing & Return Values

Protocols that trust the amount they requested to transfer — instead of measuring the balance actually received — and that assume every ERC-20 behaves canonically, break against fee-on-transfer and rebasing tokens, non-standard return values, and the approve/transferFrom race.

CWE-682CWE-840CWE-362SC06
Partial
14 min

Flash-Loan-Assisted Attacks

A flash loan lends an enormous, uncollateralised sum for the duration of a single transaction, on the sole condition that it is repaid before the transaction ends. It is not itself a bug — it is an amplifier that lets anyone wield whale-sized capital for one atomic block of logic, turning a latent flaw (a spot-price oracle, a weak vault invariant, a snapshot-based vote) into a profitable, capital-free exploit.

CWE-345CWE-840SC07SC02
Partial
15 min

Governance Attacks

On-chain governance lets token holders propose and enact changes to a protocol — often including control of its treasury and its own upgradeable code. An attack converts temporary or illegitimate voting power into a permanent, privileged action: borrowing a voting majority for one block, passing a malicious proposal, bypassing a timelock, or exploiting weak quorum, delegation, or proposal-execution checks to seize what the vote was meant to protect.

CWE-284CWE-863CWE-840SC01
Verified by ROOTVIELObserved in execution
13 min

Integer Overflow & Underflow

EVM integers are fixed-width and modular: an arithmetic result that falls outside a type’s range wraps around instead of erroring. Before Solidity 0.8 every operation wrapped silently; from 0.8 on the compiler inserts checks, but unchecked{} blocks, narrowing casts, and inline-assembly arithmetic reopen the same door — a wrapped value can mint balance, zero out accounting, or bypass a bound.

CWE-190CWE-191SC08
Partial
15 min

Lending & Liquidation Logic Failures

A lending protocol holds a simple invariant: every borrow must stay backed by collateral worth more than the debt, and when it slips, liquidation must restore solvency. Failures arise when collateral is mis-valued, interest accrual outruns the backing, or the liquidation path itself is wrong — leaving positions that cannot be liquidated, that over-liquidate the borrower, or that let bad debt accumulate until the protocol is insolvent.

CWE-840CWE-682CWE-345SC03
Verified by ROOTVIELObserved in execution
13 min

Oracle & Price Manipulation

A protocol trusts a price it reads from a manipulable source — typically an AMM’s instantaneous spot reserves — so an attacker distorts that source within a single transaction (often with a flash loan), trades against the protocol at the wrong price, and walks away with more than they put in.

SC02
Verified by ROOTVIELObserved in execution
13 min

Precision Loss & Rounding Errors

The EVM has no floating point and no fractions: every division truncates toward zero. Order of operations, the direction a contract rounds, and tiny residues that accumulate over many calls can all shift value to whichever party the rounding favours — usually the attacker. The result is wrong but in-range, so overflow checks never fire.

CWE-682CWE-1339SC03
Partial
10 min

Protocol Logic & State Violations

A protocol permits an action from a state that its own rules should forbid — a withdrawal while locked, a redeem before maturity, a claim before eligibility — often only reachable through a specific sequence of steps.

CWE-840CWE-691SC09
Partial
13 min

Proxy & Upgrade (Code Authority)

An upgradeable contract delegates its logic to an implementation whose address can be changed; if the authority to change that address is weak, or if an upgrade shifts the storage layout, an attacker can make the proxy run arbitrary code or silently corrupt every stored value — the question is literally "who controls the code this contract executes".

SC01
Verified by ROOTVIELObserved in execution
13 min

Read-Only Reentrancy

A view function returns a stale or self-inconsistent value while the contract is mid-reentrancy. The function itself changes nothing, so a classic reentrancy guard on state-changing paths never trips — but an integrating protocol reads that lying value and makes a real decision on it.

CWE-841SC05
Verified by ROOTVIELObserved in execution
13 min

Reentrancy

A contract makes an external call before it finishes updating its own state, so the callee can call back into the contract mid-execution and act on stale values — classically draining a vault by withdrawing repeatedly before any balance is zeroed.

CWE-841SC05
Partial
13 min

Sandwich Attacks & MEV

Transactions are public in the mempool before they confirm, and whoever orders a block chooses their sequence. MEV — Maximal Extractable Value — is the profit available from that ordering power. A sandwich attack is its signature form: a searcher front-runs a victim’s swap to move the price against them, lets the victim execute at the worse price, then back-runs to sell. The enabling flaw on the contract side is weak slippage protection.

CWE-362CWE-841SC02
Verified by ROOTVIELObserved in execution
13 min

ECDSA Verification & Signature Malleability

ECDSA signatures on Ethereum are malleable — for a valid (r,s,v) there is a second valid (r, n−s, v′) — and ecrecover returns address(0) for bad input; verification code that ignores these facts, or that signs without domain separation and a nonce, can be bypassed or replayed.

CWE-347CWE-20SC01
Verified by ROOTVIELObserved in execution
13 min

Signature Replay & Authorization

A contract accepts an off-chain signature as authorization but fails to bind it to a single use, a single contract/chain, or the right signer — so a valid signature can be replayed: submitted again, reused on another contract or chain, or accepted from the wrong recovered address.

CWE-294SC01
Verified by ROOTVIELObserved in execution
13 min

Proxy Storage Collisions

An upgradeable proxy and its implementation contract disagree about what lives at a given storage slot, so a write meant for one variable silently overwrites another — corrupting ownership, balances, or the implementation address itself — most often after an upgrade changes the layout.

CWE-668CWE-843SC05
Verified by ROOTVIELObserved in execution
12 min

Unchecked External Calls

A low-level call, send, or an external interaction whose success boolean (or revert) is ignored. The call silently fails, execution continues as if it succeeded, and the contract’s accounting diverges from reality — recording a payout that never happened.

CWE-252SC06
Verified by ROOTVIELObserved in execution
12 min

Uninitialized / Re-initializable Proxy

Upgradeable contracts replace constructors with an initializer function; if that function is not protected against repeated or late invocation, anyone can call it to become owner, set critical parameters, or seize an implementation contract left uninitialized behind a proxy.

CWE-665CWE-284SC01

Domain · 7

Application & code

The classic application weaknesses — injection, deserialization, SSRF, broken access control, secrets and supply chain — reasoned about as real, reachable dataflows from an untrusted source to a dangerous sink, not as isolated pattern matches.

Heuristic
11 min

Hardcoded Secrets

A credential — an API key, password, token, or private key — is embedded directly in source code, configuration, or build artifacts, so anyone who reads the code or a leaked copy of it obtains a working secret that is hard to rotate and easy to miss.

CWE-798A07:2021-Identification and Authentication FailuresA05:2021-Security Misconfiguration
Educational
12 min

Insecure Deserialization

An application reconstructs objects from untrusted serialized data using a deserializer that can instantiate arbitrary types and run code during reconstruction, so a crafted payload drives the program’s own classes into a malicious computation — often remote code execution.

CWE-502A08:2021-Software and Data Integrity Failures
Educational
12 min

OS Command Injection

An application builds a system shell command from untrusted input and hands it to a shell, so shell metacharacters in the input are interpreted as syntax — letting the attacker run arbitrary commands with the privileges of the application process.

CWE-78A03:2021-Injection
Educational
11 min

Path Traversal

An application builds a filesystem path from untrusted input without restricting it to an intended directory, so traversal sequences let the attacker read or write files outside that directory — configuration, secrets, source code, or arbitrary locations on the host.

CWE-22A01:2021-Broken Access Control
Educational
12 min

Server-Side Request Forgery (SSRF)

An application makes an outbound request to a URL it takes from untrusted input, so the attacker aims the server’s own network position at internal services, cloud metadata, or arbitrary hosts — reaching resources a direct external request never could.

CWE-918A10:2021-Server-Side Request Forgery (SSRF)
Educational
12 min

SQL Injection

An application builds a SQL statement by concatenating untrusted input into the query string, so the data crosses into the command and the attacker rewrites the query — reading, modifying, or destroying data the application never intended to expose.

CWE-89A03:2021-Injection
Educational
11 min

XML External Entity (XXE)

An XML parser processes untrusted documents with external entity resolution enabled, so a crafted DOCTYPE declaration makes the parser fetch local files or network resources — leaking files, forging server-side requests, or exhausting resources.

CWE-611A05:2021-Security Misconfiguration

Domain · 6

Infrastructure & systems

Container, cloud/IaC, host, network, TLS and runtime exposure, where a single misconfiguration matters because of the attack path it opens — for example what an over-permissioned role or an exposed service actually enables downstream.

Educational
12 min

Container Escape

A process inside a container breaks the isolation boundary and gains code execution on the host — because the container ran with excess kernel capabilities, a shared namespace, a sensitive host mount, or a vulnerable runtime, turning containment into a thin, bypassable fence rather than a trust boundary.

CWE-269CWE-250A05:2021
Educational
11 min

Exposed Management Service

An administrative interface, database, dashboard or management API is reachable from an untrusted network — often the public internet — when it should have been confined to an internal network or a bastion, so attackers can reach a high-value control surface directly and attack its authentication at will.

CWE-284CWE-668A05:2021
Heuristic
12 min

IaC & Cloud Misconfiguration

A cloud resource is provisioned with an insecure default or an overly open setting — a public storage bucket, a security group open to the whole internet, encryption or logging left off — usually baked into infrastructure-as-code, so the mistake is deployed consistently and at scale instead of being a one-off slip.

CWE-1032CWE-16A05:2021
Heuristic
13 min

Insecure TLS Configuration

A service negotiates TLS with obsolete protocol versions, weak cipher suites, or without properly validating the peer’s certificate — so the confidentiality, integrity or authentication TLS is supposed to guarantee is undermined, leaving traffic open to decryption or a machine-in-the-middle.

CWE-326CWE-327CWE-295A02:2021
Heuristic
12 min

Over-privileged IAM Role

A cloud identity — a role, user or service account — is granted far more permission than its job requires, often through wildcard actions or resources, so a single compromise of that identity becomes broad account access and any mistake it makes has an outsized blast radius.

CWE-269CWE-732A05:2021
Heuristic
11 min

Privileged Container

A container is run with privileged mode or broad added capabilities, so the process inside holds most of the host kernel’s authority — turning an ordinary workload compromise into host-level control, because the isolation that a container normally provides was switched off at launch.

CWE-250CWE-732A05:2021