Skip to content

fix(security): auto audit fix - #1479

Open
sendbird-sdk-deployment wants to merge 1 commit into
mainfrom
security/auto-audit-fix-20261026
Open

sendbird-sdk-deployment wants to merge 1 commit into
mainfrom
security/auto-audit-fix-20261026

Conversation

@sendbird-sdk-deployment

Copy link
Copy Markdown
Collaborator

Security Audit Report

Repository: sendbird/sendbird-uikit-react
Targets: samples/groupchannel (npm), samples/openchannel (npm), samples/router (npm), samples/typescript_sample (npm), . (yarn-berry)
Date: 2026-10-26

Summary

Critical High Moderate Low Total
Before 9 43 61 16 129
Fixed 7 10 6 4 27
Remaining 2 33 55 12 102

Fixed Vulnerabilities

Package Target Severity Detail
dompurify samples/groupchannel critical DOMPurify SAFE_FOR_TEMPLATES bypass: split template expressions survive in attached shadow root content on DOM output modes
vite samples/groupchannel high launch-editor: escapeCmdArgs() omits % escaping on Windows
dompurify samples/openchannel critical DOMPurify SAFE_FOR_TEMPLATES bypass: split template expressions survive in attached shadow root content on DOM output modes
vite samples/openchannel high launch-editor: escapeCmdArgs() omits % escaping on Windows
dompurify samples/router critical DOMPurify SAFE_FOR_TEMPLATES bypass: split template expressions survive in attached shadow root content on DOM output modes
vite samples/router high launch-editor: escapeCmdArgs() omits % escaping on Windows
dompurify samples/typescript_sample critical DOMPurify SAFE_FOR_TEMPLATES bypass: split template expressions survive in attached shadow root content on DOM output modes
fast-uri samples/typescript_sample moderate fast-uri vulnerable to URI scheme spoofing via percent-encoded scheme decoding
follow-redirects samples/typescript_sample high follow-redirects array-form headers bypass cross-origin credential stripping
launch-editor samples/typescript_sample high launch-editor: escapeCmdArgs() omits % escaping on Windows
brace-expansion . high brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion
vite . moderate launch-editor: escapeCmdArgs() omits % escaping on Windows
vite . moderate launch-editor: Editor CLI flag misinterpretation causing arbitrary command execution for some editors
vite . high launch-editor: fs.existsSync() existence check can be bypassed on Windows
vite . low Vite: Cross origin script execution through Vite custom middleware
vite . moderate Vite: Files outside server.fs.allow could be served when project paths match system paths on non-Windows machine
@storybook/core . critical Storybook: Missing origin validation in Storybook preview allows code injection from malicious websites
storybook . critical Storybook: Missing origin validation in Storybook preview allows code injection from malicious websites
@storybook/core . high Storybook dev server vulnerable to code injection from the local network
storybook . high Storybook dev server vulnerable to code injection from the local network
dompurify . critical DOMPurify SAFE_FOR_TEMPLATES bypass: split template expressions survive in attached shadow root content on DOM output modes
dompurify . high DOMPurify IN_PLACE: hook that removes a parent or sibling leaves the detached subtree's event handlers armed (incomplete fix for GHSA-p98j-92pf-mc4p)
dompurify . low DOMPurify: SMIL attributeName=href guard is skipped when PARSER_MEDIA_TYPE is application/xhtml+xml
fast-uri . moderate fast-uri vulnerable to URI scheme spoofing via percent-encoded scheme decoding
fast-uri . low fast-uri vulnerable to improper path equivalence in relative reference normalization
fast-uri . moderate fast-uri vulnerable to host confusion via unchecked WHATWG host canonicalization
fast-uri . low fast-uri vulnerable to scheme injection via an unescaped first-segment colon in suffix references

Remaining Vulnerabilities (requires manual review)

