Skip to content

Conversation

@ignaciosantise
Copy link
Collaborator

@ignaciosantise ignaciosantise commented Jan 22, 2026

Summary

Resolves 10 high/moderate severity security vulnerabilities by pinning package versions in yarn and npm overrides.

Changes

  • Added 10 security package resolutions to root package.json (yarn)
  • Added 9 security package overrides to examples/expo-multichain/package.json (npm)
  • Updated both lockfiles with patched versions

Fixed vulnerabilities:

  • h3 1.15.5 (Request Smuggling)
  • tar 7.5.6 (Race Condition, Arbitrary File Overwrite)
  • node-forge 1.3.2 (ASN.1)
  • qs 6.14.1 (arrayLimit DoS)
  • undici 6.23.0 (Decompression DoS)
  • preact 10.28.2 (VNode Injection)
  • js-yaml 4.1.1 (Prototype Pollution)
  • glob 11.1.0 (Command Injection - CVE-2025-64756)
  • valibot 1.2.0 (EMOJI_REGEX ReDoS - CVE-2025-66020)
  • hono 4.11.4 (JWT Algorithm Confusion)

Co-Authored-By: Claude Haiku 4.5 noreply@anthropic.com


Note

Applies security patches by forcing safe versions of transitive deps and updating lockfiles.

  • Adds Yarn resolutions in root package.json and npm overrides in examples/expo-multichain/package.json
  • Updates yarn.lock and package-lock.json
  • Adds changeset for patch releases across @reown/*-react-native

Patched deps: h3@1.15.5, tar@7.5.6, node-forge@1.3.2, qs@6.14.1, undici@6.23.0, preact@10.28.2, js-yaml@3.14.2, valibot@1.2.0, hono@4.11.4.

Written by Cursor Bugbot for commit 64982b0. This will update automatically on new commits. Configure here.

…utions

Add version constraints for 10 packages with known security vulnerabilities:
- h3, tar, node-forge, qs, undici: DoS and injection vulnerabilities
- preact, valibot, glob: CVE-2025-66020 EMOJI_REGEX ReDoS and command injection
- js-yaml, hono: prototype pollution and JWT algorithm confusion fixes

Updates both yarn.lock (root) and package-lock.json (expo-multichain) with
patched versions. Remaining bigint-buffer vulnerability is unfixable due to
missing upstream patch in Solana ecosystem.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings January 22, 2026 00:09
@changeset-bot
Copy link

changeset-bot bot commented Jan 22, 2026

🦋 Changeset detected

Latest commit: 64982b0

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 9 packages
Name Type
@reown/appkit-react-native Patch
@reown/appkit-common-react-native Patch
@reown/appkit-bitcoin-react-native Patch
@reown/appkit-coinbase-react-native Patch
@reown/appkit-core-react-native Patch
@reown/appkit-ethers-react-native Patch
@reown/appkit-solana-react-native Patch
@reown/appkit-ui-react-native Patch
@reown/appkit-wagmi-react-native Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@claude
Copy link

claude bot commented Jan 22, 2026

Claude finished @ignaciosantise's task —— View job


Security Vulnerability PR Review

Tasks:

  • Read repository guidelines (CLAUDE.md)
  • Review root package.json changes
  • Review expo-multichain package.json changes
  • Analyze security fix completeness
  • Check for potential compatibility issues
  • Provide comprehensive feedback

Issues Found

1. Missing Changeset (Required by CI)

The changeset-bot is correctly flagging that this PR needs a changeset. Even though this is primarily a dependency update, it should include a changeset because:

  • Security fixes are important to track in the changelog
  • Users need to know which version includes these security patches
  • The CI workflow expects changesets for all changes

Fix: Add a changeset file using:

yarn changeset add

Select all affected packages (likely all of them since this is a monorepo-wide dependency update) with patch version bumps, and use a message like:

fix: resolve 10 high/moderate severity vulnerabilities in transitive dependencies

2. Inconsistent Package Resolution Coverage

The root package.json has 10 security resolutions (lines 99-108):

  • h3, tar, node-forge, qs, undici, preact, js-yaml, glob, valibot, hono

The expo-multichain/package.json has only 9 overrides (lines 80-89):

  • Missing: hono

Issue: If hono is a transitive dependency in the expo-multichain example, it won't be patched.

Recommendation:

  • Verify if hono is used in expo-multichain (check package-lock.json for hono)
  • If present, add "hono": "4.11.4" to the overrides in examples/expo-multichain/package.json:78
  • If not present, document why the discrepancy exists

3. React Override in expo-multichain May Conflict

In examples/expo-multichain/package.json:79, there's an override for react: "19.1.0" alongside the security overrides. This is:

  • Unrelated to the security fixes
  • Already in the PR before these changes (based on context)

Note: While not a blocker, mixing React version pinning with security overrides can make future maintenance harder. Consider separating concerns or documenting why React is pinned.

4. No Verification of Fix Effectiveness

The PR description lists the CVEs and packages, but there's no evidence that:

  • yarn audit or npm audit was run before/after
  • The vulnerabilities are actually resolved
  • No new vulnerabilities were introduced

Recommendation: Add audit results to the PR description:

# Root (yarn)
yarn audit --json > audit-after.json

# Expo example (npm)
cd examples/expo-multichain && npm audit --json > audit-after.json

This provides proof the fixes work and documents the security improvement.

5. Potential Breaking Changes Risk

Some version bumps are significant:

  • glob: Unknown previous version → 11.1.0 (major version 11)
  • valibot: Unknown → 1.2.0
  • hono: Unknown → 4.11.4

Concern: Without knowing the previous versions, there's risk of:

  • Breaking API changes in transitive dependencies
  • Build failures not caught in CI
  • Runtime issues in production

Recommendation:

  • Run the full test suite: yarn test
  • Run the build: yarn build
  • Test the expo example: cd examples/expo-multichain && yarn start
  • Document any test failures or issues in the PR

6. Lockfile Changes Not Validated

The lockfile diffs are large (+115/-223 for yarn.lock, +514/-210 for package-lock.json). Without manual review, we can't verify:

  • Only the intended packages were updated
  • No malicious packages were introduced
  • The dependency tree is healthy

Recommendation: At minimum, verify:

# Check for any suspicious new packages
git diff yarn.lock | grep -E "^\+[^+]" | grep -v "version" | grep -v "resolved" | head -20

# Ensure lockfiles are consistent with package.json
yarn install --check-files
cd examples/expo-multichain && npm ci

Security Fix Analysis

The vulnerabilities addressed are legitimate and serious:

  • h3 1.15.5 - Request Smuggling (high severity)
  • tar 7.5.6 - Race Condition, Arbitrary File Overwrite (high)
  • node-forge 1.3.2 - ASN.1 vulnerability (moderate)
  • qs 6.14.1 - arrayLimit DoS (moderate)
  • undici 6.23.0 - Decompression DoS (high)
  • preact 10.28.2 - VNode Injection (moderate)
  • js-yaml 4.1.1 - Prototype Pollution (high)
  • glob 11.1.0 - CVE-2025-64756 Command Injection (critical)
  • valibot 1.2.0 - CVE-2025-66020 EMOJI_REGEX ReDoS (moderate)
  • hono 4.11.4 - JWT Algorithm Confusion (high)

All are valid security concerns that should be addressed.


Best Practices Notes

Positive:

  • ✅ Using package manager's built-in resolution/override mechanisms
  • ✅ Addressing vulnerabilities proactively
  • ✅ Including CVE numbers in documentation
  • ✅ Updating both yarn and npm lockfiles

Could Improve:

  • ⚠️ Add changeset for proper versioning
  • ⚠️ Include before/after audit reports
  • ⚠️ Verify test suite passes
  • ⚠️ Document hono discrepancy between root and expo-multichain
  • ⚠️ Consider adding a security policy (SECURITY.md) for future vulnerability reports

Summary

This PR addresses real security vulnerabilities, but needs:

  1. Required: Add a changeset file
  2. Required: Verify hono is needed in expo-multichain overrides
  3. Strongly Recommended: Run and document test/build results
  4. Recommended: Include audit output proving fixes work

The security resolutions themselves appear appropriate, but the PR needs additional validation before merge.


@socket-security
Copy link

socket-security bot commented Jan 22, 2026

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses 10 high/moderate severity security vulnerabilities by pinning package versions through yarn resolutions and npm overrides. The changes update vulnerable dependencies to their patched versions across both the Yarn workspace (root) and the npm-based expo-multichain example.

Changes:

  • Added 10 security package resolutions to root package.json for Yarn workspace
  • Added 9 security package overrides to examples/expo-multichain/package.json for npm
  • Updated yarn.lock and package-lock.json with the patched versions

Reviewed changes

Copilot reviewed 2 out of 4 changed files in this pull request and generated 1 comment.

File Description
package.json Added 10 package resolutions (h3, tar, node-forge, qs, undici, preact, js-yaml, glob, valibot, hono) to fix security vulnerabilities in the Yarn workspace
examples/expo-multichain/package.json Added 9 package overrides (excluding hono which is already present) to fix security vulnerabilities in the npm-based example app
yarn.lock Updated with new versions of security-patched packages for the Yarn workspace
examples/expo-multichain/package-lock.json Updated with new versions of security-patched packages for the npm example, including new dependencies required by upgraded packages
Files not reviewed (1)
  • examples/expo-multichain/package-lock.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

cursor[bot]

This comment was marked as outdated.

ignaciosantise and others added 3 commits January 22, 2026 10:00
The glob@11.x resolution removed the sync API that react-native-builder-bob
depends on. The glob vulnerability (CVE-2025-64756) only affects CLI usage
with the -c/--cmd flag, not library usage, so removing this resolution is safe.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
js-yaml 4.x removed safeLoad/safeDump functions used by @changesets/parse.
The security fix for js-yaml 3.x is 3.14.2, which maintains backward
compatibility while patching the prototype pollution vulnerability.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@ignaciosantise
Copy link
Collaborator Author

@claude review

@claude
Copy link

claude bot commented Jan 22, 2026

Claude finished @ignaciosantise's task —— View job


🔄 Incremental PR Review

Tasks:

  • Review current state of package.json files
  • Validate previously flagged issues
  • Check for new issues
  • Provide comprehensive feedback

Changes Since Last Review

The author has addressed the major breaking change concerns raised by previous reviewers:

Resolved Issues:

  1. js-yaml 4.1.1 → 3.14.2 - Breaking change fixed. The upgrade to js-yaml 4.x would have broken tooling that depends on safeLoad/safeDump APIs (removed in v4). Now using v3.14.2 maintains API compatibility.
  2. glob 11.1.0 removed - The critical breaking change with glob has been removed entirely. Glob 11.x requires Node 20+ and has incompatible APIs that would break React Native build tooling.
  3. Changeset added - A proper changeset file was added (.changeset/fix-security-vulnerabilities.md) marking patch releases for all 9 affected packages.

Current Issues

1. Inaccuracy in Changeset Documentation

File: .changeset/fix-security-vulnerabilities.md:22

The changeset states "js-yaml 4.1.1" but the actual resolution is now js-yaml 3.14.2. This should be corrected to match the actual fix:

- js-yaml 4.1.1 (Prototype Pollution)
+ js-yaml 3.14.2 (Prototype Pollution fix)

2. Missing glob from Patched Packages List

Files:

  • .changeset/fix-security-vulnerabilities.md:15-24
  • PR description

The changeset and PR description list "9 vulnerable packages" but originally there were 10 (including glob). Since glob was removed due to compatibility issues, the documentation should either:

  • Explain why glob was excluded, OR
  • Remove it entirely from the vulnerability count

The PR description still mentions glob in the "Fixed vulnerabilities" section, creating confusion.

Recommendation: Update the changeset to say "8 vulnerable packages" and remove glob from the list, or add a note explaining glob was excluded due to breaking changes.

3. Unnecessary hono Resolution in Root package.json

File: package.json:107

The copilot reviewer correctly identified that hono is not present in the yarn workspace lockfile:

  • hono only exists in examples/expo-multichain/package-lock.json (npm-based)
  • The yarn resolution "hono": "4.11.4" in root package.json has no effect on the yarn workspace
  • This resolution is redundant for the monorepo

Recommendation: Remove "hono": "4.11.4" from package.json:107 since it doesn't apply to any yarn workspace packages.

4. Missing Validation Evidence

As noted in the original review, there's still no evidence that:

  • The vulnerabilities were actually resolved
  • No new vulnerabilities were introduced
  • Audit was run before/after

Recommendation: Run and document:

# Yarn workspace audit
yarn npm audit --recursive --json

# NPM example audit
cd examples/expo-multichain && npm audit --json

This provides proof the fixes work and quantifies the security improvement.

5. Missing Test Validation

The original review recommended running the full test suite and build to ensure no breakage. No evidence this was done.

Recommendation: Run and report results:

yarn lint
yarn prettier
yarn build
yarn test

If all pass, note it in the PR. If anything fails, address before merging.


Security Analysis

Properly Addressed (8 packages):

  • ✅ h3 1.15.5 - Request Smuggling
  • ✅ tar 7.5.6 - Race Condition, Arbitrary File Overwrite
  • ✅ node-forge 1.3.2 - ASN.1 vulnerabilities
  • ✅ qs 6.14.1 - arrayLimit DoS
  • ✅ undici 6.23.0 - Decompression DoS
  • ✅ preact 10.28.2 - VNode Injection
  • ✅ js-yaml 3.14.2 - Prototype Pollution (downgraded to maintain compatibility)
  • ✅ valibot 1.2.0 - CVE-2025-66020 EMOJI_REGEX ReDoS

In expo-multichain only:

  • ✅ hono 4.11.4 - JWT Algorithm Confusion (npm override)

Excluded due to compatibility:

  • ⚠️ glob 11.1.0 - CVE-2025-64756 Command Injection (removed - would break build tools)

Summary

What improved since last review:

  • Critical breaking changes with js-yaml and glob were addressed
  • Changeset was added as required by CI
  • Author showed good judgment by removing problematic dependencies

Remaining action items before merge:

  1. Fix version number in changeset (js-yaml 3.14.2, not 4.1.1)
  2. Clarify glob exclusion in documentation (9 packages → 8 packages)
  3. Remove unnecessary hono resolution from root package.json
  4. Run and document: lint, prettier, build, test results
  5. Run and document: yarn/npm audit results

Overall: The PR is much improved. The security fixes are valid and the breaking changes were properly addressed. Just needs documentation cleanup and validation evidence.


Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

"qs": "6.14.1",
"undici": "6.23.0",
"preact": "10.28.2",
"js-yaml": "3.14.2",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

js-yaml pinned to vulnerable version instead of documented fix

High Severity

The changeset and PR description document fixing js-yaml prototype pollution with version 4.1.1, but the actual resolution pins to 3.14.2. According to Snyk's vulnerability database, version 3.14.x is still vulnerable to prototype pollution (CVE-2025-64718), and 4.1.1 is the "latest non vulnerable version." The implemented fix doesn't actually address the security vulnerability it claims to fix.

Additional Locations (2)

Fix in Cursor Fix in Web

- Update changeset to show correct js-yaml version (3.14.2, not 4.1.1)
- Remove hono from root resolutions (not in yarn.lock, only used by expo-multichain via npm)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@sonarqubecloud
Copy link

@ignaciosantise ignaciosantise merged commit 1af79f2 into develop Jan 22, 2026
11 of 13 checks passed
@ignaciosantise ignaciosantise deleted the fix-security-vulnerabilities branch January 22, 2026 13:58
@github-actions github-actions bot locked and limited conversation to collaborators Jan 22, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants