<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nonsleepr's Blog</title><link>http://nonsleepr.github.io/</link><description>Recent content on Nonsleepr's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 12 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://nonsleepr.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Fable 5 and the Fox</title><link>http://nonsleepr.github.io/posts/fable-5-and-the-fox/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>http://nonsleepr.github.io/posts/fable-5-and-the-fox/</guid><description>&lt;p&gt;Anthropic &lt;a href="https://www.anthropic.com/news/claude-fable-5-mythos-5"&gt;launched&lt;/a&gt; Fable 5 on Tuesday — Mythos-class capabilities with guardrail classifiers, available to everyone. By Wednesday it was &lt;a href="https://digg.com/tech/t6oisb3f"&gt;jailbroken&lt;/a&gt;. Friday night the US government &lt;a href="https://www.anthropic.com/news/fable-mythos-access"&gt;ordered it killed&lt;/a&gt;. Nobody gets the grapes over the weekend.&lt;/p&gt;
&lt;h2 id="the-fox-and-the-grapes"&gt;The Fox and the Grapes&lt;/h2&gt;
&lt;p&gt;My first attempt to do security review with Fable hit the classifier wall. Execution stopped cold. I knew from &lt;a href="http://nonsleepr.github.io/posts/ssh-keysign-pwn/"&gt;previous&lt;/a&gt; &lt;a href="http://nonsleepr.github.io/posts/agent-loop-covert-operators/"&gt;posts&lt;/a&gt; how sweet the grapes were — but the immediate thought was still Aesop&amp;rsquo;s fox. Chasing the jailbreak is too hard. Maybe the Opus 4.8 fallback is good enough.&lt;/p&gt;</description></item><item><title>The Dangerous Thing Is the Agent Loop</title><link>http://nonsleepr.github.io/posts/agent-loop-covert-operators/</link><pubDate>Sun, 24 May 2026 00:00:00 +0000</pubDate><guid>http://nonsleepr.github.io/posts/agent-loop-covert-operators/</guid><description>&lt;p&gt;In my &lt;a href="http://nonsleepr.github.io/posts/the-orchestrated-theory/"&gt;previous post&lt;/a&gt;, I argued that AI agents fail at vulnerability research because they confuse the appearance of verification with verification itself. They build a broken PoC, run a broken check, see &lt;code&gt;vuln confirmed&lt;/code&gt;, and treat that as ground truth. The model is too willing to accept a theory because the theory gives it progress.&lt;/p&gt;
&lt;p&gt;After reading METR&amp;rsquo;s &lt;a href="https://metr.org/blog/2026-05-19-frontier-risk-report/"&gt;Frontier Risk Report&lt;/a&gt;, I think the same frame explains something adjacent: why current models look technically strong at hacking but operationally incompetent at stealth.&lt;/p&gt;</description></item><item><title>Stealing SSH Host Keys in 235 Bytes: CVE-2026-46333</title><link>http://nonsleepr.github.io/posts/ssh-keysign-pwn/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>http://nonsleepr.github.io/posts/ssh-keysign-pwn/</guid><description>&lt;p&gt;Four critical Linux kernel privilege escalation vulnerabilities in three weeks. &lt;a href="https://copy.fail/"&gt;Copy.Fail&lt;/a&gt; (CVE-2026-31431, April 29), &lt;a href="https://github.com/V4bel/dirtyfrag"&gt;Dirty Frag&lt;/a&gt; (CVE-2026-43284, May 8), &lt;a href="https://v12security.com/fragnesia/"&gt;Fragnesia&lt;/a&gt; (CVE-2026-46300, May 13), and now &lt;a href="https://github.com/advisories/GHSA-pm8f-4p6p-6x53"&gt;CVE-2026-46333&lt;/a&gt; (May 15). This is the new normal.&lt;/p&gt;
&lt;p&gt;I spent Monday looking at CVE-2026-46333 after seeing Qualys&amp;rsquo;s advisory. The bug is in &lt;code&gt;pidfd_getfd(2)&lt;/code&gt; &amp;ndash; a NULL pointer dereference in the ptrace dumpable check that lets any unprivileged user duplicate file descriptors from a setuid process during &lt;code&gt;exec&lt;/code&gt;. The practical impact: steal SSH host private keys from &lt;code&gt;ssh-keysign&lt;/code&gt; in under 10 seconds.&lt;/p&gt;</description></item><item><title>What GH Archive Knows About a Deleted Repo</title><link>http://nonsleepr.github.io/posts/private-cisa-osint/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>http://nonsleepr.github.io/posts/private-cisa-osint/</guid><description>&lt;p&gt;When Krebs &lt;a href="https://krebsonsecurity.com/2026/05/cisa-admin-leaked-aws-govcloud-keys-on-github/"&gt;reported on the leaked CISA credentials&lt;/a&gt;, the repo was already gone. The GitHub account showed zero public repositories. The Wayback Machine had nothing. GitHub search returned nothing. The article included a redacted screenshot and a username-free description of a &amp;ldquo;Nightwing contractor.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Starting from just the screenshot and the article, here&amp;rsquo;s what&amp;rsquo;s recoverable through public sources — and what isn&amp;rsquo;t.&lt;/p&gt;
&lt;h2 id="the-screenshot"&gt;The Screenshot&lt;/h2&gt;
&lt;p&gt;The redacted region uses full alpha transparency with zeroed RGB values — a proper redaction, no data recovery possible. The &lt;em&gt;unredacted&lt;/em&gt; parts of the same image contain:&lt;/p&gt;</description></item><item><title>"curl cannot do that" — yes it can</title><link>http://nonsleepr.github.io/posts/curl-cannot-do-that-yet-it-can/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>http://nonsleepr.github.io/posts/curl-cannot-do-that-yet-it-can/</guid><description>&lt;p&gt;I was looking at &lt;a href="https://github.com/advisories/GHSA-c4j6-fc7j-m34r"&gt;CVE-2026-44578&lt;/a&gt; — a pre-auth SSRF in Next.js&amp;rsquo;s WebSocket upgrade handler — and every PoC I found used &lt;code&gt;printf | nc&lt;/code&gt; to send the exploit. The &lt;a href="https://github.com/dinosn/CVE-2026-44578"&gt;dinosn/CVE-2026-44578&lt;/a&gt; repo states:&lt;/p&gt;

