ghsa-g99p-47x7-mq88
Vulnerability from github
Published
2025-09-29 20:40
Modified
2025-09-30 15:16
Summary
go-f3 module vulnerable to integer overflow leading to panic
Details

Impact

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.

Show details on source website


{
  "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-09-30T15:16:09Z",
  "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"
    }
  ],
  "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"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading...

Loading...

Loading...
  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.