<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>KI ungefiltert</title>
<link>https://ungefiltert.dillenberg.net/en/</link>
<atom:link href="https://ungefiltert.dillenberg.net/en/feed.xml" rel="self" type="application/rss+xml"/>
<description>Thoughts on whatever is on my mind, and notes on everything I build. Written with AI, approved by me.</description>
<language>en-us</language>
<item>
  <title>KRAKEN, part 1: sandbox first, AI second</title>
  <link>https://ungefiltert.dillenberg.net/en/article/kraken-part-1-sandbox-first-ai-second/</link>
  <guid>https://ungefiltert.dillenberg.net/en/article/kraken-part-1-sandbox-first-ai-second/</guid>
  <pubDate>Sat, 24 Oct 2026 12:00:00 GMT</pubDate>
  <category>built</category><category>AI</category><category>security</category><category>Rust</category>
  <description>&lt;p&gt;I came across a project on GitHub: &lt;a href=&quot;https://github.com/Adam-AtlasSoftware/kraken&quot;&gt;KRAKEN&lt;/a&gt;. A reverse-engineering tool, for taking apart finished programs when you don&amp;#39;t have the source code. Under the hood it uses the decompiler from Ghidra, the well-known NSA tool. AI agents like Claude Code can work with it. The project&amp;#39;s goal: rewrite a program in Rust, function by function, and check every function against the original.&lt;/p&gt;
