| Package | Affected versions | Patched versions |
|---|---|---|
| org.biscuitsec:biscuit | ≥ 3.0.0, < 4.0.0 | 4.0.0 |
| biscuit-java | ≥ 3.0.0, < 4.0.0 | 4.0.0 |
Tokens with third-party blocks containing trusted annotations generated through a third party block request. Due to implementation issues in biscuit-java, third party block support in published versions is inoperating. Nevertheless, to synchronize with other implementations, we publish this advisory and the related fix.
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)
check if thirdparty("b") trusting ${pubkeyB}thirdparty("b"); check if thirdparty("c") trusting ${pubkeyC}Now, with a malicious user:
check if thirdparty("b") trusting ${pubkeyB}thirdparty("c"), signed with a keypair pubkeyD, privkeyD) they generateThirdPartyBlockRequest publicKeys field and replace pubkeyD with pubkeyCthirdparty("b"); check if thirdparty("c") trusting ${pubkeyC}thirdparty("b"); check if thirdparty("c") trusting ${pubkeyD}Has the problem been patched? What versions should users upgrade to?
Is there a way for users to fix or remediate the vulnerability without upgrading?
Are there any links users can visit to find out more?
Running one of these products? Scan your site to see whether it exposes a vulnerable version.
Scan my site free