<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Security on vnykmshr</title><link>https://blog.vnykmshr.com/writing/tags/security/</link><description>Recent content in Security on vnykmshr</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 27 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.vnykmshr.com/writing/tags/security/index.xml" rel="self" type="application/rss+xml"/><item><title>Bug 1465</title><link>https://blog.vnykmshr.com/writing/bug-1465/</link><pubDate>Fri, 27 Mar 2026 00:00:00 +0000</pubDate><guid>https://blog.vnykmshr.com/writing/bug-1465/</guid><description>&lt;p&gt;Three bugs walk into a triage queue.&lt;/p&gt;
&lt;p&gt;A stack overflow. Symlink loop in tarball parsing, unbounded recursion, process crashes. Build a PoC, trace the call chain, write the report.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Duplicate of #1465&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Memory exhaustion. String replace in an expression engine, exponential allocation, no cost limit. Different repo, different CWE, different everything. PoC, trace, report.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Duplicate of #1465&amp;rdquo;&lt;/p&gt;
&lt;p&gt;SQL injection. Template parameter escaping that wraps but doesn&amp;rsquo;t escape. Different repo again. PoC, trace, report.&lt;/p&gt;</description></item><item><title>The dismissal</title><link>https://blog.vnykmshr.com/writing/the-dismissal/</link><pubDate>Fri, 27 Mar 2026 00:00:00 +0000</pubDate><guid>https://blog.vnykmshr.com/writing/the-dismissal/</guid><description>&lt;p&gt;A validation layer that checks 3 of 4 fields is worse than one that checks none.&lt;/p&gt;
&lt;p&gt;Zero checks, the developer tests everything. Three checks, they assume the fourth is covered. That gap &amp;ndash; between nothing and almost everything &amp;ndash; is where the actual damage hides.&lt;/p&gt;
&lt;p&gt;I keep running into this. Filed a security report recently &amp;ndash; clear bug, one-line fix, obvious PoC. Response: &amp;ldquo;not applicable.&amp;rdquo; The code did exactly what I said it did. But the team&amp;rsquo;s threat model said &amp;ldquo;caller is trusted,&amp;rdquo; and three other fields had validation, so the missing one looked intentional. It wasn&amp;rsquo;t. It was just the one nobody got to.&lt;/p&gt;</description></item><item><title>Trust boundaries</title><link>https://blog.vnykmshr.com/writing/trust-boundaries/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://blog.vnykmshr.com/writing/trust-boundaries/</guid><description>&lt;p&gt;I use coding agents on my own private repos every day. Security research, side projects, things I wouldn&amp;rsquo;t put on a public GitHub. Not something I&amp;rsquo;d do blindly with work source code though.&lt;/p&gt;
&lt;p&gt;So when someone turns off WiFi to prove the agent needs a network connection, I get it. But that&amp;rsquo;s the architecture. It&amp;rsquo;s on the pricing page. The agent works on your local files, the reasoning runs on a remote model. Both true, neither a secret.&lt;/p&gt;</description></item><item><title>The personal agent trap</title><link>https://blog.vnykmshr.com/writing/personal-agent-trap/</link><pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate><guid>https://blog.vnykmshr.com/writing/personal-agent-trap/</guid><description>&lt;p&gt;Spent a week going through the personal agent ecosystem &amp;ndash; OpenClaw, ZeroClaw, PicoClaw, the whole *Claw family. Channel testing, security audit, the whole thing.&lt;/p&gt;
&lt;p&gt;If you want a personal assistant that messages you reminders, triages your inbox, schedules things, posts updates &amp;ndash; these frameworks are actually good at that. OpenClaw connects to 50+ channels out of the box, the setup is real, it works. For that, a $7 VPS and an afternoon gets you something useful.&lt;/p&gt;</description></item><item><title>Reading code</title><link>https://blog.vnykmshr.com/writing/reading-code/</link><pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate><guid>https://blog.vnykmshr.com/writing/reading-code/</guid><description>&lt;p&gt;Scanners find what&amp;rsquo;s syntactically wrong. The interesting issues live in assumptions &amp;ndash; and assumptions don&amp;rsquo;t have signatures.&lt;/p&gt;
&lt;p&gt;Not scanning, not fuzzing. Just reading code the way you&amp;rsquo;d read it if you were about to own it in production. Entry points, data flows, where input meets trust.&lt;/p&gt;
&lt;p&gt;Missing headers, outdated dependencies &amp;ndash; that&amp;rsquo;s the baseline, scanners handle it fine. The interesting issues live a layer deeper. A path that&amp;rsquo;s protected in one subsystem but wide open in another. A parse-time operation that nobody thought to bound. Code that was correct when it was written but the system grew around it.&lt;/p&gt;</description></item><item><title>Primary PII</title><link>https://blog.vnykmshr.com/writing/primary-pii/</link><pubDate>Tue, 05 Nov 2024 00:00:00 +0000</pubDate><guid>https://blog.vnykmshr.com/writing/primary-pii/</guid><description>&lt;p&gt;A regulation arrives. Or an auditor. Or a new market with stricter rules. PII is a thing the application was always sloppy about, and now it is a thing the application has to be careful with. This is how PII externalization begins: as someone else&amp;rsquo;s deadline, landing on the engineering team as an initiative.&lt;/p&gt;
&lt;p&gt;The work looks like encryption at first. It is not.&lt;/p&gt;
&lt;h2 id="identify"&gt;Identify&lt;/h2&gt;
&lt;p&gt;The first question is not how to encrypt. The first question is what to encrypt.&lt;/p&gt;</description></item></channel></rss>