&lt;blockquote&gt;
 &lt;p&gt;&lt;code&gt;curl&lt;/code&gt; cannot send absolute-form URIs. Use raw TCP: &lt;code&gt;nc&lt;/code&gt;, &lt;code&gt;ncat&lt;/code&gt;, &lt;code&gt;socat&lt;/code&gt;, or Python sockets.&lt;/p&gt;

&lt;/blockquote&gt;
&lt;p&gt;That claim hooked me. I&amp;rsquo;ve been using curl for years and keep discovering it can do things I assumed required custom tooling. This was another one of those moments.&lt;/p&gt;</description></item><item><title>Your CLI Already Has a Knowledge Layer. It's Called man.</title><link>http://nonsleepr.github.io/posts/man-pages-not-skills/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>http://nonsleepr.github.io/posts/man-pages-not-skills/</guid><description>&lt;p&gt;The AI agent ecosystem has invented SKILL.md — a markdown file that tells agents how to use a tool: what the commands do, what the gotchas are, how to sequence operations. Anthropic launched it as an open standard in December 2025, and by May 2026 their official skills repository had over 136,000 stars. OpenAI&amp;rsquo;s catalog followed at 19,000. Thousands of community skills have been published.&lt;/p&gt;
&lt;p&gt;Among them, a growing category: skills for CLI tools that already ship comprehensive documentation. The &lt;a href="https://github.com/TerminalSkills/skills"&gt;&lt;code&gt;TerminalSkills/skills&lt;/code&gt;&lt;/a&gt; repository publishes SKILL.md files for &lt;code&gt;ffmpeg&lt;/code&gt;, &lt;code&gt;rsync&lt;/code&gt;, &lt;code&gt;imagemagick&lt;/code&gt;, &lt;code&gt;ssh&lt;/code&gt;, &lt;code&gt;nmap&lt;/code&gt;, and dozens more — all tools with extensive man pages maintained by their respective projects.&lt;/p&gt;</description></item><item><title>NGINX Rift: How Scary Is It Really?</title><link>http://nonsleepr.github.io/posts/nginx-rift-how-scary/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>http://nonsleepr.github.io/posts/nginx-rift-how-scary/</guid><description>&lt;p&gt;When &lt;a href="https://depthfirst.io/blog/nginx-rift-achieving-nginx-rce-via-an-18-year-old-vulnerability"&gt;depthfirst published their writeup&lt;/a&gt; on CVE-2026-42945, they demonstrated a heap buffer overflow in nginx&amp;rsquo;s rewrite module that leads to remote code execution. The natural question: how many real-world configs are actually vulnerable?&lt;/p&gt;
&lt;p&gt;After building a pre-patch nginx and crash-testing configurations from dozens of popular open-source projects, the answer is: &lt;strong&gt;surprisingly few&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="the-vulnerability-in-30-seconds"&gt;The Vulnerability in 30 Seconds&lt;/h2&gt;
&lt;p&gt;nginx&amp;rsquo;s rewrite module uses two passes when processing URI captures: a length calculation pass and a copy pass. Each pass uses a separate &amp;ldquo;engine&amp;rdquo; struct. The length engine is zeroed with &lt;code&gt;ngx_memzero()&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Why AI Agents Keep Claiming They Found Vulnerabilities That Don't Exist</title><link>http://nonsleepr.github.io/posts/the-orchestrated-theory/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>http://nonsleepr.github.io/posts/the-orchestrated-theory/</guid><description>&lt;p&gt;I&amp;rsquo;ve been watching AI agents fail at vulnerability research in a specific way. They&amp;rsquo;ll run for hours, generate a detailed report claiming they found a critical security flaw, and include a &amp;ldquo;verified&amp;rdquo; PoC script. But when you look at the verification logic, the script just checks some surface condition and prints &lt;code&gt;vuln confirmed&lt;/code&gt;. The agent sees this output and reinforces its belief that the vulnerability is real—even though the test itself was fundamentally broken.&lt;/p&gt;</description></item><item><title>Analyzing GitHub Pre-Receive Hook RCE (CVE-2026-3854)</title><link>http://nonsleepr.github.io/posts/cve-2026-3854-analysis/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>http://nonsleepr.github.io/posts/cve-2026-3854-analysis/</guid><description>&lt;p&gt;When Wiz published their &lt;a href="https://www.wiz.io/blog/github-rce-vulnerability-cve-2026-3854"&gt;writeup of the GitHub RCE&lt;/a&gt;, they omitted critical details needed for reproduction. The key unanswered questions were:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What is the structure of the &lt;code&gt;repo_pre_receive_hooks&lt;/code&gt; JSON?&lt;/li&gt;
&lt;li&gt;What values qualify as &amp;ldquo;non-production &lt;code&gt;rails_env&lt;/code&gt;&amp;rdquo;?&lt;/li&gt;
&lt;li&gt;How did they achieve &lt;strong&gt;arbitrary&lt;/strong&gt; code execution?&lt;/li&gt;
&lt;li&gt;Why did they specifically mention SSH?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Searching GitHub for existing PoCs yielded only a few repos with CVE-2026-3854 in the name—all were AI-generated speculations rather than working exploits.&lt;/p&gt;
&lt;h2 id="initial-testing-confirming-the-injection-vector"&gt;Initial Testing: Confirming the Injection Vector&lt;/h2&gt;
&lt;p&gt;I tested push option injection on my GHE instance:&lt;/p&gt;</description></item><item><title>Claude Chrome MCP: Browser Automation for Any MCP Client</title><link>http://nonsleepr.github.io/posts/claude-chrome-mcp/</link><pubDate>Tue, 28 Jan 2025 00:00:00 +0000</pubDate><guid>http://nonsleepr.github.io/posts/claude-chrome-mcp/</guid><description>&lt;p&gt;Anthropic recently released &lt;a href="https://claude.com/chrome"&gt;Claude in Chrome&lt;/a&gt; to a wider audience, and the &lt;a href="https://x.com/claudeai/status/2010805682434666759"&gt;demos&lt;/a&gt; are impressive. The extension lives in your browser sidebar and can perform agentic tasks on the web - essentially browsing for you. While other tools offer similar capabilities (Perplexity&amp;rsquo;s Comet, OpenAI Atlas), Anthropic approaches the problem with safety in mind: &lt;a href="https://www.anthropic.com/research/prompt-injection-defenses"&gt;strong prompting&lt;/a&gt; to resist prompt injection and &lt;a href="https://support.claude.com/en/articles/12902446-claude-in-chrome-permissions-guide"&gt;robust permission controls&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Even better, Claude Code can connect to this extension via &lt;code&gt;claude --chrome&lt;/code&gt;, giving it the ability to &amp;ldquo;see&amp;rdquo; and interact with web applications it develops. But there&amp;rsquo;s a catch: &lt;strong&gt;this requires a Claude subscription&lt;/strong&gt;. If you&amp;rsquo;re using your own API keys or prefer other agentic tools, you&amp;rsquo;re locked out.&lt;/p&gt;</description></item></channel></rss>