All research

Research.

embargoed posts go up once the fix ships
10 write-ups, 2 more under embargo
filter

LARP-2026-014memory18 min read

A two-byte heap overflow in a font shaping engine

The engine sizes a buffer from one field in the font and copies data based on another. A crafted font makes them disagree, which gives a two-byte heap overflow. We used it to corrupt a function pointer.

LARP-2026-012web11 min read

SSRF through PDF rendering in a document preview service

The service rendered uploaded PDFs on the server, and PDFs can load remote resources. That was enough to reach internal endpoints, including the cloud metadata service.

LARP-2026-011mobile9 min read

Intent redirection in an Android banking app

An exported activity forwarded any intent it received, which gave other apps access to components that were supposed to be private. We cover the bug, the fix, and a lint rule that catches it.

LARP-2026-010crypto22 min read

Recovering an IoT pairing key from two packets

The pairing counter resets on every reboot, so the same nonce gets used twice. With two captured handshakes, the session key can be recovered.

LARP-2025-031kernel26 min read

Use-after-free in a Linux filesystem rename path

A race between two rename calls drops a reference one time too many. We explain the race and how we made the exploit reliable on stock hardware.

LARP-2025-027hardware15 min read

Bypassing secure boot with a $40 voltage glitcher

A glitch at the right moment skips the signature check in the boot ROM. Most of the work was finding the timing. The bug is in ROM, so it cannot be patched.

LARP-2025-008memory30 min read

Type confusion in a JavaScript JIT, for beginners

A step by step walkthrough, from how the JIT works to a working read/write primitive. Everything in it can be reproduced on a laptop.

LARP-2024-022tooling7 min read

Releasing our file parser fuzzer

The harness generator we use internally, cleaned up and released under the MIT license.

that's all of it for now