A directory listing reached the kernel stack.
An overlong archive name overran a tarfs_readdir() buffer on 15.1-RELEASE / amd64.
KI Navigator November 18, 2026 · Nuremberg
A candid story about building iteratively with Claude Code and ending up on the HackerOne VDP leaderboard for Germany.
* VDP = Vulnerability Disclosure Program
25 years of consulting for enterprise to Fortune 500. On-prem, cloud, AI, security, and development — paid projects in 30+ languages before AI came around.
Sole IT Engineer next to the CEO. Re-developed the platform from 2014–2019 serving 30M+ monthly users, then exited to eBay.
Tasked to fix a critical performance bottleneck. Found a $2M+ accounting error while rewriting the system. Cut monthly job runtime from 2+ hours to 5 minutes.
Rebuilt flash-sale push notification infra for the largest fashion retailer in the US. 10M+ concurrent pushes, delivery cut from 2 days to under 10 minutes.
If you recognize my last name, it's probably because my grandfather invented the BobbyCar and was the founder of BIG Spielwaren.
Build me a billion dollar business.
Make no mistakes!
Find me a $100k bug bounty!
No false positives!
State, orchestration, findings, submissions, operator UI.
Full session prompts: exploit-web-attacking, recon-subdomain-discovery, audit-finding-verification, …
Reusable techniques: subdomain-takeover-detection, nuclei-scanning, playwright, sqlmap, …
A shared bounty-cli standardizes every host run.
Deterministic infra, reproducible deploys, auditable config.
Every risky phase emits an artifact that must pass a gate.
Central server first. One source of truth.
Good for early iteration. Bad for token and context efficiency. Replaced with a shared Go CLI.
Parallel campaigns across architectures: Linux for web & Android, macOS for BinDiff fuzzing, iOS firmware diffing & Simulator app testing.
Agents own the session identity. Skills are composable tools agents invoke. Clear contract between the two.
Model → tool schema → inference → tool call → result → inference → …
High token cost per stepPrompt → agent runs locally → skills execute in-process → results to server
Tokens only for reasoning_sip._tcp.opera.com. 86400 IN SRV 0 0 5060 e1.viju.vc.
_sips._tcp.opera.com. 86400 IN SRV 0 0 5061 e1.viju.vc.
e1.viju.vc — a domain that no longer existed.
viju.vc.
viju.vc manually, pointed e1.viju.vc at my infrastructure, and confirmed the takeover.
Project rules, coding conventions, architecture overview. Loaded automatically every session.
Learnings from past sessions. Mistakes, patterns, decisions the agent shouldn't repeat or forget.
The specific task. Short, precise, assumes the agent already knows the context from the layers above.
Map the surface and emit concrete candidate artifacts.
Probe inside a bounded role with explicit success criteria.
Reject weak artifacts before they contaminate later phases.
Chain only validated pieces into a higher-value outcome.
Update prompts, routing rules, and profiles from misses.
“Investigate this repo. How is it built? What framework, what output? Create an initial git commit if there isn't one.”
“Build a GitLab CI/CD pipeline with Auto DevOps for Kubernetes deployment. Look at similar projects for reference.”
“Set up GitHub Actions to build a Docker image and deploy to Kubernetes. Look at similar projects for reference.”
“Commit, push, and check the pipeline status. If it fails, read the logs and fix it. Repeat until the pipeline is green.”
Build passes → image pushed → deploy triggered → pods running. Each stage gates the next.
curl https://your-domain.com returns 200. If not, iterate. You are done when the site is live.
/code
9 agents. One command.
/code <feature> — the Architect agent asks up to 5 clarifying questions, then designs schemas, contexts, LiveViews, and routes.
Feature Developer implements the following 2,280 lines of project patterns — domain-driven design, typed schemas, LiveView sessions, Petal UI components.
Feature Tester runs mix quality. Feature Translator wraps all user-facing strings in gettext and translates to every supported locale.
Feature Committer analyzes the diff, determines conventional commit type and scope. No commit without green tests. Each agent gates the next.
Higher-order commands (/gdpr-audit, /audit-legal, /public-launch) re-run audits after /code. Findings become new /code runs.
“Explore our current setup in read-only mode on this Kubernetes cluster, then do a full backup.”
“Research the best upgrade path. Do not skip intermediary steps. Verify dependencies and requirements for the new versions.”
“Start the upgrade procedure. You are done when all services that are currently running and up are successfully upgraded and responding.”
Each intermediary version (v15 → v16 → v17 → v18) is a validated artifact. PostgreSQL migrated in lockstep. Only proceed when the previous hop is healthy.
Failures at any hop feed back into the next attempt. The agent retries with context, not from scratch.
Security is the example. The architecture is the reusable asset.
But 47 days after my talk on April 16, 2026,
this Boris Cherny interview came out.
“My job is to write loops.”
Boris Cherny · Anthropic
Acquired Unplugged · published June 2, 2026 · 11:50
So I kept writing loops. They went somewhere I didn’t expect.
Start where you’d expect me to: the browser engines that render the whole internet.
CVE-2026-112680. Apple publicly credits this research.
Crafted content could trigger an out-of-bounds read in WebKit.
Processing that content could expose data from process memory.
Apple added bounds checks and shipped the repair across its platform family.
Safari · macOS
iOS · iPadOS
visionOS
One CVE, listed in five Apple security advisories.
Fixed in 27.2 releases and iOS / iPadOS 26.7.2. Apple advisory · el8.nl
Google VRP report 554026885: Background Fetch and site-data clearing.
Background Fetch omitted the service worker’s StorageKey when handling the response.
A Clear-Site-Data response cleared the target’s first-party storage, without CORS opt-in.
The same response through ordinary Fetch left the target’s stored value intact.
Background Fetch:
value deleted.
Ordinary Fetch:
value preserved.
Reproduced on Chrome Canary 154 / macOS arm64. Google raised severity to S2.
Requires a target endpoint returning Clear-Site-Data. A patch was proposed; a shipped fix remains unconfirmed.
The same loop, pointed at the banking tool on my own machine. This is where it stopped being abstract.
Jameica and Hibiscus had been part of my banking workflow for over 15 years.
Archive paths could escape the intended restore directory.
External XML entities enabled local file access and server-side requests.
XMLDecoder could turn a data import into code execution.
A familiar file
crosses a trust boundary.
Backups, invoices and saved settings are inputs, too.
Locally reproduced findings, reported 25 August 2026.
The fix had to protect users without destroying their existing data.
Read legacy wallet data without XMLDecoder; write a typed JAXB format.
Preserve supported plugin data and migrate it on the next save.
Old wallet still loads. Malicious wallet is rejected without executing code.
Report.
Repair.
Retest.
The same loop, now working with the maintainer.
27 October: maintainer confirmed the final PR merged; releases were still planned.
Three BSD operating systems. Memory corruption in code that runs as root. The loop did not stop at the application layer.
An overlong archive name overran a tarfs_readdir() buffer on 15.1-RELEASE / amd64.
An address leak plus a label-release flaw in ldpd produced a root-owned result on MPLS / arm64.
Heap and stack corruption in isakmpd and npppd crossed worker-to-monitor trust lines.
All in controlled lab setups. Several require non-default daemons, MPLS, or privileged preparation. No remote-to-root chain was demonstrated end to end.
NetBSD 11 / arm64. SCTP state-cookie handling carried attacker-controlled input into an unchecked copy inside the kernel.
A signed state cookie still carried the peer’s original, unchecked bytes.
The isolated test escalated a uid 1000 process to an interactive root shell.
The patched kernel stayed healthy and the process stayed uid 1000.
uid 1000↓uid 0
Original kernel: root shell.
Patched kernel: still uid 1000.
SCTP-enabled audit kernel, listening endpoint, QEMU guest-loopback test. A conditioned lab proof, not an independent remote exploit on a default install.
clawdhost.de
25 seats
1 month Starter · €10 AI budget
agent-host.net
25 seats
1 month Developer plan
2342.ai
25 vouchers
€20 credit · 90 days
pwnry.io
100 audits
Skills incl. bundled binaries
A few gifts for the KI Navigator crowd.
25 places · €10 AI budget.
3 quiz questions.
25 places · no subscription.
3 quiz questions.
25 vouchers · 90 days.
3 quiz questions.
100 places · 90 days.
3 quiz questions.
Clawdhost, agent-host.net & 2342.ai: 25 places each · pwnry.io: 100 places · Redeem on site during KI Navigator · 3-question quiz.