Package Target Severity Detail
react-router samples/router moderate React Router: Open redirect via backslash in and useNavigate (CVE-2025-68470 bypass)
react-router-dom samples/router moderate -
@csstools/postcss-cascade-layers samples/typescript_sample moderate -
@csstools/postcss-is-pseudo-class samples/typescript_sample moderate -
@csstools/selector-specificity samples/typescript_sample moderate -
@jest/core samples/typescript_sample low -
@svgr/plugin-svgo samples/typescript_sample high -
@svgr/webpack samples/typescript_sample high -
@tootallnate/once samples/typescript_sample low @tootallnate/once vulnerable to Incorrect Control Flow Scoping
bfj samples/typescript_sample high -
body-parser samples/typescript_sample high body-parser vulnerable to Denial of Service via trailing bytes after a compressed request body
css-blank-pseudo samples/typescript_sample moderate -
css-has-pseudo samples/typescript_sample moderate -
css-minimizer-webpack-plugin samples/typescript_sample moderate -
css-select samples/typescript_sample high -
cssnano samples/typescript_sample moderate -
cssnano-preset-default samples/typescript_sample moderate -
http-proxy-agent samples/typescript_sample low -
jest samples/typescript_sample low -
jest-cli samples/typescript_sample low -
jest-config samples/typescript_sample low -
jest-environment-jsdom samples/typescript_sample low -
jest-runner samples/typescript_sample low -
jsdom samples/typescript_sample low -
jsonpath samples/typescript_sample high -
node-forge samples/typescript_sample high node-forge RSA PKCS#1 v1.5 signature verification accepts extra nested DigestAlgorithm elements
nth-check samples/typescript_sample high Inefficient Regular Expression Complexity in nth-check
postcss samples/typescript_sample high PostCSS line return parsing error
postcss-attribute-case-insensitive samples/typescript_sample moderate -
postcss-calc samples/typescript_sample moderate -
postcss-custom-selectors samples/typescript_sample moderate -
postcss-dir-pseudo-class samples/typescript_sample moderate -
postcss-focus-visible samples/typescript_sample moderate -
postcss-focus-within samples/typescript_sample moderate -
postcss-merge-longhand samples/typescript_sample moderate -
postcss-merge-rules samples/typescript_sample moderate -
postcss-minify-selectors samples/typescript_sample moderate -
postcss-nested samples/typescript_sample moderate -
postcss-nesting samples/typescript_sample moderate -
postcss-preset-env samples/typescript_sample moderate -
postcss-pseudo-class-any-link samples/typescript_sample moderate -
postcss-selector-not samples/typescript_sample moderate -
postcss-selector-parser samples/typescript_sample moderate PostCSS: Quadratic complexity in flat selector parsing allows CPU exhaustion
postcss-unique-selectors samples/typescript_sample moderate -
proxy-addr samples/typescript_sample critical proxy-addr vulnerable to IP spoofing via IPv4-mapped IPv6 trust subnet
react-scripts samples/typescript_sample high -
resolve-url-loader samples/typescript_sample moderate -
rollup-plugin-terser samples/typescript_sample high -
selfsigned samples/typescript_sample high -
serialize-javascript samples/typescript_sample high Serialize JavaScript is Vulnerable to RCE via RegExp.flags and Date.prototype.toISOString()
sockjs samples/typescript_sample moderate -
stylehacks samples/typescript_sample moderate -
svgo samples/typescript_sample high SVGO removeScripts plugin leaves some executable scripts intact
tailwindcss samples/typescript_sample moderate -
underscore samples/typescript_sample high Underscore has unlimited recursion in _.flatten and _.isEqual, potential for DoS attack
uuid samples/typescript_sample moderate uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided
webpack-dev-server samples/typescript_sample high webpack-dev-server users' source code may be stolen when they access a malicious web site with non-Chromium based browser
workbox-build samples/typescript_sample high -
workbox-webpack-plugin samples/typescript_sample high -
braces . high Uncontrolled resource consumption in braces
micromatch . moderate Regular Expression Denial of Service (ReDoS) in micromatch
@eslint/plugin-kit . low Regular Expression Denial of Service (ReDoS) in @eslint/plugin-kit
@eslint/plugin-kit . low @eslint/plugin-kit is vulnerable to Regular Expression Denial of Service attacks through ConfigCommentParser
tmp . low tmp allows arbitrary temporary file / directory write via symbolic link dir parameter
postcss . moderate PostCSS line return parsing error
@remix-run/router . high React Router vulnerable to XSS via Open Redirects
react-router . moderate React Router has unexpected external redirect via untrusted paths
tar . high node-tar Vulnerable to Arbitrary File Creation/Overwrite via Hardlink Path Traversal
tar . high node-tar is Vulnerable to Arbitrary File Overwrite and Symlink Poisoning via Insufficient Path Sanitization
tar . high Arbitrary File Read/Write via Hardlink Target Escape Through Symlink Chain in node-tar Extraction
tar . high tar has Hardlink Path Traversal via Drive-Relative Linkpath
tar . high node-tar Symlink Path Traversal via Drive-Relative Linkpath
tar . high Race Condition in node-tar Path Reservations via Unicode Ligature Collisions on macOS APFS
postcss . moderate PostCSS has XSS via Unescaped </style> in its CSS Stringify Output
ip-address . moderate ip-address has XSS in Address6 HTML-emitting methods
uuid . moderate uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided
tmp . high tmp has Path Traversal via unsanitized prefix/postfix that enables directory escape
tar . moderate node-tar applies PAX size override to intermediary GNU long-name/long-link headers, causing tar parser interpretation differential (file smuggling)
tar . moderate node-tar: Process crash via PAX numeric path type confusion
tar . critical node-tar: Decompression/parse DoS via unlimited input
tar . high node-tar: Negative tar entry size causes infinite loop in archive replace
tar . moderate node-tar: Uncaught Exception DoS via NUL byte in PAX path/linkpath records
postcss . high PostCSS: Arbitrary file read and information disclosure via attacker-controlled sourceMappingURL in CSS comments
react-router . moderate React Router: Open redirect via backslash in and useNavigate (CVE-2025-68470 bypass)
react-router . moderate React Router: Arbitrary Constructor Injection via deserializeErrors() in React Router SSR Hydration
postcss . moderate PostCSS: incomplete fix of GHSA-6g55-p6wh-862q — attacker-controlled sourceMappingURL reads arbitrary .map files when from is unset
ip-address . high ip-address: Address4 decodes leading-zero octets as decimal while resolvers decode them as octal, allowing SSRF and trust-boundary bypass
@remix-run/router . moderate React Router's same-origin redirect with path starting // causes open redirect via protocol-relative URL reinterpretation
react-router . moderate React Router's same-origin redirect with path starting // causes open redirect via protocol-relative URL reinterpretation
postcss . high PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
tar . high node-tar: Uncontrolled recursion in mapHas/filesFilter allows uncatchable stack-overflow DoS via crafted long-path tar with member selection
decode-uri-component . moderate decode-uri-component: Denial of service via exponential decoding of malformed percent-encoded input
vitest . moderate Vitest: Path Traversal / Arbitrary File Read via @vitest/mocker Redirect Mock
@vitest/mocker . moderate Vitest: Path Traversal / Arbitrary File Read via @vitest/mocker Redirect Mock
ip-address . moderate ip-address: Address6.isLinkLocal() recognizes fe80::/64 rather than fe80::/10, allowing SSRF and trust-boundary bypass to on-link hosts
ip-address . moderate ip-address: isInSubnet() and isHostInSubnet() compare addresses of different families as if they shared an address space, allowing an allowlist check to admit an address outside its range
ip-address . moderate ip-address: Address6 builds a parse diagnostic proportional to the input with no length bound, allowing a single long string to stall or crash the process
brace-expansion . moderate brace-expansion: Quadratic-time expansion of the {a},b} rewrite causes CPU denial of service
http-cache-semantics . high http-cache-semantics max-stale handling can disclose cross-user cached responses
postcss-selector-parser . moderate PostCSS: Quadratic complexity in flat selector parsing allows CPU exhaustion
@vitest/mocker . moderate Vitest: Code injection via unauthenticated manual mock registration
ip-address . moderate ip-address: Address6 matches a zone identifier in quadratic time ahead of its length limit, allowing a single long string to stall the process

