In short. Planted log lines could make an AI defender block your own payment gateway, with a tool it’s allowed to use. By our untested reasoning, a tool allowlist would let that block through, and a strict data-flow rule would hold it, along with routine blocks whose targets came from alerts. We propose a rule outside the model that checks each target against the network sensor’s own record before the agent blocks it.
What this is. A report from primary sources, from a 2007 attack write-up and its NVD record to the AgentDojo, CaMeL and PACT papers. Every benchmark number is its authors’. The comparison of the three guards is our own reasoning.
Contents
The attacker only has to choose the target
In 2007 Daniel Cid opened a raw SSH connection. In place of a version string, he sent a line dressed as a log message, with a made-up address in it [8]. The server logged it, with his real address at the end of the line.
DenyHosts, a tool that bans addresses it finds in that log, banned the made-up one. Then Cid put the word all where the address had been. DenyHosts wrote sshd: all to /etc/hosts.deny and locked every SSH client out.
DenyHosts used the one action it was built for, a ban. It still did the attacker’s work. Cid only had to plant a host where its loose pattern would find it. We call this the planted target, a permitted action aimed at a target the attacker planted in the evidence.
DenyHosts was not alone. Cid, who disclosed that he wrote a rival tool, reported the same kind of weakness in BlockHosts and fail2ban [8]. The National Vulnerability Database record for fail2ban, CVE-2007-4321, describes the flaw [7]. The appendix gives its details.
Now give a similar job to an AI agent. Suppose planted log lines make your own payment gateway look like the source of an attack. An agent built to block attackers would block the gateway, with a tool it’s allowed to use.
We think an AI defender that takes its targets from alerts inherits the DenyHosts flaw. We also think permitted mistakes like this one are the hardest for an AI defender to stop.
We expect the two usual guards to fail in opposite directions
Three guards could stand between the agent and that block. Two are the usual ones. The third, the sensor check, is ours.
Every verdict on these guards, here and in the next section, is our own reasoning about two hypothetical blocks. Neither we nor any source we reviewed has tested either one. Two hypotheses behind these verdicts are unmeasured too. One is that in defense a task’s own tools usually suffice for the attack. The other is that a defender’s targets often come from alerts.
| Guard | What it does | Planted block of your gateway | Routine block of a real attacker |
|---|---|---|---|
| Tool allowlist (AgentDojo’s filter) | Limits which tools the agent may use | Would go through | Would go through |
| Strict data-flow rule (CaMeL) | Tracks where each value came from | Would be held for a person | Would also be held, if its target came from an alert |
| Sensor check (ours) | Looks for the target in the sensor’s own records | Would be held, if the records don’t name the gateway | Could go ahead, if the attacker’s address is in them |
The allowlist would fail open. The data-flow rule would fail closed. The sensor check might pass both cases.
A tool allowlist would let the planted block through
A tool allowlist limits the tools an agent may use on a task. AgentDojo, a benchmark for tool-using agents, tests one. The model picks the list for each task before it reads untrusted data [3]. The planted block would go through, since blocking is the agent’s job.
AgentDojo’s tasks are all general assistant work. Its authors say their filter fails when the task’s own tools suffice for the attack, as in 17% of AgentDojo’s test cases. It also fails, they say, when nobody can plan the list in advance. They credit part of its success to cases where the task only reads data but the attack must change something [3]. Containment always changes something, so we don’t expect that read-only advantage to help a defender.
A strict data-flow rule would also hold routine blocks whose targets came from alerts
A strict data-flow rule tracks where each value came from. CaMeL is one such design. It keeps the agent’s plan apart from the data it reads. It checks each value’s permissions when the agent calls a tool [4]. This guard would hold the planted block for a person, since the address came from untrusted log lines. It would also hold a routine block whose target came from an alert.
CaMeL’s design already holds some benign actions. In its own example, the agent is about to email a document to an address from untrusted meeting notes. If the recipient can’t already read the document, the agent asks the user first. It asks even without an attacker [4].
If a defender’s targets often come from alerts, a strict data-flow rule sends routine work to a person, and containment becomes a queue.
A check against the sensor’s own record might pass both cases
The sensor check is a rule outside the model. Before the agent blocks an address from an alert, the rule looks for it in the network sensor’s own records of the event, such as flow records. If the address isn’t there, the rule refuses the block or sends it to a person, however convincing the alert.
Here is an illustration, with made-up addresses. Suppose planted log lines say the attack came from 10.0.0.5, your payment gateway. Suppose the sensor’s flow records of the attack traffic show 203.0.113.7 as its source and don’t name 10.0.0.5. A block of 10.0.0.5 would find no match in those records, so the rule would hold it. A block of 203.0.113.7 would find a match, so it could go ahead.
Cid’s proposed fix for DenyHosts offers an analogy. It anchors one pattern to the end of the line, where sshd wrote the real address [8]. Like the sensor check, it relies on a part of the line the attacker can’t write. Alerts have no fixed end of line. A field the sensor filled in itself is the nearest thing. That’s the design we’d bet on.
The check has gaps. An attacker who can forge a packet’s source address reaches the sensor’s record too. So does one who controls a client-supplied field, such as a forwarded address. A rule strict enough to guard key assets would sometimes refuse to block a compromised one. And PACT’s authors, whose design tracks where each tool input came from, name inferring a value’s origin as an open problem, one our own check shares [10].
Human review of every block wouldn’t fix the planted target either. The reviewer would see the same planted evidence, in a polished recommendation.
Judge any guard on the work it stops
Whichever guard a team picks, judge it on the work it stops as well as the attacks it stops. A rule that refused every block would never block the gateway. It would never block a real attacker either.
AgentDojo shows how big that cost can be. It tests a detector for injected instructions, a kind of defense that is not one of our three guards. In its Table 5, with GPT-4o against the authors’ strongest attack, the detector cut attack success from 57.69% with no defense to 7.95%. The share of normal tasks the agent finished fell from 69.00% to 41.49% [3]. That’s about two-fifths fewer finished tasks.
A defender can’t simply do without a guard, though. Attackers write some of what it reads, such as a hostname in an alert or a web page quoted in a ticket. In one benchmark of indirect prompt injection, every model tested sometimes followed instructions planted in the content it read. Its authors suspect models struggle to tell data from instructions [2].
No source we reviewed measures the trade-off that matters here. A defender needs two numbers. One is how often planted evidence aims an allowed block at the wrong host. The other is how often a stricter rule refuses a correct target because it looks unusual. The closest study feeds hostile log text to a security assistant, but it scores only labels, summaries and advice, never tool calls [11].
One experiment could prove us wrong
The experiment would test our central claim, that the sensor check beats both usual guards. Seed containment jobs with correct targets that look unusual and planted targets that look routine. Give the same jobs to a tool allowlist, a strict data-flow rule and the sensor check, and change nothing else. Score each guard on fresh cases it wasn’t tuned on.
We’d rather see four numbers than one. They are work done, forbidden changes made, false blocks and the cost of review. Our proposed studies page has the full design.
Two results would count against us.
- If either usual guard does as well at similar cost, our check adds little.
- If human reviewers supply all the benefit, the rule does less than we claim.
We think any AI defender that blocks whatever its alerts name is open to the kind of attack that beat DenyHosts in 2007. Treat every target an alert hands your agent as text an attacker may have written.
Scope and limits
- What we did
- We read a 2007 log-injection demonstration and the NVD record for fail2ban. We also read DARPA’s AI Cyber Challenge results, the AgentDojo, BIPIA and CyberSecEval 2 benchmarks, and NIST’s taxonomy. We read the CaMeL, Progent and PACT designs, and one study of hostile log text against a security assistant.
- What we didn’t do
- We ran no benchmark, built no agent and tested no rule. We didn’t measure how often a defender’s targets come from evidence an attacker touched. Nor did we measure whether the tool overlap AgentDojo found in 17% of its cases is the norm in defensive work.
- What this can’t tell you
- It can’t tell you how often planted evidence aims a permitted block at the wrong host. Nor can it tell you how often a stricter rule refuses a correct but unusual target. Each benchmark number holds for its own models, attacks and scoring, not real use. The 2007 tools matched fixed patterns, unlike a language model.
- Confidence
- Moderate. The 2007 mechanism and the AgentDojo detector’s cost are published results. How the three guards would handle the two blocks is our own reasoning. Neither we nor any source we reviewed has tested it. Three further points are our untested hypotheses. One is that in defensive work a task’s own tools usually suffice for the attack. Another is that a defender’s targets often come from alerts. The third is that checking targets against the sensor’s record adds value.
- What would change our view
- A result from the experiment at the end of the essay’s body, which we haven’t run.
- Corrections
- We log every correction, with its date, on How we work. Send one through a research enquiry.
Appendix
The fail2ban record shows the same kind of weakness
The National Vulnerability Database record for fail2ban, CVE-2007-4321, says versions 0.8 and earlier misread sshd logs. As a result, an IP address in a client’s version string let remote attackers add arbitrary hosts to /etc/hosts.deny and cause a denial of service [7].
Two more designs put rules on tool calls
Progent lets a team write rules about which tools an agent may call, and with which inputs. Its authors say it can’t stop an attack that needs no more access than the task has [9]. We think the planted block needs no more, so it would go through unless a team’s rules forbid that address.
PACT checks each input’s origin against a role-based trust rule. Outside data may fill an input such as an email’s body, but not one such as its recipient, unless a registered procedure covers the failed check. Its headline results assume each value’s origin is known [10]. We think it could hold the planted block if it knows where the address came from. Its authors name inferring a value’s origin as an open problem [10]. Our sensor check shares that problem.
How either design treats a routine block would depend on the rules a team writes.
The open question
Can a rule that checks each target against the sensor’s own record stop the planted targets a tool allowlist permits, without holding routine blocks as a strict data-flow rule would?
We follow a failure that falls between the two guards people reach for, one PACT’s authors also describe. By our untested reasoning, a tool allowlist would permit the planted target, and a strict data-flow rule would hold routine containment along with it. We argue for a third design, a rule that checks each target against the sensor’s own record of the event. Our page of proposed studies sets out the comparison that would test it.
References
A selected review of published sources, with Lugano’s analysis and proposed work identified in the text. Source dates and conditions matter; historical results are not current-model rankings.
- 1
Adversarial Machine Learning: A Taxonomy and Terminology of Attacks and Mitigations (NIST AI 100-2e2023)
Official taxonomy of adversarial ML attacks, mitigations, lifecycle stages, attacker goals, and open challenges.
Scope. A taxonomy and terminology resource; it does not test a particular agent, enforcement design, or deployed Lugano system.Back to the essay
- 2
Benchmarking and Defending Against Indirect Prompt Injection Attacks on Large Language Models
BIPIA benchmark and evaluated black-box and white-box defenses for indirect prompt injection, including its selected output-quality measures.
Scope. Results depend on the benchmark, evaluated models, attack construction, and quality measures; they do not establish general resistance to adaptive attacks.Back to the essay
- 3
AgentDojo: A Dynamic Environment to Evaluate Prompt Injection Attacks and Defenses for LLM Agents
NeurIPS benchmark with 97 tasks and 629 security cases. Table 5 reports a GPT-4o detector comparison: targeted ASR 57.69% to 7.95%, with benign utility 69.00% to 41.49%. The authors state that the tool filter fails when the tools a task needs suffice for the attack, true for 17% of their test cases.
Scope. Results depend on model, attack and defense. The introduction’s blanket <66%/<25% statements conflict with detailed tables, and Table 3 gives GPT-4o’s undefended targeted ASR as 47.69% against 57.69% in Table 5; this report uses the specific Table 5 comparison, not a general agent rate.Back to the essay
- 4
Defeating Prompt Injections by Design
The June 2025 revision of CaMeL formalizes a prompt-injection security model, implements control/data separation and capability policies, and reports 77% versus 84% task completion in its stated comparison. Its worked example (Section 2, footnote 3) asks the user to approve sending a confidential document to an address read from untrusted meeting notes, even with no adversary, when that recipient lacks read access.
Scope. The formal claims depend on the defined security model, trusted inputs, interpreter, and policy. The paper discusses non-goals, data-dependent actions, and side channels; its empirical result is not a universal security or utility guarantee.Back to the essay
- 5
AI Cyber Challenge marks pivotal inflection point for cyber defense
Official final-competition disclosure (8 August 2025) reporting challenge-code analysis, synthetic-vulnerability discovery and patching, and real vulnerabilities found. Its body says systems found 54 unique synthetic vulnerabilities in the final’s 63 challenges and patched 43; an editor’s note corrects the count of synthetic vulnerabilities from 70 to 63.
Scope. Controlled competition evidence; it does not establish production safety, broad patch correctness after deployment, or safe standing access.Back to the essay
- 6
CyberSecEval 2: A Wide-Ranging Cybersecurity Evaluation Suite for Large Language Models
Reports model-specific prompt-injection test outcomes and a separate false-refusal evaluation for cyberattack helpfulness; those are distinct benchmark components.
Scope. Findings are model-, harness-, and date-specific; they are not a population rate for deployed systems.Back to the essay
- 7
CVE-2007-4321 Detail
Official vulnerability record: fail2ban 0.8 and earlier did not properly parse sshd logs, so an IP address string in an SSH client’s protocol version identification let remote attackers add arbitrary hosts to /etc/hosts.deny and cause a denial of service. It names an earlier, different vector, CVE-2006-6302.
Scope. A record for one pre-LLM tool and version range; it says nothing about AI agents, current fail2ban releases, or how often such attacks occurred.Back to the essay
- 8
Log injection - Attacking Log Analysis Tools
Author’s demonstration of remote log injection against DenyHosts 2.6, BlockHosts 2.0.3, and fail2ban 0.8 through SSH and FTP input, including an injected “all” entry in hosts.deny. In its sshd protocol-mismatch examples the daemon logs the real client address at the end of the line, after planted text that DenyHosts matched. It suggests anchoring a DenyHosts pattern to the end of the line.
Scope. Test-host demonstrations of three regex-based tools by the author of a competing tool, OSSEC, who discloses that role. It is not a prevalence study or an evaluation of AI systems. The page shows no date; Cid’s texts index lists it under July 2007, and his blog announced the paper on 2007-06-06.Back to the essay
- 9
Progent: Securing AI Agents with Privilege Control (arXiv v3, 14 May 2026)
Expresses agent privilege as symbolic policy rules over tool names and arguments, evaluated on AgentDojo and ASB. Its threat model states that it cannot defend against attacks that operate within least privilege, such as preference manipulation.
Scope. Evaluated on general agent benchmarks, not defensive containment. This report uses its design and scope statement, not its attack-success figures.Back to the essay
- 10
The Granularity Mismatch in Agent Security: Argument-Level Provenance Solves Enforcement and Isolates the LLM Reasoning Bottleneck (arXiv v1)
Proposes PACT, which assigns semantic roles to tool arguments and tracks where argument values came from. External data may fill content roles; authority-bearing target roles such as recipients block it unless a registered discharge procedure covers the failed check.
Scope. A May 2026 preprint evaluated on AgentDojo and other general suites; it reports no security-operations tasks. This report uses its design, not its utility or security figures.Back to the essay
- 11
Poisoning the Watchtower: Prompt Injection Attacks Against LLM-Augmented Security Operations Through Adversarial Log Content (arXiv v1)
Studies prompt injection through attacker-controlled log fields against an LLM that produces triage labels, incident summaries, and remediation advice. Its threat model does not assume the LLM can execute commands or call tools.
Scope. One live model (gpt-4o-mini), 48 strategy-defense-task conditions, and text outputs only; it does not test write actions or wrong-target containment.Back to the essay