Eight
bits of trust: eMudhra’s CA keys were single-byte integers
New details on the compromised eMudhra CA: all eight private keys
were single-byte values (4, 56, 115, 155, 156, 230, 66, 237) on P-384,
so a loop of 255 scalar multiplications recovers them in milliseconds.
The root cause was a bug in a key-ceremony script, which created a
second, weak key pair on the HSM. Human error then used those keys for
the CSR. Scott Helme says he recovered the keys with Claude and a single
prompt.
An attacker inserts a ~4 KB entry into the QPACK dynamic table and
then references it thousands of times with single-byte pointers, which
gives a 4,064:1 ratio of memory used to bytes sent. A second vector
packs more than 160,000 unique header names into one compact HEADERS
frame. Seven of ten tested implementations were vulnerable, and Bun also
has an integer overflow that causes an infinite CPU loop. Fixes are out
in quic-go 0.57.0, quiche 0.29.3 and lsquic 4.9.0. Bun, hyperium’s h3
and aioquic/mitmproxy remain unpatched.
Jailbreaking
the Switch 2: three bugs chained to native code execution
ns2jb chains three bugs. The first is a SmileBASIC integer overflow
that gives out-of-bounds memory access through array removal. The second
is a filesystem-service buffer overflow on paths with backslash
parent-directory components. The third is a loader trust exploit that
swaps in arbitrary code by controlling when the loader receives IPC
responses from fs. The writeup is thorough, and the demos include
character mods, save backup access and memory-mapped peripheral
control.
Script
dependencies with Nix: reproducible, language-agnostic, no
containers
Nix writer helpers such as writePython3Bin, plus
equivalents for R, Bash, Ada and other languages, bundle a script with
its Python packages and system binaries. A flake.nix that
pins nixpkgs declares the dependencies. The script itself stays
unmodified, and a wrapper provides the environment. The result is
identical across machines and over time, with no virtualenvs, no
containers and no drift.
Jank:
Clojure semantics on LLVM, with direct C++ interop
Jank runs Clojure’s persistent data structures and functional model
on an LLVM JIT. Its interop reaches C++ templates, virtual functions,
RAII and exceptions without intermediate bindings. It ships Cargo-style
dependency management and nREPL integration, and it aims at game
development and systems work that Clojure on the JVM cannot reach.
UUIDv7 doesn’t have
the properties you think
Under high load, UUIDv7 timestamps can run ahead of real time by any
amount, and the RFC permits this. Without sub-millisecond counters,
tight loops easily produce out-of-order IDs that are still
RFC-compliant. The embedded timestamp also leaks creation time to anyone
who receives the ID. Only uniqueness and collision resistance are
guaranteed across implementations, so check your implementation before
you rely on ordering for database sorts.