Changed files

samples/groupchannel/package-lock.json, samples/openchannel/package-lock.json, samples/router/package-lock.json, samples/typescript_sample/package-lock.json, yarn.lock

Review checklist

  • Verify no breaking changes in updated dependencies
  • Confirm CI passes

@upwind-code-us

upwind-code-us Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Upwind Upwind Code Scan - ⚠️ Warn

5 newly introduced vulnerabilities · 3 resolved · 34 total in this PR vs main

Total breakdown: 🔴 2 Critical | 🔶 10 High | 🟡 19 Medium | 🟢 3 Low


🔶 High · 2 findings
CVE Package Version Fix
CVE-2026-111181 body-parser 1.20.8 1.20.9
CVE-2024-21539 @eslint/plugin-kit 0.2.0 0.2.3

🟡 Medium · 1 finding
CVE Package Version Fix
CVE-2026-104844 postcss-selector-parser 6.1.5 7.1.6

🟢 Low · 2 findings
CVE Package Version Fix
CVE-2026-115897 serialize-javascript 6.0.2 7.1.3
CVE-2026-115897 serialize-javascript 4.0.0 7.1.3

✅ Resolved · 3 findings
CVE Package Version
CVE-2026-97058 sprintf-js 1.0.3
CVE-2026-93687 braces 3.0.3
CVE-2026-104844 postcss-selector-parser 6.1.4

View full analysis in Upwind Console

Scan completed in 35s

Scan history (1 scan)
Commit Scanned at New Resolved Net
ed6997a < 2026-10-26 09:28 UTC +5 -3 +2

Last scanned: ed6997a · 2026-10-26 09:28 UTC

@upwind-code-us

upwind-code-us Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Upwind Upwind IaC Scan - ✅ Passed

0 newly introduced misconfigurations · 0 resolved · 0 total in this PR vs main

View full analysis in Upwind Console →

Scan completed in 4s

Scan history (1 scan)
Commit Scanned at New Resolved Net
ed6997a < 2026-10-26 09:28 UTC 0 0 0

Last scanned: ed6997a · 2026-10-26 09:28 UTC

@netlify

netlify Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for sendbird-uikit-react ready!

Name Link
🔨 Latest commit ed6997a
🔍 Latest deploy log https://app.netlify.com/projects/sendbird-uikit-react/deploys/6adf1d1d9e176e4fbeffbe5e
😎 Deploy Preview https://deploy-preview-1479--sendbird-uikit-react.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-26T09:29:53.492853Z ed6997a PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ed6997aa7c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread yarn.lock
Comment on lines +14681 to +14682
version: 6.4.4
resolution: "vite@npm:6.4.4"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Upgrade root Vite past vulnerable 6.4.4

When the root Vite dev server is exposed to a network and a sensitive file covered by server.fs.deny is also under server.fs.allow, version 6.4.4 permits the deny rule to be bypassed with crafted query strings. This change specifically introduces that affected release; GHSA-8g5g-mxqh-grgj identifies 6.4.5 as the fixed v6 version, which the sample locks already use, so the root lock should resolve 6.4.5 as well.

Useful? React with 👍 / 👎.

This branch has not been deployed

No deployments
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.

2 participants