&lt;p&gt;I wanted to try it. Part 1 is about getting something like this running safely. The AI comes in part 2.&lt;/p&gt;
&lt;figure class=&quot;clip&quot;&gt;
&lt;video controls muted playsinline preload=&quot;metadata&quot; poster=&quot;/img/kraken-teil-1/poster.jpg&quot; src=&quot;/video/kraken-teil-1.mp4&quot;&gt;&lt;/video&gt;
&lt;figcaption&gt;KRAKEN · Part 1 · 34 sec.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;Why a cage&lt;/h2&gt;
&lt;p&gt;Taking programs apart means having files on your machine you don&amp;#39;t trust. Add a tool that is eight days old, has two stars on GitHub and calls itself &amp;quot;pre-alpha&amp;quot;. And an AI that writes and runs code.&lt;/p&gt;
&lt;p&gt;Before installing anything, I read the repository: no tasks that start automatically when you open it in an editor, no build scripts quietly downloading things, no hidden instructions for AI agents in the project notes. The security design is well thought out. Still: reading is not isolation.&lt;/p&gt;
&lt;p&gt;One small thing stood out. The docs promise that downloads are checked against a signature. The install script says the signing key hasn&amp;#39;t been created yet. All it checks is a checksum that comes from the same server as the download. That protects against broken files, not against tampered ones.&lt;/p&gt;
&lt;h2&gt;A machine that isn&amp;#39;t allowed anything&lt;/h2&gt;
&lt;p&gt;KRAKEN runs in its own Linux machine, a virtual machine on my Mac mini. The software is called OrbStack. It has an &amp;quot;isolated&amp;quot; mode: no access to the Mac&amp;#39;s files, no Mac commands, no access to other machines.&lt;/p&gt;
&lt;p&gt;I measured it. Mac files: not visible. Services on the Mac: not reachable. My private VPN: &lt;strong&gt;reachable&lt;/strong&gt;. The isolated machine got through the Mac to devices on my VPN. One service turned it away because it checks who is asking. Other services on the VPN trust anyone who is inside.&lt;/p&gt;
&lt;p&gt;So the machine got its own firewall: internet only, no private networks, no VPN. Then I took admin rights away from the user inside the machine. Whatever runs there cannot switch the firewall off. Only I can change it, from the Mac.&lt;/p&gt;
&lt;p&gt;The lesson: &amp;quot;isolated&amp;quot; means something different in every tool. Measure it, don&amp;#39;t believe it.&lt;/p&gt;
&lt;h2&gt;The Apple chip and the sandbox&lt;/h2&gt;
&lt;p&gt;KRAKEN&amp;#39;s ready-made packages only exist for Linux on Intel and AMD processors. The Mac mini has an Apple chip. No problem, I thought: OrbStack can translate Intel Linux through Rosetta.&lt;/p&gt;
&lt;p&gt;Installed, started, refused. KRAKEN requires Landlock, a sandbox feature of the Linux kernel that stops a program from touching files outside a folder or reaching the network. The kernel had Landlock. But under Rosetta the call never arrives, and the kernel answers &amp;quot;doesn&amp;#39;t exist&amp;quot;.&lt;/p&gt;
&lt;p&gt;For plain analysis I could have switched the sandbox off. Not for the interesting part: KRAKEN only builds and runs the Rust code an AI writes inside this sandbox. There is deliberately no switch for that. I think that&amp;#39;s right.&lt;/p&gt;
&lt;p&gt;So a second machine, this time for the Apple chip, and KRAKEN built from source. There the kernel reports Landlock version 10.&lt;/p&gt;
&lt;h2&gt;Three stumbling blocks in the build&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The silent placeholder.&lt;/strong&gt; The first build finished in 98 seconds, no errors. Suspiciously fast. Without the Ghidra decompiler sources, KRAKEN quietly builds a placeholder that decompiles nothing. The setup command only fetches part of the files. The decompiler sources need a second command.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The missing library.&lt;/strong&gt; With the real sources the build failed: functions for unpacking data were missing when the program was put together. KRAKEN ships the library for that, but on the Apple chip it ends up in the wrong order. So far the project is only tested on Intel and AMD. One extra reference to the system library fixed it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The emulator.&lt;/strong&gt; For programs that use the system&amp;#39;s shared libraries, KRAKEN needs a copy of those libraries for its emulator. Programs that bring everything with them ran right away.&lt;/p&gt;
&lt;h2&gt;The first look&lt;/h2&gt;
&lt;p&gt;My test case: a small calculator from the project&amp;#39;s practice programs, compiled with optimizations and without function names. That&amp;#39;s what a program looks like when you know nothing about it.&lt;/p&gt;
&lt;p&gt;KRAKEN found 14 functions. Most are just called &lt;code&gt;FUN_00101280&lt;/code&gt; and the like. The decompiler turns them into readable C code. With one function you can tell after a few lines what it does: skip spaces, check for brackets and minus signs, put digits together into a number. That is the part of the calculator that reads numbers. A second practice program ran in the emulator and printed the same output as when run for real.&lt;/p&gt;
&lt;p&gt;So far no AI has done anything. That&amp;#39;s part 2: can a model name these functions correctly and rewrite them in Rust so the result behaves the same? I&amp;#39;ll use an open-source program whose source code I know. Then we can check how close the AI gets.&lt;/p&gt;
&lt;p&gt;I only take apart programs I&amp;#39;m allowed to analyse. KRAKEN says so in its own docs, and that doesn&amp;#39;t only apply there.&lt;/p&gt;
</description>
</item>
<item>
  <title>KRAKEN, part 2: 100 percent correct, and that&#39;s the problem</title>
  <link>https://ungefiltert.dillenberg.net/en/article/kraken-part-2-100-percent-correct-and-thats-the-problem/</link>
  <guid>https://ungefiltert.dillenberg.net/en/article/kraken-part-2-100-percent-correct-and-thats-the-problem/</guid>
  <pubDate>Sat, 24 Oct 2026 12:00:00 GMT</pubDate>
  <category>built</category><category>AI</category><category>security</category>
  <description>&lt;p&gt;In &lt;a href=&quot;/en/article/kraken-part-1-sandbox-first-ai-second/&quot;&gt;part 1&lt;/a&gt; I built a cage for KRAKEN, a tool that lets AI take finished programs apart. Now the AI gets its turn. The question: in a program with no labels at all, does it find the right functions, and does it understand what they do?&lt;/p&gt;
