Advisory Database
  • Advisories
  • Dependency Scanning
  1. cargo
  2. ›
  3. biscuit-auth
  4. ›
  5. CVE-2024-41949

CVE-2024-41949: biscuit-auth vulnerable to public key confusion in third party block

July 31, 2024

Third-party blocks can be generated without transferring the whole token to the third-party authority. Instead, a ThirdPartyBlock request can be sent, providing only the necessary info to generate a third-party block and to sign it:

  • the public key of the previous block (used in the signature)
  • the public keys part of the token symbol table (for public key interning in datalog expressions)

A third-part block request forged by a malicious user can trick the third-party authority into generating datalog trusting the wrong keypair.

Consider the following example (nominal case)

  • Authority A emits the following token: check if thirdparty("b") trusting ${pubkeyB}
  • The well-behaving holder then generates a third-party block request based on the token and sends it to third-party authority B
  • Third-party B generates the following third-party block thirdparty("b"); check if thirdparty("c") trusting ${pubkeyC}
  • The token holder now must obtain a third-party block from third party C to be able to use the token

Now, with a malicious user:

  • Authority A emits the following token: check if thirdparty("b") trusting ${pubkeyB}
  • The holder then attenuates the token with the following third party block thirdparty("c"), signed with a keypair pubkeyD, privkeyD) they generate
  • The holder then generates a third-party block request based on this token, but alter the ThirdPartyBlockRequest publicKeys field and replace pubkeyD with pubkeyC
  • Third-party B generates the following third-party block thirdparty("b"); check if thirdparty("c") trusting ${pubkeyC}
  • Due to the altered symbol table, the actual meaning of the block is thirdparty("b"); check if thirdparty("c") trusting ${pubkeyD}
  • The attacker can now use the token without obtaining a third-party block from C.

References

  • github.com/advisories/GHSA-p9w4-585h-g3c7
  • github.com/biscuit-auth/biscuit-rust
  • github.com/biscuit-auth/biscuit-rust/security/advisories/GHSA-p9w4-585h-g3c7
  • nvd.nist.gov/vuln/detail/CVE-2024-41949

Code Behaviors & Features

Detect and mitigate CVE-2024-41949 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →

Affected versions

All versions starting from 4.0.0 before 5.0.0

Fixed versions

  • 5.0.0

Solution

Upgrade to version 5.0.0 or above.

Impact 6.4 MEDIUM

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N

Learn more about CVSS

Weakness

  • CWE-269: Improper Privilege Management

Source file

cargo/biscuit-auth/CVE-2024-41949.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Sun, 08 Nov 2026 00:16:25 +0000.