Pwnkemon

Notes from the team

Architecture decisions, technique writeups, and product stories from building an agentic security platform. Updated when we ship something worth writing about.

Story·18 September 2026·7 min read

Shai-Hulud is the worm we designed for

September was the npm ecosystem's worst month on record: a self-propagating worm that hit ~800 packages and harvested cloud tokens, plus a phished maintainer pushing trojanized chalk and debug with 2.6 billion combined weekly downloads. Here's exactly what our no-code-on-your-runner architecture does when a worm like this is live — and, just as importantly, what it doesn't touch.

Read →
Technique·11 September 2026·6 min read

Zero-CVE malware: your scanner is looking for the wrong thing

The largest supply-chain campaigns of 2026 — hundreds of malicious packages, millions of downloads — had zero CVEs. They weren't vulnerable; they were legitimate packages that turned hostile. Most scanners are a vulnerability database with a UI, and a database can't see a package that isn't in it. Here's the blind spot, and what actually catches a hostile dependency.

Read →
Architecture·4 September 2026·7 min read

Prompt injection is now a pentest finding. Here's how we test for it.

HackerOne reported a 540% surge in prompt-injection reports this year, and the incidents stopped being toy demos — coding agents talked into remote code execution, RCEs rated 9.6 in core agent tooling. If your product wires an LLM to tools, prompt injection is a finding class now. Here's how we think about testing an agent, from the people who build one that does the attacking.

Read →
Reference·28 August 2026·6 min read

What actually goes in a SOC 2 evidence pack (and what auditors reject)

Someone told you a SOC 2 audit needs a penetration test. True, but not the whole truth: what the auditor wants is control-mapped evidence they can staple into the file, not a raw scanner dump. Here's what belongs in the pack, what quietly gets bounced, and how our $7,999 SOC 2 Evidence Pack is built to clear the bar.

Read →
Technique·21 August 2026·7 min read

When three 'medium' findings are actually one critical

Give a raw scanner an outdated crypto library and it hands you four rows. A senior pentester reads it as one problem — one package, one upgrade — and then asks the question the scanner didn't: does that upgrade even install? Cross-CVE synthesis, impossible-fix detection, severity honesty, and function-level reachability, or, what 'a real pentester wouldn't call this shit' looks like as engineering.

Read →
Story·15 July 2026·7 min read

From a bare IP to root: watching our agent own a real machine

We pointed Pwnkemon Red at Enigma, a Linux target on Hack The Box, and gave it one instruction: get root. 18 steps later it had both flags — reading a leaked onboarding doc off an NFS share, reusing that password to reach an internal app, chaining the app to code execution, cracking a hash to become a user, and spotting a command injection in a root service to finish the job. Here's the full attack path, in order.

Read →
Architecture·9 June 2026·6 min read

We put an LLM in the triage loop on purpose. Here's the reasoning.

A rules engine can tell you a CVE exists. It can't tell you whether it matters in your repo. That judgement — the part a senior engineer does in their head before they bother you — is exactly what a language model is good at, and exactly where most scanners stop. Here's where the model helps, where it doesn't, and the guardrails that keep it honest.

Read →
Architecture·9 June 2026·7 min read

We scan your private repo. Here's why we can't leak it.

Handing a third party read access to your source code is a real risk, and 'trust us' is not an answer. So we built the scanner so that even a fully compromised scan container can't exfiltrate your code or steal a credential. No long-lived secrets on the box, per-scan tokens, locked-down egress. Here is the actual architecture.

Read →
Story·5 June 2026·6 min read

IronWorm wants to run on your CI runner. Ours doesn't run there at all.

JFrog and Ox Security disclosed IronWorm: a self-propagating npm worm with a Rust infostealer that fires from a preinstall hook and hunts 86 env vars and 20 credential files. Here's exactly what our no-code-on-your-runner architecture buys you when a worm like this is live, and, honestly, where it doesn't help.

Read →
Story·25 May 2026·7 min read

13 minutes against OWASP Juice Shop: anatomy of a real Pwnkemon scan

We pointed Pwnkemon at the most-scanned vulnerable web app in the world and let the agent decide what to look for. 13 minutes later: 11 confirmed findings including a critical SQL injection that took the app offline and a JWT key exposure path to admin takeover. Here's what the agent actually did, in order.

Read →
Story·24 May 2026·4 min read

The day our daily self-scan saved our launch

Six hours before launch, our own product caught seventeen CVEs we'd picked up overnight. Including a cryptography library advisory published less than twelve hours earlier. Here's what dogfooding actually looks like.

Read →
Architecture·24 May 2026·6 min read

Why we don't run scanners on your GitHub runner

Every other security GitHub Action runs scanner code on your CI runner, the same runner that holds your deploy secrets. We think that's the wrong tradeoff. Here's the architecture we chose instead.

Read →
Architecture·23 May 2026·5 min read

What an LLM-triaged security report should look like

Most scanners ship you a database query result and call it a report. We think the report IS the product. Here's the anatomy of a Pwnkemon scan output: what's in it, what's deliberately left out, and why.

Read →
Blog | Pwnkemon