&lt;figure class=&quot;clip&quot;&gt;
&lt;video controls muted playsinline preload=&quot;metadata&quot; poster=&quot;/img/kraken-teil-2/poster.jpg&quot; src=&quot;/video/kraken-teil-2.mp4&quot;&gt;&lt;/video&gt;
&lt;figcaption&gt;KRAKEN · Part 2 · 32 sec.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;Free models first&lt;/h2&gt;
&lt;p&gt;OpenRouter has models that cost nothing. I tried five. None of them got to a result.&lt;/p&gt;
&lt;p&gt;Nemotron 3 Ultra passed numbers as text, &lt;code&gt;&amp;quot;50&amp;quot;&lt;/code&gt; instead of &lt;code&gt;50&lt;/code&gt;. KRAKEN rejected that every time, and after eleven calls the budget was gone. Laguna S recognised the program right away, then got tangled up paging through the function list. Flint used 243,000 tokens in nine calls. Inkling is only open to certain apps on OpenRouter, and Gemma was overloaded.&lt;/p&gt;
&lt;p&gt;KRAKEN behaved well throughout: it asks about cost before any AI work, stops cleanly when a limit is reached, and can undo any run with one command.&lt;/p&gt;
&lt;h2&gt;Claude outside, KRAKEN inside&lt;/h2&gt;
&lt;p&gt;Then Claude, through my regular subscription. Claude runs on the Mac, not in the test machine. It gets no shell and no file access, only KRAKEN&amp;#39;s tools: list functions, decompile, search text, rename, comment. KRAKEN itself stays in the cage.&lt;/p&gt;
&lt;p&gt;The task was the same for both programs: find the program&amp;#39;s own functions, name them, say what they do. I didn&amp;#39;t say which program it was.&lt;/p&gt;
&lt;h2&gt;Test 1: 2048&lt;/h2&gt;
&lt;p&gt;The game 2048 as an open-source C version, 577 lines. I compiled it myself, removed all names and built the C library in, like many real programs do. KRAKEN found 1,111 functions, 196 of them unnamed. Somewhere in there are the game&amp;#39;s 19 functions.&lt;/p&gt;
&lt;p&gt;Claude took 78 seconds. It found all 19. 17 names were exactly the ones in the source: &lt;code&gt;slideArray&lt;/code&gt;, &lt;code&gt;rotateBoard&lt;/code&gt;, &lt;code&gt;findPairDown&lt;/code&gt;. One was only spelled differently, one named differently but correct in meaning. Along the way Claude noticed that the compiler had copied one function into another.&lt;/p&gt;
&lt;h2&gt;Test 2: the real xxd&lt;/h2&gt;
&lt;p&gt;Then a file I didn&amp;#39;t build: &lt;code&gt;xxd&lt;/code&gt;, Vim&amp;#39;s hex dump tool, exactly as Ubuntu ships it. 22 kilobytes, no function names. I checked the file against Ubuntu&amp;#39;s signed package lists, from signature to checksum. The answer key is the official debug package with the real names. The AI never saw it.&lt;/p&gt;
&lt;p&gt;Claude took 53 seconds. 10 out of 10 functions, all with exactly the original name: &lt;code&gt;xxdline&lt;/code&gt;, &lt;code&gt;skip_to_eol&lt;/code&gt;, &lt;code&gt;exit_with_usage&lt;/code&gt;, &lt;code&gt;fclose_or_die&lt;/code&gt;. Plus every option and the exit codes. And it named functions the compiler had folded into &lt;code&gt;main&lt;/code&gt;, with address ranges, although those names appear nowhere in the file.&lt;/p&gt;
&lt;h2&gt;Why that doesn&amp;#39;t reassure me&lt;/h2&gt;
&lt;p&gt;Both programs contain a version string. For xxd it includes the author. Claude found it and then wrote, on its own: &amp;quot;The helper functions match xxd.c.&amp;quot; It knows Vim&amp;#39;s source code. It&amp;#39;s in its training data, just like 2048, a project with more than 600 stars on GitHub.&lt;/p&gt;
&lt;p&gt;So the names partly come from memory. The file only confirms what the AI already knows.&lt;/p&gt;
&lt;p&gt;It&amp;#39;s not quite that simple, though. Where exactly in the machine code each function sits, which parts the compiler merged, which option triggers which exit code: none of that is in any source code. Claude read that from the file.&lt;/p&gt;
&lt;p&gt;For attackers and defenders this means the same thing. Known software, and that&amp;#39;s almost all software, an AI sees through in seconds. What used to take days now takes a minute.&lt;/p&gt;
&lt;h2&gt;What this doesn&amp;#39;t prove yet&lt;/h2&gt;
&lt;p&gt;Whether the AI understands a program it cannot know, I don&amp;#39;t know yet. That&amp;#39;s part 3: a program written after the model&amp;#39;s knowledge cutoff. Then we&amp;#39;ll see how much of the 100 percent was reading and how much was remembering.&lt;/p&gt;
&lt;p&gt;I only took apart open-source programs. Their licences allow it, and we have the source code to compare against.&lt;/p&gt;
</description>
</item>
<item>
  <title>Black October? What is true and what you can do today</title>
  <link>https://ungefiltert.dillenberg.net/en/article/black-october-what-is-true/</link>
  <guid>https://ungefiltert.dillenberg.net/en/article/black-october-what-is-true/</guid>
  <pubDate>Thu, 22 Oct 2026 12:00:00 GMT</pubDate>
  <category>security</category><category>AI</category>
  <description>&lt;p&gt;There is a post going around right now that a lot of people are getting forwarded: &amp;quot;Something Big Is Happening&amp;quot; by Matt Shumer. The message: swarms of AI agents are attacking the internet, send this to everyone you know.&lt;/p&gt;
