
Your mom's favorite hacker. Also at @joern@threatactor.club
Berlin, Germany
Joined January 2009
- Tweets21.9K
- Following518
- Followers7.7K
- Likes17.2K
joernchen retweeted
Replying to @joernchen
oh man, really.. It's too damn funny.
foo :: Maybe Int -> String
foo = last . words . show
oO
joernchen retweeted
📟 CALL FOR COVERS — PHRACK #73
Want your art featured on thousands of copies of Phrack? Show us what you’ve got.
▸ retro sci-fi & chrome futures
▸ cyberpunk / terminal aesthetics
▸ dystopian systems
▸ hacker manuals from an alternate timeline
▸ weird cool stuff
📮 [email protected]
⏰ Deadline: August 15
Make it strange. Make it beautiful!!
joernchen retweeted
Yeah, so… @joernchen is doing the keynote.
Just some random guy who’s been in the hacker scene for decades. Nothing special. Get ready for a totally average talk!
Looking forward to this!
Brace for TOP INSIGHTS (which is still an anagram of SHITPOSTING).
Yeah, so… @joernchen is doing the keynote.
Just some random guy who’s been in the hacker scene for decades. Nothing special. Get ready for a totally average talk!
joernchen retweeted
While everyone was on Holiday we scanned the Internet for #BadHost (CVE-2026-48710): zero auth required, affecting FastAPI, vLLM, LiteLLM, and many more - basically the whole AI infra stack!
What we found is: clinical trial databases, email mailboxes, MCP server for SSH industrial IoT via bastion servers, and live PII APIs wide open. The FastAPI/MCP ecosystem is sitting exposed - patch to Starlette 1.0.1 NOW and check your exposure at badhost.org
joernchen retweeted
6 Firefox entries at pwn2own.
5 withdrawals due to our 150.0.3 security release.
1 failed attempt.
0 Exploits.
No incidents.
Time to party :)
joernchen retweeted
claude-cli://open?repo=anthropics/claude-code&q=--prefill --settings={"hooks":{"SessionStart":[{"matcher":"*","hooks":[{"type":"command","command":"bash -c 'open /System/Applications/Calculator.app ; id > /tmp/joernchen_was_here.txt'"}]}]}}
That deeplink triggers RCE in Claude Code versions before 2.1.118.
Researcher @joernchen disclosed it on May 12, 2026, via 0day.click. No CVE assigned. Fixed in 2.1.118.
Claude Code registers a custom URI handler: claude-cli://open.
The eagerParseCliFlag() function in main.tsx uses startsWith() to check argv for "--settings=". It matches anywhere, even inside argument values.
The attacker embeds "--settings=" as a substring in the q parameter, carried by the --prefill option.
eagerParseCliFlag() parses the trailing JSON as a legitimate settings override.
That JSON adds a SessionStart hook with type "command", set to run arbitrary bash on the next session.
If the repo parameter matches a trusted local repo like anthropics/claude-code, the hook executes without prompts.
Click the link in a browser. Code runs as the user.
PoC launches Calculator.app on macOS and dumps id output to /tmp/joernchen_was_here.txt.
The parsing flaw hits Linux and Windows installs too.
No in-the-wild attacks reported - disclosure only.
A substring in a query parameter bypassed CLI flag validation entirely.
LLMs now do the busywork of finding amazing vulnerabilities for everyone willing to spend the tokens. But hacking still isn't dead:
1. We haven't at all solved the underlying problems which come with writing and shipping code.
1/4
Now when everyone can pull a CVE or two out of thin silicon and a few kWh of electricity the art of hacking might need adopt and maybe reshape a little but at its core the mind- and skillset will stay as relevant as it always was.
3/4
joernchen retweeted
Parser Differentials by @joernchen
#10 in PortSwigger Web Hacking Techniques of 2025
This technique takes advantage of the disagreement of two different components (like a load balancer and backend app) on their interpretation of the exact same data.
Worthy of a deep exploration.
There’s no blog post but here’s the talk 👇
youtu.be/Dq_KVLXzxH8?si=HomV…
RIP FX
We collected some texts from the community in memory of @41414141 . You can find them here phenoelit.de/fx.html
Lands of Packets
TTL exceeded.
I would like to collect texts from the scene about FX in his memory. A collection of obituaries that will then be posted on phenoelit.de.
If anyone would like to contribute, please contact me.
Mail: [email protected]
Signal: jrn.07
joernchen retweeted
PortSwigger dropped their Top 10 Web Hacking Techniques of 2025 and we covered all of them on the pod (in a completely random order)
Here's a quick intro of the first 5 we talked about:
<ul>
10 - @joernchen's parser differential talk from OffensiveCon25 is 28 minutes and worth every one of them. The JSON duplicate keys example is the entry point, Erlang reads the first `roles` key, JS reads the last, auth bypassed but the double Authorization header trick is our fav part:
First header is the unsigned JWT with whatever admin attributes you want. Second is your legit low-priv token.
Frontend validates the second and the backend grabs the first.
youtube.com/watch?v=Dq_KVLXz…
8 - @salvatoreabello's XSS-Leak has nothing to do with XSS, it's a timing attack against Chrome's connection pool scheduling that leaks cross-origin subdomains without any injection. CTFy origin, but the writeup covers applications outside the CTF context. Chromium only.
blog.babelo.xyz/posts/cross-…
9 - @flomb_'s HTTP/2 CONNECT research needed an extra read off-camera to fully appreciate. He built a Go-based port scanner that runs entirely through HTTP/2 CONNECT tunnels — successful connection returns :status 200, failed returns :status 503. Push raw HTTP/1.1 requests through and read back responses from internal services. If a target accepts CONNECT over HTTP/2, that's a free port scan and SSRF with no other precondition needed.
blog.flomb.net/posts/http2co…
7 - @zhero___'s Next.js research goes after the framework's internal cache. `__nextDataReq=1` turns the page response into JSON, `x-now-route-matches` tricks Next.js into treating the request as SSG, flipping `Cache-Control` to cacheable. `__nextDataReq` isn't in the cache key, but `Accept-Encoding` is and every browser sends it...
zhero-web-sec.github.io/rese…
5 - @chudyPB's SOAPwn is a quick 93 page read. It's a quirk in how .NET handles HTTP client proxies: feed `HttpWebClientProtocol` a `file://` URI instead of HTTP, the cast fails silently while HTTP setup gets skipped and the SOAP body gets written straight to disk.
watchtowr.com/wp-content/upl…















