Public pull requests and issues opened by the Trail of Bits engineers on the first week of Patch the Planet. PRs are split into merged and open. Issues are split into open and closed-with-a-fix.
This page was last updated on June 22nd, 2026 at 11:00am ET
Totals: 37 merged PRs, 27 open PRs, 32 open issues, 19 closed-fixed issues.
These upstream fixes were authored by aiohttp maintainers from Trail of Bits' privately reported findings, so they appear under the maintainers rather than the reporting engineer.
Merged (8)
- aio-libs/aiohttp #12817: Improve websocket checks
- aio-libs/aiohttp #12824: Preserve host-only cookie scope across CookieJar save/load
- aio-libs/aiohttp #12825: Scope DigestAuthMiddleware credentials to the request origin
- aio-libs/aiohttp #12826: Enforce max_line_size on fragmented request target and reason in C parser
- aio-libs/aiohttp #12828: Bounded unread compressed drain
- aio-libs/aiohttp #12830: Bound pipelined request queue per connection
- aio-libs/aiohttp #12831: Payload close on disconnect
- aio-libs/aiohttp #12835: Tls server hostname pool key
None. The maintainers requested that only issues be submitted/opened, not patches.
Open (18)
- golang/go #79851: crypto/tls: HelloRetryRequest accepts changed PSK identities on second ClientHello
- golang/go #79853: crypto/tls: TLS 1.3 ticket_age_add accepts partial random reads
- golang/go #79854: crypto/tls: SupportsCertificate can disagree with TLS 1.2 signature rules
- golang/go #79855: crypto/x509: CreateCertificate accepts serial number zero
- golang/go #79856: crypto/x509: ParseCertificate accepts rfc822Name values with empty domains
- golang/go #79857: crypto/x509: OIDFromInts can overflow the first subidentifier for large 2.x OIDs
- golang/go #79858: crypto/x509: deprecated CRL generation path can emit duplicate reasonCode extensions
- golang/go #79859: crypto/tls: ECH server accepts client-selected HPKE suite not advertised by ECHConfig
- golang/go #79860: crypto/x509: parsers accept trailing DER inside several X.509 structures
- golang/go #79861: crypto/tls: LRU ClientSessionCache inserts nil entries when deleting missing keys
- golang/go #79862: crypto/tls: SetSessionTicketKeys can race with automatic ticket-key rotation state
- golang/go #79863: crypto/tls: weak certificate cache can expose caller-mutated certificate bytes
- golang/go #79864: crypto/x509: MaxConstraintComparisions is documented but not enforced
- golang/go #79865: crypto/x509: CertPool.Subjects exposes mutable internal subject slices
- golang/go #79866: crypto/tls: TLS 1.3 post-handshake messages can bypass non-advancing record limit
- golang/go #79867: crypto/x509: Darwin verification can crash on invalid UTF-8 DNSName
- golang/go #79868: crypto/x509: ParseOID is slow on very large textual OID components
- golang/go #79959: crypto/mldsa: Verify accepts uninitialized PublicKey with empty signature
Merged (5)
- go-jose/go-jose #239: jws: don't strip internal whitespace before parsing JSON
- go-jose/go-jose #240: Handle JWE JSON without protected header
- go-jose/go-jose #243: jws: choose verification key per-signature (maintainer-authored fix for Trail of Bits-reported #241)
- letsencrypt/borp #17: Escape generated SQL identifiers
- letsencrypt/borp #19: Remove UpdateColumns
Open (4)
- go-jose/go-jose #250: Reject malformed Ed25519 JWKs
- go-jose/go-jose #254: Filter unauthenticated JWE identity headers
- letsencrypt/borp #20: Document SQL generation review guidance
- letsencrypt/boulder #8796: Use fresh account state for ACME auth
Open (4)
- go-jose/go-jose #241: Protected JWS identity headers are not bound to the verified key
- go-jose/go-jose #249: go-jose accepts forged EdDSA JWS with malformed embedded OKP JWK
- go-jose/go-jose #253: JWE exposes unauthenticated identity headers after decryption
- letsencrypt/boulder #8795: wfe2: stale account cache can authenticate mutations with old account state
Closed — resulted in a fix (4)
- go-jose/go-jose #237: ParseSigned strips whitespace before JSON parsing and can create JWS header members
- go-jose/go-jose #238: JWE JSON without a protected header can panic after successful decryption
- letsencrypt/borp #15: UpdateColumns can reuse cached update plans across column filters
- letsencrypt/borp #16: Generated SQL identifiers should escape embedded quote characters
Merged (2)
- nats-io/nats-server #8275: Clear external auth on account claim updates
- nats-io/nats-server #8276: Refresh inherited JWT default permissions
Open (2)
- nats-io/nats-server #8277: Recheck client pinned certs against reload options
- nats-io/nats-server #8278: Enforce service import max payload
Open (3)
- nats-io/nats-server #8270: Client TLS pinned-cert reload validates existing clients against old pins
- nats-io/nats-server #8271: Service-import request metadata can exceed max_payload
- nats-io/nats-server #8274: JetStream push consumers can deliver to subjects creator cannot publish
Closed — resulted in a fix (3)
- nats-io/nats-server #8268: Malformed JetStream message-schedule restore state can panic the server
- nats-io/nats-server #8272: JWT account updates leave stale external authorization enabled
- nats-io/nats-server #8273: JWT account updates leave inherited default permissions on connected clients
Open (3)
- freenginx/nginx #31: Guard active threaded sendfile task context
- freenginx/nginx #35: Fix Perl async callback refcounts
- freenginx/nginx #36: Fix recursive script no-cacheable flushing
Open (3)
- freenginx/nginx #22: HTTP/2 threaded sendfile reentry races shared connection task context
- freenginx/nginx #26: HTTP Perl async callbacks store unrefcounted SV/CV pointers
- freenginx/nginx #27: Script no-cacheable variable re-evaluation can overflow generated buffers
Closed — resulted in a fix (5)
- freenginx/nginx #21: HTTP/3 DATA prefix can exceed its heap allocation
- freenginx/nginx #23: mail auth HTTP can leave a stale session ctx after temp-pool destroy
- freenginx/nginx #24: mail proxy leaves a stale upstream connection pointer after close
- freenginx/nginx #25: gzip filter leaves ctx->preallocated stale after ngx_pfree()
- freenginx/nginx #28: gRPC request serialization overflows on oversized HPACK :path
Merged (2)
- pyca/cryptography #14933: Early error on GCM configuration with short tag length and delayed tag
- pyca/cryptography #15016: Add more robust parameter processing: DH
Open (4)
- pyca/cryptography #14992: Add more robust parameter and key processing for DH, DSA, and RSA
- pyca/cryptography #15015: Add more robust key processing: RSA
- pyca/cryptography #15017: Add more robust key and parameter processing: test vectors
- pyca/cryptography #15018: Strengthen validation of end-entity key usage when present
Merged (1)
Open (1)
Merged (7)
- python/pythondotorg #3008: Add zizmor workflow and fix findings
- python/pythondotorg #3014: Validate release-file URL metadata
- python/pythondotorg #3015: Tighten legacy v1 API boundaries
- python/pythondotorg #3016: Scope release-file bulk deletion to the requested release
- python/pythondotorg #3018: Keep 404 legacy links on the legacy host
- python/release-tools #403: Fail add_to_pydotorg on release-file create failures
- python/release-tools #411: Fix add_to_pydotorg session cleanup calls
Open (2)
- python/release-tools #402: Quote remote release-tool command arguments
- python/release-tools #404: Upload Windows SBOM sidecars named after full artifacts
Open (3)
- python/release-tools #397: Bug: release tooling should quote remote command arguments
- python/release-tools #399: Bug: Windows upload skips SBOM sidecars named after the full artifact
- python/release-tools #401: Bug: Windows upload helper should quote URL-derived remote paths
Closed — resulted in a fix (6)
- python/pythondotorg #3010: Bug: Release-file sidecar URLs can reference different artifacts
- python/pythondotorg #3011: Bug: Release-file API accepts new HTTP python.org URLs
- python/pythondotorg #3012: Bug: release-file bulk deletion can leave files behind
- python/pythondotorg #3013: Bug: 404 legacy website link can point to an external site
- python/release-tools #398: Bug: add_to_pydotorg can finish after partial release-file creation
- python/release-tools #400: Bug: free-threaded Windows artifacts are skipped by add_to_pydotorg
Merged (10)
- RustCrypto/crypto-bigint #1270: Fix BoxedUint bitor-assign with wider rhs
- RustCrypto/crypto-bigint #1271: Handle wide power-of-two divisors in exact division
- RustCrypto/crypto-bigint #1272: Enforce UintRef slice length checks in release builds
- RustCrypto/crypto-bigint #1273: Clamp Montgomery exponent bit bounds
- RustCrypto/crypto-bigint #1274: Reject oversized fixed-width DER integers
- RustCrypto/crypto-bigint #1278: Update MontyParams CtEq to match PartialEq
- RustCrypto/crypto-bigint #1280: Canonicalize modulus-one residues
- RustCrypto/crypto-bigint #1283: Fix nlimbs overflow near u32::MAX
- RustCrypto/crypto-bigint #1286: Implement Encoding for Int serde support
- RustCrypto/crypto-bigint #1290: Fix UintRef byte precision
Open (4)
- RustCrypto/KEMs #327: Support HPKE DHKEM suite IDs
- RustCrypto/crypto-bigint #1282: Handle power-of-two moduli in mul_mod_special
- RustCrypto/crypto-bigint #1287: Preserve NonZero and Odd invariants on zeroize
- RustCrypto/crypto-bigint #1291: Fix BoxedUint GCD with mixed-precision zero operands
Open (1)
Closed — resulted in a fix (1)
Merged (1)
Open (4)
- simplex-chat/simplex-chat #7053: core: restrict channel short-link owner metadata
- simplex-chat/simplex-chat #7054: core: validate remote upload filenames
- simplex-chat/simplex-chat #7055: android: preserve service restart state on destroy
- simplex-chat/simplexmq #1800: xftp: gate web downloads on selected replicas
Merged (1)
Open (3)