<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ssrf on t0ul</title><link>https://t0ul.com/tags/ssrf/</link><description>Recent content in Ssrf on t0ul</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 30 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://t0ul.com/tags/ssrf/index.xml" rel="self" type="application/rss+xml"/><item><title>A web-search tool that hits a local server</title><link>https://t0ul.com/blog/a-search-tool-hits-a-local-server/</link><pubDate>Tue, 16 Dec 2025 00:00:00 +0000</pubDate><guid>https://t0ul.com/blog/a-search-tool-hits-a-local-server/</guid><description>&lt;p&gt;&lt;em&gt;Part of my &lt;a href="https://t0ul.com/blog/the-plan/"&gt;AI Security Engineering&lt;/a&gt; series, a local email-to-calendar agent I build, then attack, then harden. If you have not set up the lab yet, start with &lt;a href="https://t0ul.com/blog/setting-up-the-lab/"&gt;Set up your lab&lt;/a&gt;. The lessons are &lt;a href="https://github.com/t0ul/ai-security-engineering"&gt;on GitHub&lt;/a&gt;, and the agent itself lives at &lt;a href="https://github.com/t0ul/emaildrop"&gt;t0ul/emaildrop&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-first-tool-that-reaches-out"&gt;The first tool that reaches out&lt;/h2&gt;
&lt;p&gt;Everything the agent has done so far is passive. It reads email, writes an inert file, draws a page. This post gives it the first tool that acts on the outside world on its own: a web search, something that takes a URL and fetches it. That is a small feature and a large change, because the URL does not come from me. It comes from the model, which built it after reading an email I do not control. A tool that will fetch whatever URL it is handed, driven by a model that can be talked into handing it anything, is server-side request forgery, and this is the post where the agent first has the power to commit it.&lt;/p&gt;</description></item><item><title>Defeating the lethal trifecta</title><link>https://t0ul.com/blog/defeating-the-lethal-trifecta/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://t0ul.com/blog/defeating-the-lethal-trifecta/</guid><description>&lt;p&gt;&lt;em&gt;Part of my &lt;a href="https://t0ul.com/blog/the-plan/"&gt;AI Security Engineering&lt;/a&gt; series, a local email-to-calendar agent I build, then attack, then harden. If you have not set up the lab yet, start with &lt;a href="https://t0ul.com/blog/setting-up-the-lab/"&gt;Set up your lab&lt;/a&gt;. The lessons are &lt;a href="https://github.com/t0ul/ai-security-engineering"&gt;on GitHub&lt;/a&gt;, and the agent itself lives at &lt;a href="https://github.com/t0ul/emaildrop"&gt;t0ul/emaildrop&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="three-legs"&gt;Three legs&lt;/h2&gt;
&lt;p&gt;Simon Willison gave the pattern its name: the lethal trifecta is an agent that has all three of access to untrusted content, access to private data, and the ability to act or communicate outward. Each alone is fine. An agent that reads your email but can only draft replies is harmless; so is one that holds secrets but never sees an attacker&amp;rsquo;s words. Put all three in one process, though, and an instruction hidden in the untrusted content can walk a secret out the door.&lt;/p&gt;</description></item><item><title>Action links</title><link>https://t0ul.com/blog/action-links/</link><pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate><guid>https://t0ul.com/blog/action-links/</guid><description>&lt;p&gt;&lt;em&gt;Part of my &lt;a href="https://t0ul.com/blog/the-plan/"&gt;AI Security Engineering&lt;/a&gt; series, a local email-to-calendar agent I build, then attack, then harden. If you have not set up the lab yet, start with &lt;a href="https://t0ul.com/blog/setting-up-the-lab/"&gt;Set up your lab&lt;/a&gt;. The lessons are &lt;a href="https://github.com/t0ul/ai-security-engineering"&gt;on GitHub&lt;/a&gt;, and the agent itself lives at &lt;a href="https://github.com/t0ul/emaildrop"&gt;t0ul/emaildrop&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="the-one-thing-that-acts"&gt;The one thing that acts&lt;/h2&gt;
&lt;p&gt;Two posts ago the agent learned to tag a link in an email as an action, kept separate from the quiet to-do list precisely so a human would see it. This post is about what happens when someone actually acts on it. An action link is the single most dangerous thing the agent handles, because following it is a real outbound request: it can carry data out of the house, or reach inward to something only the machine can see. Every other feature so far produced text; this one produces a network call.&lt;/p&gt;</description></item></channel></rss>