GHSA-G99P-47X7-MQ88
Vulnerability from github – Published: 2025-09-29 20:40 – Updated: 2025-10-23 20:32Impact
Filecoin nodes consuming F3 messages are vulnerable. go-f3 panics when it validates a "poison" messages. A "poison" message can can cause integer overflow in the signer index validation. In Lotus' case, the whole node will crash.
There is no barrier to entry. An attacker doesn't need any power to pull off this attack.
These malicious messages aren't self-propagating since the bug is in the validator. An attacker needs to directly send the message to all targets.
Patches
The fix was merged and released with go-f3 0.8.7. All node software (Lotus, Forest, Venus) are using a patched version of go-f3 with their updates for the nv27 network upgrade.
go-f3 now does proper overflow checking using math.MaxInt64 comparison and returns error "justificationPower overflow" when overflow would occur.
Workarounds
The are no immediate workarounds available. Nodes should upgrade to the patched version, which they will have done if participating in nv27 on Filecoin mainnet.
Credits
The initial finding(unrelated path) was reported by 0xNirix via bug bounty program which wasn't high issue. The further digging by developers led to this finding. Thank you for the contributions.
{
"affected": [
{
"package": {
"ecosystem": "Go",
"name": "github.com/filecoin-project/go-f3"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "0.8.7"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2025-59942"
],
"database_specific": {
"cwe_ids": [
"CWE-190"
],
"github_reviewed": true,
"github_reviewed_at": "2025-09-29T20:40:08Z",
"nvd_published_at": "2025-09-29T23:15:32Z",
"severity": "HIGH"
},
"details": "### Impact\n\nFilecoin nodes consuming F3 messages are vulnerable. go-f3 panics when it validates a \"poison\" messages. A \"poison\" message can can cause integer overflow in the signer index validation. In Lotus\u0027 case, the whole node will crash. \n\nThere is no barrier to entry. An attacker doesn\u0027t need any power to pull off this attack.\n\nThese malicious messages aren\u0027t self-propagating since the bug is in the validator. An attacker needs to directly send the message to all targets.\n\n\n\n### Patches\nThe fix was merged and released with go-f3 0.8.7. All node software (Lotus, Forest, Venus) are using a patched version of go-f3 with their updates for the nv27 network upgrade.\n\ngo-f3 now does proper overflow checking using `math.MaxInt64` comparison and returns error `\"justificationPower overflow\"` when overflow would occur.\n\n### Workarounds\nThe are no immediate workarounds available. Nodes should upgrade to the patched version, which they will have done if participating in nv27 on Filecoin mainnet.\n\n### Credits\nThe initial finding(unrelated path) was reported by [0xNirix](https://github.com/0xNirix) via bug bounty program which wasn\u0027t high issue. The further digging by developers led to this finding. Thank you for the contributions.",
"id": "GHSA-g99p-47x7-mq88",
"modified": "2025-10-23T20:32:56Z",
"published": "2025-09-29T20:40:08Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/filecoin-project/go-f3/security/advisories/GHSA-g99p-47x7-mq88"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2025-59942"
},
{
"type": "PACKAGE",
"url": "https://github.com/filecoin-project/go-f3"
},
{
"type": "WEB",
"url": "https://pkg.go.dev/vuln/GO-2025-3990"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
"type": "CVSS_V3"
}
],
"summary": "go-f3 module vulnerable to integer overflow leading to panic"
}
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.