`BlindRSA.blindSign()` skips the RSAVP1 consistency check on the RSA-RAW path
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 75/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Quiet
- Tech stack
- typescript
- Domain
- cryptography, security
Research direction
Start in src/blindrsa.ts at BlindRSA.blindSign(), comparing the RSA-RAW return at lines 149-152 with the verification at lines 166-178. Review rsaRawBlingSign() in src/util.ts and the corresponding check in src/partially_blindrsa.ts; done means the RSA-RAW result receives the same RSAVP1 consistency validation before it is returned.
Written by the indexing model from the issue text.
Description
BlindRSA.blindSign() currently takes a different code path when supportsRSARAW is enabled, skipping the post-sign RSAVP1 consistency check present in the software signing path.
Source references
-
supportsRSARAWis an exposed platform parameter insrc/index.ts: -
In
src/blindrsa.ts, the RSA-RAW path returns immediately: -
The non-RSA-RAW path in the same function performs the expected verification and throws on mismatch:
-
The helper used by the RSA-RAW branch,
rsaRawBlingSign(), just callscrypto.subtle.sign(...)and returns the result directly: -
For comparison,
PartiallyBlindRSAstill performs theRSAVP1/equality check even when it usesrsaRawBlingSign():
Issue
This means BlindRSA.blindSign() behaves inconsistently across implementations:
- software path: signs, verifies
m == RSAVP1(s), rejects on mismatch - RSA-RAW path: returns the signer output without that verification
If the RSA-RAW backend ever returns a faulty signature, this path will propagate it to the caller instead of failing with signing failure.
I am intentionally keeping the claim narrow here: this issue is the missing validation step in the RSA-RAW blind-signing path, not a claim of demonstrated real-world fault injection in a specific deployment. But the code-level inconsistency is real and security-relevant.
Suggested fix
Apply the same RSAVP1 consistency check to the RSA-RAW result before returning it, as is already done in the non-RSA-RAW BlindRSA path and in PartiallyBlindRSA.
- Dominant language
- JavaScript
- Stars
- 34
- Forks
- 7
- Avg merge
- 4m
- Merged PRs (30d)
- 1
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cloudflare/blindrsa-ts
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
cloudflare/blindrsa-ts#67 ·
-
`sjcl` is deprecated Opendependencies
Difficulty 5/5 Over a week Newbie friendliness 35/100
cloudflare/blindrsa-ts#60 ·
All issues in cloudflare/blindrsa-ts
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
HarperFast/skills#96 ·
-
[Block] Latest Posts [Type] Bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Automattic/studio#4908 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
sugarlabs/musicblocks#8847 ·