&lt;p&gt;I looked at the core claims. In short: the situation is serious. The post is louder than the facts.&lt;/p&gt;
&lt;figure class=&quot;clip&quot;&gt;
&lt;video controls muted playsinline preload=&quot;metadata&quot; poster=&quot;/img/php2shell-day3/poster.jpg&quot; src=&quot;/video/php2shell-day3.mp4&quot;&gt;&lt;/video&gt;
&lt;figcaption&gt;PHP2Shell · Day 3 · 39 sec.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;What holds up&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;PHP2Shell.&lt;/strong&gt; Two flaws in PHP, the software behind a large share of all websites, severity 9.2 out of 10. Exploiting them lets an attacker run their own code on the server without logging in. The patches came out on October 21. The flaws were found by researchers at Wiz together with Calif and OpenAI, using AI-assisted tools, and reported back in August. (&lt;a href=&quot;https://www.recordedfuture.com/blog/php2shell-vulnerability-exploitation&quot;&gt;Recorded Future&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Amazon saw a first attempt in its honeypots, servers that exist only as bait for attackers, on October 17. Four days before disclosure. Amazon now speaks of broad exploitation, Cloudflare of a sharp rise in attacks. According to Help Net Security, a working exploit shows that a single request without login is enough. None of the reports I read names a confirmed successful break-in so far, though. Amazon&amp;#39;s find from October 17 also hit a bait server. (&lt;a href=&quot;https://www.theregister.com/cyber-crime/2026/10/22/hackers-pile-on-php2shell-as-aws-reveals-attacks-began-before-disclosure/5304749&quot;&gt;The Register&lt;/a&gt;, &lt;a href=&quot;https://www.techzine.eu/news/security/145197/php2shell-was-exploited-four-days-before-disclosure-says-amazon/&quot;&gt;Techzine&lt;/a&gt;, &lt;a href=&quot;https://www.helpnetsecurity.com/2026/10/21/php2shell-php-vulnerabilities-patched-cve-2026-109618-cve-2026-109619/&quot;&gt;Help Net Security&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Governments pull sites offline.&lt;/strong&gt; Germany, the Netherlands and other countries took websites offline as a precaution, and Wikimedia some of its systems. According to the German digital ministry, no incidents were known there. Switching off was caution, not a break-in. (&lt;a href=&quot;https://www.cnbc.com/2026/10/21/government-websites-go-dark-as-software-flaw-sparks-security-scramble.html&quot;&gt;CNBC&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One attacker, more than 100 companies.&lt;/strong&gt; According to Reuters and researcher Snorre Fagerland, a single attacker used AI agents on the Cairn platform to break into the websites of more than 100 companies, including Deere and SharkNinja. Cost: about 5,000 dollars, roughly 50 dollars per successful break-in. How much data was taken is unclear. Deere says it sees no sign that sensitive data was accessed. (&lt;a href=&quot;https://thenextweb.com/news/ai-agents-hacker-cairn-100-sites-deere-norforge&quot;&gt;TNW&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Banks lock out AI agents.&lt;/strong&gt; JPMorgan no longer lets outside AI agents into customer accounts. According to Jamie Dimon, anyone who hands their login to an agent carries the risk themselves. (&lt;a href=&quot;https://cybernews.com/security/jpmorgan-chase-blocks-outside-ai-agents/&quot;&gt;Cybernews&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;What I could not confirm&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;That the claim &amp;quot;half of the servers are too old for the fix&amp;quot; comes from Cisco. A similar number does exist, more on that below.&lt;/li&gt;
&lt;li&gt;The quote that bank executives called the situation &amp;quot;horrifying&amp;quot;.&lt;/li&gt;
&lt;li&gt;Other numbers in the post (Latin America, South Korea, Japan) I did not check, so I leave them out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Half too old? Handle the numbers with care&lt;/h2&gt;
&lt;p&gt;A Shodan count cited by the security firm CybelAngel: of about 1.5 million servers that openly show their PHP version, 59 percent (883,717) run a branch with no official update. So the &amp;quot;half&amp;quot; in the post is not made up. (&lt;a href=&quot;https://cybelangel.com/blog/critical-php-rce-vulnerabilities-cve-2026-109618-and-cve-2026-109619/&quot;&gt;CybelAngel&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;But these scanners count version numbers, not vulnerabilities. Linux distributions like Ubuntu build the fix into their own packages and keep the old version number. A server I look after reports &amp;quot;PHP 8.3.6&amp;quot;. That sounds years old. The package does contain the patch for exactly these two flaws, installed the morning after disclosure. A scanner still counts it as vulnerable. The real number is lower. By how much, nobody knows exactly.&lt;/p&gt;
&lt;p&gt;For PHP 7.4, 8.0 and 8.1 there are only minimal source code fixes, meant for people who build PHP themselves. If you sit on one of those versions at a hosting provider, they do not help you.&lt;/p&gt;
&lt;h2&gt;What is off about the post&lt;/h2&gt;
&lt;p&gt;&amp;quot;Black October&amp;quot;, &amp;quot;send this to everyone&amp;quot;, cash and supplies at home: that is alarm. Yet Shumer himself writes that no successful break-in through the PHP flaw has been confirmed so far.&lt;/p&gt;
&lt;p&gt;The advice to avoid small websites is well meant but not workable in everyday life. And deposit insurance depends on where you live: in Germany and the EU, deposits are protected by law up to 100,000 euros per customer and bank, in the US the FDIC covers 250,000 dollars.&lt;/p&gt;
&lt;h2&gt;What you can do today&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Install updates.&lt;/strong&gt; Phone, computer, browser and router. Never an &amp;quot;update&amp;quot; from a pop-up, a text message or an email.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use a password manager.&lt;/strong&gt; Every account gets its own password. iPhone and Android have one built in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turn on two-step login,&lt;/strong&gt; email and bank first. Your email is the master key to everything else.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If &amp;quot;your bank&amp;quot; calls, hang up&lt;/strong&gt; and dial the number on your card yourself. No bank asks for a one-time code or your password.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do not give banking logins to AI assistants&lt;/strong&gt; or other apps, even when it would be convenient.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do not pull your money out.&lt;/strong&gt; Panic is exactly what scammers count on.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you run a website on PHP yourself: check your version and update to 8.5.12, 8.4.27, 8.3.36 or 8.2.35. Amazon recommends reviewing logs from October 17 onward, not just from the disclosure date. For 8.1 and older there is no ready-made update: upgrade, or ask your hosting provider or distribution. On Ubuntu and Debian the old version number stays, &lt;code&gt;apt changelog php8.3-common&lt;/code&gt; (with your version) shows whether the fix is in. If your site is behind Cloudflare, you get firewall rules against the known attack paths, on the free plan too. That does not replace the update.&lt;/p&gt;
&lt;h2&gt;Faster, not unstoppable&lt;/h2&gt;
&lt;p&gt;Attackers have gotten faster because AI does part of the work for them. That is real. The answer is not panic, though, but the boring stuff: updates, unique passwords, a second factor.&lt;/p&gt;
&lt;p&gt;The first 48 hours of this week are also a video: &lt;a href=&quot;/en/article/the-48-hours-ep01/&quot;&gt;The 48 Hours, Episode 1&lt;/a&gt;.&lt;/p&gt;
</description>
</item>
<item>
  <title>My server lives in the living room</title>
  <link>https://ungefiltert.dillenberg.net/en/article/my-server-lives-in-the-living-room/</link>
  <guid>https://ungefiltert.dillenberg.net/en/article/my-server-lives-in-the-living-room/</guid>
  <pubDate>Thu, 22 Oct 2026 12:00:00 GMT</pubDate>
  <category>built</category><category>self-hosting</category><category>security</category>
  <description>&lt;p&gt;This site, my WordPress blog, my files and my Git server do not run at a hosting company. They run on a Mac mini at home. That is less exotic than it sounds.&lt;/p&gt;
&lt;h2&gt;The setup&lt;/h2&gt;
&lt;p&gt;Everything runs in containers, held together by a single Compose file:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Caddy&lt;/strong&gt; as the web server in front. It routes every request to the right place based on the hostname.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt; for the main blog, with &lt;strong&gt;MariaDB&lt;/strong&gt; as the database.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nextcloud&lt;/strong&gt; for files, calendars and video calls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forgejo&lt;/strong&gt; as my own Git server.&lt;/li&gt;
&lt;li&gt;A few &lt;strong&gt;static sites&lt;/strong&gt;, like this one.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The data lives on an external drive. The idea: plug the drive into another computer, start the stack, everything keeps running.&lt;/p&gt;
&lt;h2&gt;No open doors&lt;/h2&gt;
&lt;p&gt;The router has not a single open port for the websites. Instead, a small service builds a connection to Cloudflare from the inside, a tunnel. Visitors land at Cloudflare, and Cloudflare passes the request through the tunnel to Caddy. From the outside, my connection is not visible at all.&lt;/p&gt;
&lt;p&gt;For myself there is a second way in, through a private VPN. That also reaches things that are deliberately not public.&lt;/p&gt;
&lt;h2&gt;What happened along the way&lt;/h2&gt;
&lt;p&gt;A lesson I did not expect: my Git server was publicly reachable for a while. Within about a day and a half, AI crawlers sent around 300,000 requests and downloaded thousands of archives. Not an attack in the classic sense, just bots grazing on everything they can find.&lt;/p&gt;
&lt;p&gt;Since then the Git server is no longer on the tunnel. I only reach it through the VPN. And I keep access logs that I review regularly.&lt;/p&gt;
&lt;h2&gt;Is it worth it?&lt;/h2&gt;
&lt;p&gt;For me, yes. I learn more from it than from any course, I know where my data lives, and it costs little more than electricity. The price: when something breaks, I am the admin. At three in the morning, too.&lt;/p&gt;
</description>
</item>
<item>
  <title>The 48 Hours, Episode 1: seven security incidents in two days</title>
  <link>https://ungefiltert.dillenberg.net/en/article/the-48-hours-ep01/</link>
  <guid>https://ungefiltert.dillenberg.net/en/article/the-48-hours-ep01/</guid>
  <pubDate>Thu, 22 Oct 2026 12:00:00 GMT</pubDate>
  <category>security</category><category>AI</category>
  <description>&lt;p&gt;48 hours. Seven security incidents.&lt;/p&gt;
&lt;figure class=&quot;clip&quot;&gt;
&lt;video controls muted playsinline preload=&quot;metadata&quot; poster=&quot;/img/the-48-hours-ep01/poster.webp&quot; src=&quot;/video/the-48-hours-ep01.mp4&quot;&gt;&lt;/video&gt;
&lt;figcaption&gt;The 48 Hours · EP.01 · 45 sec.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;PHP:&lt;/strong&gt; two bugs, severity 9.2 out of 10.
Patch it, or take it offline.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitLab:&lt;/strong&gt; 10.0, the top score.
Every version since 2014 is affected.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;eMudhra:&lt;/strong&gt; one private key had the value 4.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LiteLLM:&lt;/strong&gt; a poisoned package on PyPI for almost two hours.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Onamae:&lt;/strong&gt; 26,739 servers, every plan switched off.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cairn:&lt;/strong&gt; one attacker, more than 100 companies, around 50 dollars per breach.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SBI:&lt;/strong&gt; 3,897 records affected.&lt;/p&gt;
&lt;p&gt;US, EU, Japan. Patch, or go offline.&lt;/p&gt;
&lt;h2&gt;How the video was made&lt;/h2&gt;
&lt;p&gt;Script, design and code with Claude Code, rendered from HTML with HyperFrames. The voice is Kokoro-82M and runs locally on my machine. No stock footage, no cloud rendering.&lt;/p&gt;
&lt;p&gt;By the way, the &amp;quot;9.2&amp;quot; on the board is not a PHP version. It is the CVSS score, the severity. I tripped over that myself, so now it says so.&lt;/p&gt;
</description>
</item>
<item>
  <title>Why ungefiltert</title>
  <link>https://ungefiltert.dillenberg.net/en/article/warum-ungefiltert/</link>
  <guid>https://ungefiltert.dillenberg.net/en/article/warum-ungefiltert/</guid>
  <pubDate>Thu, 22 Oct 2026 12:00:00 GMT</pubDate>
  <category>about this blog</category><category>AI</category>
  <description>&lt;p&gt;I build things all the time. A small game, a web radio, a server in my own house, tools only I need. Most of it disappears into folders, and nobody ever learns why it was made, what went wrong and what I learned along the way.&lt;/p&gt;
&lt;p&gt;That is supposed to change here.&lt;/p&gt;
&lt;h2&gt;What you will find here&lt;/h2&gt;
&lt;p&gt;Two kinds of articles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Built:&lt;/strong&gt; reports on my projects. What it is, how it works, where it broke. No gloss.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Everything else:&lt;/strong&gt; thoughts on technology, society, everyday life, whatever is on my mind. No fixed topic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What &amp;quot;ungefiltert&amp;quot; means&lt;/h2&gt;
&lt;p&gt;&amp;quot;Ungefiltert&amp;quot; is German for unfiltered. Not: loud, provocative, thoughtless. But: I write it the way it was. If a project is half done, it says &amp;quot;half done&amp;quot;. If I was wrong, it says that too.&lt;/p&gt;
&lt;h2&gt;And the AI?&lt;/h2&gt;
&lt;p&gt;I write these texts together with an AI. It works like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I set a topic, often with bullet points, notes or just the project itself.&lt;/li&gt;
&lt;li&gt;The AI turns that into a draft.&lt;/li&gt;
&lt;li&gt;I read, cut, correct and approve. Only then does the text appear here.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The AI helps me get from a thought to a text faster. I still stand behind what is written here. If something is wrong, that is my mistake, not the machine&amp;#39;s.&lt;/p&gt;
&lt;h2&gt;The tech, briefly&lt;/h2&gt;
&lt;p&gt;This blog is a handful of static HTML files. No content management system, no database, no cookies, no tracking, no external fonts. It runs on a Mac mini at my home and is reachable through a Cloudflare tunnel. Every article exists in German and English. If you want to follow along, use the &lt;a href=&quot;/en/feed.xml&quot;&gt;RSS feed&lt;/a&gt;.&lt;/p&gt;
</description>
</item>
</channel>
</rss>
