Hi! Author of the talk here.

To clarify: 1 was actually a 0day. Classic printf injection: %n provides memory writes, multiple X.509 certificates in one PEM file to reenter to defeat ASLR, and from there it calls execv@plt. The payload just execv's the certificate, which is a polyglot by simply inserting a shebang and bash command in the PEM file since I was lazy.

2 was unfortunately collided before I managed to exploit it and there was not enough time to properly explain it in the talk. Essentially, after using a logic bug to corrupt some buffer size calculations, we get memory corruption in the RSA-PSS code. Unfortunately, since the 2nd phase of RSA-PSS is hashing, our OOB write is hashed output of an input we control with a hashing algorithm we control. An attacker will obviously choose SHA-1 here since it is the cheapest. The actual target of the OOB write is the glibc malloc_chunk header, specifically the size field directly in front of the buffer, which is 8 bytes, has 3 flag bits, and ~8 bits of acceptable size values, giving us ~53 bits of those 8 bytes that we need to brute-force. I did some testing with instrumentation to emulate having a preimage, and subsequent free()s can be used to exploit this, again with multiple certificates to bypass ASLR too, but I did not pursue this much further since it was reported by the other team and patched already. Since a lot of distros seem to be unaware of it, I'd recommend using the CVE system =)

Cheers!

On 9/14/26 21:28, Clemens Lang wrote:
Hi,

On 13. Sep 2026, at 02:44, Sam James <[email protected]> wrote:

They also mention another vulnerability in the slides that is in the
talk but I've not seen that yet. A PoC is available in their repo [3].
I see two potential vulnerabilities discussed in this talk:

(1) A RCE in `gpgsm` 2.4.9 when invoked as `gpgsm --debug all --import bad.cert`, 
with the bad.cert file at [1]. This is apparently a 0-day, as they say it was not 
reported to GnuPG. I’m not sure how widely used this code is, and how many users 
regularly call `gpgsm --import` with untrusted inputs. The researcher(s) say 
"if you're here to write a patch for the calc pop: sm/certcheck.c:634 lol” for 
this problem, which may be a pointer to debugging it.

(2) An integer underflow followed by a buffer overflow in libgcrypt’s 
RSASSA-PSS verification discussed in slides 38-45 of [2], fixed in libgcrypt 
commit 0d64fc2 [3] (also reported by somebody using Claude Code) released in 
(apparently) libgcrypt 1.12.3 without a CVE assigned. The researcher(s) claim 
this can be used for RCE from the S/MIME verifier and GnuPG with a 53-bit 
preimage attack (they don’t say which hash algorithm, but I wouldn’t be 
surprised if SHA-1 is sufficient).

Personally, I’m not all that interested in (1), but (2) seems to be in code 
that’s widely used, and there should probably be a CVE assigned for it so we 
can track fixes and backports.


[1]: https://git.gay/49016/gpg-fail-aftermath/src/branch/main/pocs/bad.cert
[2]: https://git.gay/49016/gpg-fail-aftermath/src/branch/main/slides.pdf
[3]: 
https://gitlab.com/redhat-crypto/libgcrypt/libgcrypt-mirror/-/commit/0d64fc2


Reply via email to