Skip to content

Commit 970b7e3

Browse files
JasonVranekManuelBilbaojclapisltitanb
committed
Sigp audit fixes (#438)
Co-authored-by: Manuel Iñaki Bilbao <manuel.bilbao@lambdaclass.com> Co-authored-by: Joe Clapis <jclapis@outlook.com> Co-authored-by: eltitanb <lorenzo@gattaca.com> Co-authored-by: ltitanb <163874448+ltitanb@users.noreply.github.com>
1 parent d1dc49e commit 970b7e3

60 files changed

Lines changed: 5025 additions & 670 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cargo/audit.toml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# RUSTSEC-2026-0049: CRL revocation checking bug in rustls-webpki 0.101.7.
2+
#
3+
# Background: CRL (Certificate Revocation List) checking is an optional TLS
4+
# feature where a client fetches a list of revoked certificates from URLs
5+
# embedded in the cert itself, to confirm it hasn't been invalidated since
6+
# issuance. This is distinct from normal certificate validation.
7+
#
8+
# The bug: when a cert lists multiple CRL distribution point URLs, only the
9+
# first URL is checked; the rest are silently ignored. This matters only when
10+
# CRL checking is enabled AND the UnknownStatusPolicy is set to Allow (meaning
11+
# "if I can't determine revocation status, accept the cert anyway"). With that
12+
# combination, a revoked certificate from a compromised CA could be accepted.
13+
#
14+
# Why this does not affect Commit-Boost: the vulnerable code path is never
15+
# reached because no code in this codebase enables CRL checking at all.
16+
# TLS is used in four places: (1) relay communication via reqwest with
17+
# rustls-tls uses default CA validation with no CRL configured; (2) the signer
18+
# server presents a TLS certificate but does not check client revocation;
19+
# (3) the signer client pins a single self-signed certificate via
20+
# add_root_certificate — CRL is irrelevant for self-signed certs; (4) the Dirk
21+
# remote signer uses mTLS with a custom CA but again no CRL. In all cases the
22+
# buggy CRL code in rustls-webpki is never invoked.
23+
#
24+
# Blocked on sigp/lighthouse upgrading past v8.0.1 without a compilation
25+
# regression (SseEventSource missing cfg guard in eth2 error.rs).
26+
[advisories]
27+
ignore = ["RUSTSEC-2026-0049"]

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ targets.json
1616
.idea/
1717
logs
1818
.vscode/
19+
certs/
1920

2021
# Python (release scripts under .github/workflows/release/)
2122
__pycache__/

Cargo.toml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ assert_cmd = "2.1.2"
2424
async-trait = "0.1.80"
2525
axum = { version = "0.8.1", features = ["macros"] }
2626
axum-extra = { version = "0.10.0", features = ["typed-header"] }
27+
axum-server = { version = "0.7.2", features = ["tls-rustls"] }
2728
base64 = "0.22.1"
2829
bimap = { version = "0.6.3", features = ["serde"] }
2930
blsful = "^2.5"
@@ -38,6 +39,7 @@ cb-signer = { path = "crates/signer" }
3839
cipher = "0.4"
3940
clap = { version = "4.5.48", features = ["derive", "env"] }
4041
color-eyre = "0.6.3"
42+
const_format = "0.2.34"
4143
ctr = "0.9.2"
4244
derive_more = { version = "2.0.1", features = ["deref", "display", "from", "into"] }
4345
docker-compose-types = "0.16.0"
@@ -62,7 +64,10 @@ prometheus = "0.14.0"
6264
prost = "0.13.4"
6365
rand = { version = "0.9", features = ["os_rng"] }
6466
rayon = "1.10.0"
65-
reqwest = { version = "0.13", features = ["json", "stream"] }
67+
reqwest = { version = "0.13", features = ["json", "stream", "rustls-tls"] }
68+
rcgen = "0.13.2"
69+
reqwest-eventsource = "=0.5.0"
70+
rustls = "0.23.23"
6671
serde = { version = "1.0.202", features = ["derive"] }
6772
serde_json = "1.0.117"
6873
serde_yaml = "0.9.33"

0 commit comments

Comments
 (0)