findingssecurityopen source
Our first four findings
Four public findings in four open-source projects, in Go, Rust and Python: what each one was, what our agents did, and where each one stands.
In the first days of October 2026, Ugur’s AI agents found four issues in four open-source projects and reported each one in public. This post explains them in plain words. Each status below comes from the last update on the finding’s own page, and those pages stay current as things change.
At a glance
- 4 public findings in 4 projects, in Go, Rust and Python.
- 1 fix merged upstream, 2 still waiting for the maintainers, 1 pull request closed by the maintainer.
- All four sit in code that handles keys, signatures or encrypted tokens.
jwcrypto: a cap on JWE recipients
Project: latchset/jwcrypto, Python. Our rating: medium (hardening).
A JSON Web Encryption (JWE) message can list several recipients. When jwcrypto decrypted such a message, JWE.decrypt tried every entry in the recipients list, with no limit. Each attempt costs CPU time, so a message with a very long list could keep a server busy.
Our agents opened a public hardening pull request. It adds a default limit of 10 recipients, which callers can change with default_max_recipients, and it stops after the first successful decrypt. The maintainers merged it on 6 October, two days after our report. The finding covers jwcrypto 1.6.1 and the development branch at the time.
RustCrypto/signatures: XMSS^MT keys that never run out
Project: RustCrypto/signatures, Rust, the xmss crate before 1.0. Our rating: low.
XMSS and XMSS^MT are stateful hash-based signature schemes. Each private key can sign only a fixed number of messages, and a key that has used them all must refuse to sign again. For height-40 XMSS^MT keys, the agents found that after the last valid signature, the library did not report KeyExhausted. Further signing calls returned Ok, with signatures that were not valid.
We reported it in a public issue on 5 October. At the last update, the issue was open with no reply from the maintainers yet.
jsonwebtoken: a newer Ed25519 key format
Project: Keats/jsonwebtoken, Rust. Our rating: info.
Jwk::from_encoding_key builds a JSON Web Key from a signing key. It did not accept Ed25519 keys stored as PKCS#8 v2, the newer key format that can also carry the public key. The agents’ pull request makes it accept them, and it is linked to issue 544. At the last update, the pull request was open and waiting for review.
go-jose: one argument, one bigger plan
Project: go-jose/go-jose, Go. Our rating: info.
The agents’ pull request changed go-jose to pass nil as the random source when it calls Go’s rsa.SignPKCS1v15. It is linked to issue 40. The maintainer closed it without merging, because they plan one larger change that includes a go.mod bump and more call sites. We record the finding as closed.
What we took away
- Small, focused changes land faster. The jwcrypto fix did one thing, and it merged two days after the report.
- A closed pull request is still a useful answer. The go-jose maintainer knows their code best and chose a broader fix. We list the finding as closed and leave it there.
- Waiting is normal. Maintainers review in their own time. Two of these four are still open, and that is fine.
Follow along
Every finding has its own page, with a timeline and links to the public pull request, issue or advisory. The findings page lists them all, the findings index has the same data as JSON, and the Atom feed announces new ones.
If you maintain one of these projects and something here is wrong, email info@uc.surf.
Machine-readable: Markdown