This repository has been updated to address critical security vulnerabilities across multiple dependencies. All dependencies, dev dependencies, peer dependencies, and package overrides have been configured to use secure versions where available.
CVE-2026-23864 - Critical security vulnerability affecting Next.js and React Server Components.
This vulnerability could potentially allow:
- Remote code execution (RCE) through unsafe deserialization
- Denial of Service (DoS) attacks
- Source code exposure
All affected packages have been upgraded to the following secure versions:
- Next.js:
15.5.10(upgraded from15.4.10) - React:
19.2.4(upgraded from19.0.1) - react-dom:
19.2.4(upgraded from19.0.1) - eslint-config-next:
15.5.10(upgraded from15.4.10)
Issue #59 - Critical HTTP Request Smuggling vulnerability in h3 v1.
- Affected versions:
<= 1.15.4 - Patched version:
>= 1.15.5 - Severity: Critical
The vulnerability occurs because readRawBody performs a strict case-sensitive check for the Transfer-Encoding header. It explicitly looks for "chunked", but per RFC, this header should be case-insensitive. If a request is sent with Transfer-Encoding: ChuNked (mixed case), h3 misses it and assumes the body is empty, leaving the actual body on the socket. This triggers a classic TE.TE Desync (Request Smuggling) attack when running behind Layer 4 proxies or anything that doesn't normalize headers.
Since H3/Nuxt/Nitro is often used in containerized setups behind TCP load balancers, an attacker can use this to smuggle requests past WAFs or desynchronize the socket to poison other users' connections.
- h3: Overridden to
>= 1.15.5via pnpm overrides - Transitive dependencies: Fixed via
@rainbow-me/rainbowkit,@walletconnect/core,@walletconnect/utils, andwagmi
Issue #56 - HTML Injection via JSON Type Confusion in Preact.
- Affected versions:
>= 10.26.5, < 10.26.10|>= 10.27.0, < 10.27.3|>= 10.28.0, < 10.28.2 - Patched versions:
10.26.10|10.27.3|10.28.2 - Severity: Low to Medium
A regression introduced in Preact 10.26.5 caused JSON serialization protection to be softened. In applications where values from JSON payloads are assumed to be strings and passed unmodified to Preact as children, a specially-crafted JSON payload could be constructed that would be incorrectly treated as a valid VNode, resulting in HTML injection.
- Applications are vulnerable if they:
- Pass unmodified, unsanitized values from user-modifiable data sources directly into the render tree
- Assume these values are strings but the data source could return actual JavaScript objects
- Have insecure API design (no type validation) or a compromised data source
- preact: Overridden to patched versions via pnpm overrides:
>= 10.26.5 < 10.26.10→>= 10.26.10>= 10.27.0 < 10.27.3→>= 10.27.3>= 10.28.0 < 10.28.2→>= 10.28.2
Security vulnerability in outdated versions of Coinbase Wallet SDK.
- Affected versions:
>= 4.0.0-beta.0, < 4.3.0 - Patched version:
>= 4.3.0 - Impact: Does not directly affect users' keys, smart contracts, or funds
- @coinbase/wallet-sdk: Overridden to
>= 4.3.0via pnpm overrides - Transitive dependencies: Fixed via
@rainbow-me/rainbowkitandwagmi
Issue #57 - ECDSA implementation vulnerability in Elliptic package.
- Affected versions:
<= 6.6.1(all known versions) - Patched version: None available at this time
- Severity: High
The ECDSA implementation generates incorrect signatures if an interim value of 'k' (as computed based on step 3.2 of RFC 6979) has leading zeros and is susceptible to cryptanalysis, which can lead to secret key exposure. The byte-length of 'k' is incorrectly computed, resulting in truncation during computation.
- Legitimate transactions or communications will be broken
- Under certain conditions, attackers could derive the secret key if they obtain both a faulty signature generated by a vulnerable version and a correct signature for the same inputs
- Introduced via
@rainbow-me/rainbowkitandwagmi
- Monitor for updates from the Elliptic maintainers
- Consider alternative cryptographic libraries if possible
- Review usage of affected packages and assess risk based on your use case
Issue #61 - Denial of Service vulnerability in parsePatch and applyPatch methods.
- Affected versions:
< 4.0.4or< 8.0.3(depending on major version) - Patched versions:
>= 4.0.4or>= 8.0.3 - Severity: Medium
Attempting to parse a patch whose filename headers contain the line break characters \r, \u2028, or \u2029 can cause the parsePatch method to enter an infinite loop, consuming memory without limit until the process crashes.
- Applications are vulnerable to denial-of-service attacks if they call
parsePatchwith user-provided patches - A large payload is not needed to trigger the vulnerability
- Some applications may be vulnerable even when calling
parsePatchon patches generated by the application itself if users can control filename headers
- diff/jsdiff: Overridden to secure versions via pnpm overrides in root
package.json:< 4.0.4→>= 4.0.4>= 5.0.0 < 8.0.3→>= 8.0.3
- Transitive dependency: Fixed via
ts-node
- Issue #73 - ReDoS via repeated wildcards with non-matching literal
- Issue #79 - ReDoS via multiple non-adjacent GLOBSTAR segments
- Issue #78 - ReDoS via nested
*()/+()extglobs generating catastrophic backtracking regexes
- Affected versions:
< 3.1.3and< 3.1.4(depending on the specific issue) - Patched versions:
>= 3.1.4 - Severity: Medium to High (DoS)
minimatch compiles glob patterns into regular expressions. Certain patterns (many consecutive *, multiple ** segments, or nested extglobs like *(*(*(a|b)))) result in regexes that exhibit catastrophic backtracking in V8, causing CPU to spike and the Node.js event loop to stall for seconds to minutes on relatively small inputs.
- Any code path that accepts attacker-controlled glob patterns and passes them into
minimatch()is vulnerable to Denial of Service - Realistic surfaces include configuration-driven tooling or multi-tenant systems where one tenant controls glob rules used in a shared process
In this repo, minimatch is only pulled in transitively via eslint / @eslint/eslintrc / eslint-config-next, which are used as dev tooling. They are not part of the production runtime of the Next.js app.
- minimatch: Overridden to
>= 3.1.4via pnpm overrides inui/package.json:minimatch@<3.1.4→>= 3.1.4
This ensures ESLint and related tooling use the patched version even if their own dependency ranges are looser.
Issue #64 - Uncontrolled resource consumption via unbounded brace range expansion.
- Affected versions:
<= 5.0.0 - Patched version:
>= 5.0.1 - Severity: Medium (DoS)
@isaacs/brace-expansion eagerly and synchronously expands brace patterns like {0..99}{0..99}{0..99}{0..99}{0..99} into all combinations, causing exponential growth in CPU and memory usage and potentially crashing the Node.js process.
- Any feature that allows untrusted input to be passed into brace expansion can be used for a Denial of Service attack
- In this repo, it is only used via
tailwindcss/tailwindcss-animatebuild tooling, not in the production request path
- @isaacs/brace-expansion: Overridden to
>= 5.0.1via pnpm overrides inui/package.json:@isaacs/brace-expansion@<=5.0.0→>=5.0.1
Issue #80 - DoS via unbounded recursion in flatted.parse() when reviving circular references.
- Affected versions:
< 3.4.0 - Patched version:
>= 3.4.0 - Severity: Medium (DoS)
flatted.parse() previously used a deeply recursive revive strategy that could overflow the stack or consume excessive resources when given specially crafted payloads with deeply nested or self-referential indices.
- Any code that passes attacker-controlled payloads into
flatted.parse()can be crashed - In this repo,
flattedis pulled in via ESLint tooling (viaeslint/eslint-config-next), not the production app runtime
- flatted: Overridden to
>= 3.4.0via pnpm overrides inui/package.json:flatted@<3.4.0→>=3.4.0
Issue #68 - ReDoS in ajv when the $data option is enabled.
- Affected versions:
< 6.14.0(for the v6 line) - Patched version:
>= 6.14.0 - Severity: Medium to High (DoS) when
$data: trueis used
When $data is enabled, ajv allows runtime data to be used as patterns and passes them directly to RegExp() without validation. A malicious pattern (for example, ^(a|a)*$) combined with crafted input can cause catastrophic backtracking and long CPU stalls.
- Any code using
ajvwith$data: trueon untrusted input is vulnerable - In this repo,
ajvis only introduced transitively through ESLint-related tooling and is not used directly by the runtime app
- ajv: Overridden to
>= 6.14.0via pnpm overrides inui/package.json:ajv@<6.14.0→>=6.14.0
Issue #71 - Infinite loop / process hang in bn.js when maskn(0) is called.
- Affected versions:
< 4.12.3and< 5.2.3 - Patched versions:
>= 4.12.3for the 4.x line>= 5.2.3for the 5.x line
- Severity: Medium (DoS) but potentially higher if used in critical crypto flows
Calling maskn(0) on a BN instance in vulnerable versions corrupts internal state and can cause methods like toString() and divmod() to enter infinite loops, hanging the process.
- In this repo,
bn.jsis introduced transitively via@rainbow-me/rainbowkitandwagmi, which are used in the wallet/connector stack of the UI - That means this is part of the runtime client/web3 interaction layer, not just tooling
- bn.js: Overridden to
>= 4.12.3via pnpm overrides inui/package.json:bn.js@<4.12.3→>=4.12.3
This ensures the patched version is used even if upstream packages haven't yet bumped their dependency ranges.
Multiple axios (npm) advisories remediations are stacked behind one override to 1.18.0:
- #126 / #128 — CRLF header injection chain (IMDSv2 bypass) and
NO_PROXYhostname normalisation bypass (SSRF); originally affected>= 1.0.0, < 1.15.0(patched floor was1.15.0). - GHSA-gcfj-64vw-6mp9 — Node HTTP adapter can inherit a polluted
Object.prototype.proxyafter interceptor config cloning; affected>= 1.15.2, < 1.18.0(patched floor1.18.0).
- CVE / Issues: #126 (CRLF header injection chain → IMDSv2 bypass, CVSS 9.9), #128 (NO_PROXY hostname normalisation bypass → SSRF), GHSA-gcfj-64vw-6mp9 (inherited proxy after interceptor cloning)
- Affected versions (union currently mitigated):
>= 1.0.0, < 1.18.0(plus the 0.x band handled separately below) - Current patched floor:
1.18.0 - Severity: Critical (#126), High (#128 / GHSA-gcfj-64vw-6mp9)
#126 — CRLF Header Injection: If any dependency in the stack has a prototype-pollution vulnerability, polluted Object.prototype properties are merged into Axios request headers without CRLF sanitisation. A crafted \r\n sequence in a header value becomes a request-smuggling payload, enabling AWS IMDSv2 bypass and IAM credential theft.
#128 — NO_PROXY Bypass: Axios performs literal string comparison for NO_PROXY rules. Hostnames with a trailing dot (localhost.) or IPv6 literals ([::1]) bypass the check and are incorrectly proxied through any configured HTTP proxy, undermining SSRF protections.
GHSA-gcfj-64vw-6mp9 — Inherited proxy after interceptor cloning: Axios hardens merged request config with a null-prototype object, but a common interceptor pattern ({...config} / Object.assign({}, config)) re-materialises a regular object. The Node HTTP adapter then reads config.proxy through the prototype chain, so a polluted Object.prototype.proxy can redirect plaintext HTTP requests.
- Mitigation date: 2026-04-16 (updated 2026-08-05 for GHSA-gcfj-64vw-6mp9)
- Mitigation type: pnpm override (transitive — blocked from direct parent upgrade)
- axios: Overridden to
1.18.0via rootpnpm-workspace.yaml(axios@>=1.0.0 <1.18.0) - Note: Prior redirect target
1.16.0(from an earlier advisory) fell inside the new vulnerable range>=1.15.2 <1.18.0and was refreshed to1.18.0 - Transitive paths fixed:
@rainbow-me/rainbowkit → axiosandwagmi → axios - Validation: pnpm lockfile regenerated;
axios@1.16.0no longer present
axios is a runtime dependency of @rainbow-me/rainbowkit and wagmi (wallet connection stack). These libraries run client-side in the browser. GHSA-gcfj-64vw-6mp9 specifically affects the Node HTTP adapter after interceptor config cloning; browser adapters are not the primary impact path. Residual risk remains if any server-side Node axios usage inherits a polluted Object.prototype.proxy.
CVE-2026-45409 / GHSA-65pc-fj4g-8rjx — specially crafted inputs to idna.encode() (and lesser-used alternate helpers) can bypass the CVE-2024-3651 length guard and consume excessive CPU.
- Affected versions:
< 3.15 - Patched version:
>= 3.15 - Severity: Medium
- Previously locked version:
3.14(above the incomplete 3.14 partial fix forencode(), but still below the 3.15 floor covering alternate entry points)
- Mitigation date: 2026-08-05
- Mitigation type: uv
override-dependencies(transitive) - idna:
idna>=3.15under[tool.uv] override-dependencies - Validation:
uv lockregenerated; lockfile resolvesidnato>=3.15
Transitive via requests / aiohttp / yarl used by the Python minting client for HTTP calls. Exploitation requires attacker-controlled domain-like strings of extreme length; normal DNS hostnames are capped at 253 characters.
Issues #121 (requirements.txt) and #122 (uv.lock) — SSRF in web3.py's CCIP Read implementation.
- Affected versions:
>= 6.0.0b3, < 7.15.0 - Patched version:
7.15.0 - Severity: High (SSRF — blind and redirect-amplified)
web3.py's handle_offchain_lookup() and async_handle_offchain_lookup() issue HTTP requests to URLs supplied by smart contracts via OffchainLookup reverts (EIP-3668), without:
- Restricting to
https:// - Blocking private/reserved IP ranges (loopback, link-local, RFC1918)
- Validating redirect targets
CCIP Read is enabled by default (global_ccip_read_enabled = True). A malicious contract can force the web3.py process to probe or exfiltrate from internal services (including AWS cloud metadata endpoints).
- Mitigation date: 2026-04-16
- Mitigation type: Direct dependency upgrade
- web3: Bumped from
7.14.1→7.15.0inpyproject.tomlandrequirements.txt - Validation:
uv lockregenerated;web3 v7.14.1no longer present
web3.py is used in the Python minting client for on-chain interactions (eth_call / contract calls). Any call against an untrusted contract address could trigger CCIP Read. Post-upgrade the library applies destination validation and redirect controls per the EIP-3668 security recommendations.
The following overrides are configured in ui/package.json:
{
"h3@<=1.15.4": ">=1.15.5",
"preact@>=10.26.5 <10.26.10": ">=10.26.10",
"preact@>=10.27.0 <10.27.3": ">=10.27.3",
"preact@>=10.28.0 <10.28.2": ">=10.28.2",
"@coinbase/wallet-sdk@>=4.0.0-beta.0 <4.3.0": ">=4.3.0",
"react@>=19.2.0 <19.2.4": ">=19.2.4",
"react-dom@>=19.2.0 <19.2.4": ">=19.2.4",
"next@>=15.5.0 <15.5.10": ">=15.5.10",
"minimatch@<3.1.4": ">=3.1.4",
"@isaacs/brace-expansion@<=5.0.0": ">=5.0.1",
"flatted@<3.4.0": ">=3.4.0",
"ajv@<6.14.0": ">=6.14.0",
"bn.js@<4.12.3": ">=4.12.3",
"axios@>=1.0.0 <1.18.0": "1.18.0"
}The following overrides are configured in root package.json:
{
"diff@<4.0.4": ">=4.0.4",
"diff@>=5.0.0 <8.0.3": ">=8.0.3"
}- Date:
2026-08-07 - Package:
brace-expansion(npm, transitive) - Vulnerable range:
<1.1.16|>=2.0.0 <2.1.2|>=3.0.0 <5.0.7 - Fixed/blocked target:
1.1.16/2.1.2/5.0.7via pnpm overrides (>=3.0.0 <5.0.7→5.0.7; no patched 3.x/4.x release exists) - Mitigation type: override (fail-closed); prior lockfile had
1.1.14and5.0.6 - Validation status:
pnpm install --lockfile-only
- Date:
2026-08-14 - Package:
sharp(npm, transitive via Next.js image pipeline) - Vulnerable range:
< 0.35.0 - Fixed/blocked target:
0.35.3via pnpm overridesharp@<0.35.0 - Mitigation type: override (fail-closed); prior lockfile had
0.34.5 - Validation status:
pnpm install --lockfile-only
- Date:
2026-08-14 - Package:
uuid(npm, transitive) - Vulnerable range (patched here):
>=11.0.0 <11.1.1 - Fixed/blocked target:
11.1.1via pnpm overrideuuid@>=11.0.0 <11.1.1 - Mitigation type: override (fail-closed) for 11.x only
- MAJOR BUMP DEFERRED: residual
uuid@8/9have no same-major patch; forcing11.1.1is a major jump (wallet/connector chains). Residual Dependabot alert accepted until parents can upgrade. - Validation status:
pnpm install --lockfile-only
After these updates, run:
# Install UI dependencies
cd ui
pnpm install
# Install root dependencies
cd ..
pnpm installThis will ensure all dependencies are resolved to the secure versions specified in the package.json files and overrides.
If you discover a security vulnerability in this repository, please report it responsibly by contacting the maintainers directly rather than opening a public issue.