Repository navigation
test(e2e): freeze a Besu QBFT client with double-sign and time misbehaviour - #1589
Merged
Merged
Conversation
5 of 7 tasks
Vulnerable dependencies2 advisories across 2 libraries need attention, 2 accepted. 🚨 Needs attention
|
| Advisory | CVE | Fixed in | Summary |
|---|---|---|---|
| GO-2025-3684 | — | no fix yet | Cosmos EVM Allows Partial Precompile State Writes in github.com/cosmos/evm |
Go standard library
In use: go1.26.9 — reached from cli, e2e, gen/go/solidity-abi
| Advisory | CVE | Fixed in | Summary |
|---|---|---|---|
| GO-2026-6809 | CVE-2026-111943 | go1.26.10 |
Distrust compromised intermediate certificates in crypto/x509 |
Run make vulncheck for the call paths. Either upgrade the library, or add the
advisory to .govulncheck-ignore with a reason if no fix exists yet.
Accepted
Listed in .govulncheck-ignore with a reason.
github.com/pion/dtls/v2
In use: v2.2.12 — reached from cli
| Advisory | CVE | Fixed in | Summary |
|---|---|---|---|
| GO-2026-4479 | CVE-2026-26014 | no fix yet | Usage of random nonce generation with AES GCM ciphers risks leaking the authentication key in github.com/pion/dtls |
golang.org/x/crypto
In use: v0.57.0 — reached from cli, e2e
| Advisory | CVE | Fixed in | Summary |
|---|---|---|---|
| GO-2026-5932 | — | no fix yet | The golang.org/x/crypto/openpgp package is unmaintained, unsafe by design, and has known security issues |
From make vulncheck-json on this run: logs.
gjermundgaraba
marked this pull request as ready for review
October 21, 2026 10:09
Contributor
[Low impact] The PR appears safe to merge; no actionable issues were found. SummaryAdds live QBFT tests for double-sign and non-increasing-time evidence.
|
5 of 7 tasks
gjermundgaraba
force-pushed
the
fou-1903-misbehaviour
branch
from
October 21, 2026 10:28
5d5acf9 to
d2867b9
Compare
gjermundgaraba
force-pushed
the
fou-1903-misbehaviour
branch
2 times, most recently
from
October 22, 2026 08:33
3ac5ee5 to
497f004
Compare
gjermundgaraba
force-pushed
the
fou-1903-misbehaviour
branch
from
October 22, 2026 10:06
497f004 to
806c3d9
Compare
Contributor
Author
|
@greptile review |
gjermundgaraba
force-pushed
the
fou-1903-misbehaviour
branch
2 times, most recently
from
October 22, 2026 13:33
7ea132d to
454e78d
Compare
gjermundgaraba
force-pushed
the
fou-1903-misbehaviour
branch
3 times, most recently
from
October 22, 2026 19:18
9e94c89 to
cb98056
Compare
gjermundgaraba
force-pushed
the
fou-1903-misbehaviour
branch
2 times, most recently
from
October 22, 2026 20:40
7d1bce2 to
e07a794
Compare
…aviour The QBFT light client freezes on both kinds of misbehaviour it detects, but only fixture tests showed it. Two e2e tests now forge evidence on a live chain, sealed by a quorum of its validators, and submit it through the router as a Headers misbehaviour message. - TestBesuQBFTClient_DoubleSignFreeze pairs a header with a copy at the same height carrying another state root. - TestBesuQBFTClient_TimeNonMonotonicityFreeze pairs a header with the next one resealed at its timestamp. - Each requires the client's event and frozen state, a FrozenClientState revert for a valid update, and the next transfer to stay pending. - besu.SealHeader sets a header's validators and reseals it under a consensus with distinct signers that must be among them, and parses the result. - e2etest.BesuHeaders reads a managed Besu chain's headers and seals forged ones with its validator keys. - Signer.BroadcastTx returns the receipt, so tests can read its logs. Refs: FOU-1903 Signed-off-by: Gjermund Garaba <gjermund@garaba.net>
gjermundgaraba
force-pushed
the
fou-1903-misbehaviour
branch
from
October 23, 2026 02:05
e07a794 to
f5c2d22
Compare
dhfang
approved these changes
Oct 23, 2026
dianab-cl
pushed a commit
that referenced
this pull request
Oct 26, 2026
…aviour (#1589) The QBFT light client freezes on both kinds of misbehaviour it detects, but only fixture tests showed it. Two e2e tests now forge evidence on a live chain, sealed by a quorum of its validators, and submit it through the router as a Headers misbehaviour message. - TestBesuQBFTClient_DoubleSignFreeze pairs a header with a copy at the same height carrying another state root. - TestBesuQBFTClient_TimeNonMonotonicityFreeze pairs a header with the next one resealed at its timestamp. - Each requires the client's event and frozen state, a FrozenClientState revert for a valid update, and the next transfer to stay pending. - besu.SealHeader sets a header's validators and reseals it under a consensus with distinct signers that must be among them, and parses the result. - e2etest.BesuHeaders reads a managed Besu chain's headers and seals forged ones with its validator keys. - Signer.BroadcastTx returns the receipt, so tests can read its logs. Refs: FOU-1903 Signed-off-by: Gjermund Garaba <gjermund@garaba.net> Signed-off-by: Diana Borbe <diana@cosmoslabs.io>
5 of 7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Stacked on #1588. The QBFT light client freezes on both kinds of misbehaviour it detects, but only fixture tests showed it. Two e2e tests now forge evidence on a live four-validator chain, seal it with a quorum of its validator keys, and submit it through the router as a
Headersmisbehaviour message.e2e/besu_misbehaviour_test.go):TestBesuQBFTClient_DoubleSignFreezepairs a header with a copy at the same height carrying another state root;TestBesuQBFTClient_TimeNonMonotonicityFreezepairs a header with the next one resealed at its timestamp. Each requires the client's event and frozen state, aFrozenClientStaterevert for an otherwise valid update, and the next transfer to stay pending.cli/besu/header.go):SealHeadersets a header's validators and reseals it under a consensus. Signers must be distinct validators of the set, so it never silently drops a seal.e2e/internal/e2etest/besu.go):BesuHeadersreads a managed Besu chain's headers, waiting with the chain's timing, and seals forged ones with its validator keys.Signer.BroadcastTxreturns the receipt, so tests can read its logs.Part of FOU-1903 (Linear).
Verification
TestSealHeadercovers both consensuses, a signer outside the set and a repeated signer.go test ./...incli, both lint targets andrefgen.py all --checkpass.CHANGELOG.mdonly tracks the spec)docs/) if anything is changed. (e2e/README.md,e2e/test-matrix.md)godoccomments if relevant.Files changedin the GitHub PR explorer.🤖 Generated with Claude Code