fix: prevent timing attacks with === [ES-71]#819
Conversation
Code Review Agent Run #b1be85Actionable Suggestions - 0Review Details
Bito Usage GuideCommands Type the following command in the pull request comment and save the comment.
Refer to the documentation for additional commands. Configuration This repository uses Documentation & Help |
Changelist by BitoThis pull request implements the following key changes.
|
Impact Analysis by BitoInteraction DiagramsequenceDiagram
participant API User
participant verifyRequest as verifyRequest<br/>🔄 Updated | ●●○ Medium
participant timingSafeUtf8StringEqual as timingSafeUtf8StringEqual<br/>🟩 Added | ●●● High
participant textEncoder
participant Crypto Module
Note over verifyRequest: Validate timestamp and compute signature
API User->>verifyRequest: verifyRequest(secret, request, ttl)
verifyRequest->>verifyRequest: Check if request is expired
verifyRequest->>timingSafeUtf8StringEqual: timingSafeUtf8StringEqual(signature, computedSignature)
timingSafeUtf8StringEqual->>textEncoder: encode(a)
textEncoder-->>timingSafeUtf8StringEqual: aBuf
timingSafeUtf8StringEqual->>textEncoder: encode(b)
textEncoder-->>timingSafeUtf8StringEqual: bBuf
alt aBuf.length !== bBuf.length
timingSafeUtf8StringEqual-->>timingSafeUtf8StringEqual: return false
else
timingSafeUtf8StringEqual->>Crypto Module: timingSafeEqual(aBuf, bBuf)
Crypto Module-->>timingSafeUtf8StringEqual: result
end
timingSafeUtf8StringEqual-->>verifyRequest: result
verifyRequest-->>API User: verification result
The merge request introduces timing-safe string comparison to enhance security in request verification. It adds the timingSafeUtf8StringEqual function for constant-time UTF-8 string comparison and updates verifyRequest to use this instead of standard equality. This prevents potential timing attacks while maintaining the same API interface. Cross-Repository Impact Analysis
Code Paths AnalyzedImpact: Flow: Direct Changes (Diff Files): Repository Impact: Cross-Repository Dependencies: Database/Caching Impact: API Contract Violations: Infrastructure Dependencies: Additional Insights: Testing RecommendationsFrontend Impact: Service Integration: Data Serialization: Privacy Compliance: Backward Compatibility: OAuth Functionality: Reliability Testing: Additional Insights: Analysis based on known dependency patterns and edges. Actual impact may vary. |
## [3.16.1](v3.16.0...v3.16.1) (2026-03-24) ### Bug Fixes * prevent timing attacks with `===` [ES-71] ([#819](#819)) ([d3503cb](d3503cb))
|
🎉 This PR is included in version 3.16.1 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
Support Ticket: https://contentful.atlassian.net/jira/servicedesk/projects/ES/queues/custom/5835/board/7168?selectedIssue=ES-71
Prevents timing attacks by swapping out
===for crypto safeString comparison.Summary by Bito
This PR addresses a security vulnerability by implementing timing-safe string comparison to prevent timing attacks in request verification, as referenced in support ticket ES-71. It replaces the insecure `===` operator with a cryptographically secure constant-time comparison function.
Detailed Changes