Skip to content

[DependOnMe] Critical security fix - 1 issue(s)#664

Closed
dependonme-deriv wants to merge 1 commit into
masterfrom
dependonme/bulk-fix-9bb8fc15
Closed

[DependOnMe] Critical security fix - 1 issue(s)#664
dependonme-deriv wants to merge 1 commit into
masterfrom
dependonme/bulk-fix-9bb8fc15

Conversation

@dependonme-deriv

Copy link
Copy Markdown

Bulk Security Fix

This pull request was automatically generated by DependOnMe to fix 1 critical security issue(s).

Issues Fixed

  • Critical: 1
  • High: 0
  • Medium: 0
  • Low: 0

Files Modified

  • package.json

AI Summary

Fixed 1 critical security issue:

🔴 CRITICAL: Arbitrary code execution in protobufjs (CVE-2023-36665)

  • Issue: protobufjs versions < 7.5.5 contain arbitrary code execution vulnerability
  • Fix: Added "protobufjs": ">=7.5.5" to package overrides
  • Approach: Used package override to force all transitive dependencies to use secure protobufjs version
  • Root Cause: protobufjs is a transitive dependency (likely through @deriv/deriv-api or blockly)

⚠️ Risk Assessment:

  • Low Risk: Patch version security fix (7.5.x → 7.5.5) with minimal API changes expected
  • Transitive Dependency: Using overrides ensures the secure version is used throughout the dependency tree
  • Compatibility: Should maintain full backward compatibility as this is a security patch

🧪 Testing Checklist:

  • Delete node_modules and package-lock.json
  • Run npm install to regenerate lock file with secure protobufjs version
  • Run full test suite: npm test
  • Test build process: npm run build
  • Verify development server: npm start
  • Test API functionality (WebSocket connections, data serialization)
  • Test Blockly components (if they use protobuf serialization)
  • Check browser console for any protobuf-related errors
  • Verify that npm audit shows no critical vulnerabilities

📋 Manual Steps Required:

  1. Delete package-lock.json - This forces npm to resolve dependencies with the new override
  2. Run npm install - Generates new package-lock.json with secure protobufjs version
  3. Verify fix: Run npm audit to confirm the vulnerability is resolved
  4. Optional: Run npm ls protobufjs to verify all instances use version >= 7.5.5

💡 Alternative Approach:

If the override approach causes issues, consider:

  1. Upgrade @deriv/deriv-api to latest version (may include updated protobufjs)
  2. Upgrade blockly to latest version (may include updated protobufjs)
  3. Check with package maintainers for security updates

This fix ensures the critical arbitrary code execution vulnerability is resolved while maintaining application functionality.


This PR was created by DependOnMe - Automated Security Issue Management

@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

OpenSSF Scorecard

PackageVersionScoreDetails

Scanned Manifest Files

@github-actions

github-actions Bot commented Apr 17, 2026

Copy link
Copy Markdown
Contributor

Claude finished @dependonme-deriv's task in 59s —— View job


Security Fix Review — CVE-2023-36665 (protobufjs)

  • Gather context and understand the PR
  • Read changed files
  • Analyze the security fix
  • Provide review feedback

Summary

The approach is correct — adding an npm overrides entry to force the secure version of a transitive dependency is the right pattern for this repo (other overrides like lodash, tar use the same strategy). The change itself is minimal and low-risk.

However, there is one blocking issue and two minor observations.


🔴 High Priority

package-lock.json was not updated — the fix is not yet effective

The lock file still resolves protobufjs to 7.5.4 (the vulnerable version):

"node_modules/protobufjs": {
    "version": "7.5.4",
    ...

npm overrides only take effect after npm install regenerates the lock file. As-is, any CI pipeline or developer running npm ci will still install the vulnerable 7.5.4 version. This PR needs the updated package-lock.json committed alongside the package.json change.

Steps to fix:

rm package-lock.json
npm install
git add package-lock.json package.json
git commit -m "fix: update package-lock.json to resolve protobufjs >=7.5.5"

Fix this →


🟡 Medium Priority

>=7.5.5 range could resolve to a future major version

Using >=7.5.5 means npm could resolve this to 8.x or 9.x in the future, which may include breaking API changes. The other overrides in this file use version-bounded ranges (>=4.17.21, >=7.5.10). For a security patch on a semver-compatible minor, ^7.5.5 would be safer as it constrains to the 7.x line:

"protobufjs": "^7.5.5"

This is still valid and addresses the CVE while avoiding potential future major-version surprises.


🟢 Low Priority

Missing trailing newline at end of file

The diff introduces \ No newline at end of file — the closing } on line 199 loses its trailing newline. Most editors and linters expect files to end with a newline. The original file had one; the new version does not. Minor, but easy to fix.


Overall Assessment

Approach: ✅ Correct. Using npm overrides for a transitive dependency vulnerability is the right call here. The root cause (protobufjs pulled in via @deriv/deriv-api) cannot be fixed by bumping a direct dependency without risking broader breakage.

Readiness: ❌ Not ready to merge. The lock file must be regenerated before this fix has any real effect. Without it, npm ci will continue installing the vulnerable version.

@github-actions

Copy link
Copy Markdown
Contributor
Name Result
Build status Failed ❌
Action URL Visit Action

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant