Watari Labs / Security
Security research.
A public record of the work.
Findings, CVEs, and the evidence behind our fixes. We explain the cause, check how our software uses the affected code, and show what changed.
Prepared by Watari-Dev. Reviewed 9 October 2026. This page is a dated snapshot; each GitHub report shows its live status.
- Public reports
- 35
- Closed fix records
- 35
- Fixes in review
- 0
- Awaiting upstream
- 0
Evidence before claims
These reports cover LabTether Hub source findings, console dependencies, and website build tools. Published dependency CVEs keep their original identifiers and researcher credit. GHSA-only and LabTether source findings do not claim an unassigned CVE. A dependency match, source review, and reproduced exploit are different forms of evidence; each report says which we have.
Report a new issue privately
Use LabTether’s private reporting channel for an undisclosed LabTether issue. For another Watari Labs product, contact support@watari.dev without sending secrets or exploit details in the first message.
Verified source fixes
Closed public records backed by verified source changes and passing checks. Each record states its fix date and release limits.
LT-SEC-2026-04Restricted PBS datastore details can include sibling task metadata
LabTether Hub PBS API · Main, 8 Oct 2026 → Main, 8 Oct 2026 · Fixed in source · see record
Finding and root cause
Datastore details fetched node-wide tasks and matched a datastore name anywhere in each worker ID. A task for backup-prod could therefore appear in details for allowed datastore backup. The merged fix omits node-wide tasks for asset-restricted requests.
Impact and LabTether scope
An authenticated connectors:read key restricted to one datastore asset may see a similarly named sibling store task's metadata. No backup content, credentials, task control, or live exploitation was shown. This is an internal research ID, not an assigned CVE.
The path was verified in public Hub tags v1.2.0, v1.2.1, v1.2.2, v1.3.0, and v1.4.0. v1.2.0 is the earliest tag checked; the first affected release and deployment exposure remain unknown.
Fix and validation
PR #206 merged as 1150f311c881 on 8 October 2026. Required PR CI, the focused PBS regression on merged main, and the 500-line check passed. A local mock supplied own and sibling tasks; no live PBS server or production Hub was tested.
Fixed in Hub source on main, 8 October 2026. No fixed tagged release, container image, or installed Hub is certified.
LT-SEC-2026-01Public agent binary Range requests repeat full-file hashes
LabTether Hub binary download · Main, 7 Oct 2026 → Main, 8 Oct 2026 · Fixed in source · see record
Finding and root cause
The public download handler verifies the full binary hash before processing a Range request. Repeated one-byte requests repeat whole-file reads and SHA-256 work. The digest check is needed for integrity; the merged fix retains verified bytes for later requests.
Impact and LabTether scope
A caller who can reach a Hub with a loaded manifest and matching binary can impose disproportionate work with small requests. Source review proves the repeated hash, but no live slowdown or outage was measured. This is an internal research ID, not an assigned CVE.
The affected source revision is untagged main on 7 October 2026. Available release tags did not contain this exact per-request hash path. Deployment exposure and proxy limits were not measured.
Fix and validation
PR #201 passed focused binary and Range tests, agent-package tests, Go vet, race tests, and required CI. The tests check the merged fix; no production target or live exploit was used. PR #201 merged as db95f0200ce3; current main CI and the 500-line check pass.
Fixed in Hub source on main, 8 October 2026. No tagged release, container image, or installed Hub fix is certified.
LT-SEC-2026-02Force-update installer uses a predictable root log path
LabTether Linux installer · v1.2.0–v1.4.0 → Main, 8 Oct 2026 · Fixed in source · see record
Finding and root cause
The optional --force-update path writes root updater output to a fixed filename in shared /tmp. On hosts that permit following a local user's prepared symlink, shell redirection can truncate a root-writable target. The merged fix creates a private temporary log under the root-owned configuration directory.
Impact and LabTether scope
This needs local access, a root operator choosing --force-update, and permissive symlink handling. Linux protected-symlink policy can block it. No privileged overwrite, code execution, or remote attack was demonstrated. This internal research ID is not an assigned CVE.
The path was verified in the public Hub release tags v1.2.0, v1.2.1, v1.2.2, v1.3.0, and v1.4.0. The first affected release remains unknown.
Fix and validation
PR #201 passed generated-installer success and failure tests, agent-package tests, Go vet, race tests, and required CI. No real host exploit was run. PR #201 merged as db95f0200ce3; current main CI and the 500-line check pass.
Fixed in Hub source on main, 8 October 2026. No fixed tagged release, agent package, or installed system is certified.
LT-SEC-2026-03Agent update progress can forge Hub log lines
LabTether Hub agent messages · v1.2.0–v1.4.0 → Main, 8 Oct 2026 · Fixed in source · see record
Finding and root cause
The Hub logged agent-supplied update progress with raw line breaks and did not check that it requested the named update from that agent. The merged fix binds progress to a live asset-specific update and escapes logged control characters.
Impact and LabTether scope
An enrolled agent or holder of its asset-bound bearer could make misleading Hub process-log lines. This does not run an update, give admin access, or write another asset. No downstream alert effect or live exploit was tested. This internal research ID is not an assigned CVE.
The route and raw log sink were verified in public Hub release tags v1.2.0, v1.2.1, v1.2.2, v1.3.0, and v1.4.0. The first affected release remains unknown.
Fix and validation
PR #201 passed focused log escaping and update-correlation tests, agent-package tests, Go vet, race tests, and required CI. No production agent or Hub was tested. PR #201 merged as db95f0200ce3; current main CI and the 500-line check pass.
Fixed in Hub source on main, 8 October 2026. No fixed tagged release, container image, or installed Hub is certified.
CVE-2026-102277brace-expansion: Quadratic-time expansion of the `{a},b}` rewrite causes CPU denial of service
brace-expansion · 5.0.9 → 5.0.12 · Fixed in source · see record
Finding and root cause
Repeated brace rewrites restart scans without a rewrite counter. Existing result and length limits do not bound this branch; hostile patterns can consume excessive CPU. The inspected patch adds a rewrite budget.
Impact and LabTether scope
An attacker who controls brace patterns passed to brace-expansion 5.0.9 can make a Node.js process repeat expensive parsing. LabTether's assessed copy belongs to console development tooling; no remote request-to-pattern route was found. This report covers remediation of GHSA-q2hr-2g5m-vwhr / CVE-2026-102277, with no confirmed LabTether exploitation.
Development tooling through minimatch and ESLint. No product path accepting hostile expansion patterns was found.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-102278brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion
brace-expansion · 5.0.9 → 5.0.12 · Fixed in source · see record
Finding and root cause
Nested brace groups recurse without a depth check in the affected release. Output limits are reached too late to prevent stack exhaustion. The selected upstream release adds bounded parsing.
Impact and LabTether scope
An attacker who can feed deeply nested patterns into brace-expansion 5.0.9 could exhaust the process stack. LabTether’s assessed console lockfile contains that version in development tooling. No product import or remote attacker-to-pattern route was found, so this is a dependency remediation report, not confirmed LabTether exploitation. The underlying issue is GHSA-qhr7-859c-m2p7 / CVE-2026-102278.
Development tooling through minimatch and ESLint. No product path accepting hostile expansion patterns was found.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-102276brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion
brace-expansion · 5.0.9 → 5.0.12 · Fixed in source · see record
Finding and root cause
The comma parser recursively processes the remaining suffix of a brace pattern. Long comma structures can exhaust the stack. The selected upstream release removes this unbounded recursion.
Impact and LabTether scope
An attacker who can supply a pattern to an application using brace-expansion 5.0.9 can reach unbounded parser recursion and oversized function argument lists. Upstream reports stack exhaustion; an uncaught exception can terminate the consuming process. No remote attacker-to-pattern path was established in LabTether. Upstream lists >=4.0.0, <5.0.10 as affected and 5.0.10 as first patched.
Development tooling through minimatch and ESLint. No product path accepting hostile expansion patterns was found.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
GHSA-vcvr-r3jv-pc5jNext.js: Remote Code Execution in next/og ImageResponse
next · 16.3.3 → 16.3.7 · Fixed in source · see record
Finding and root cause
The inspected Node ImageResponse bundle inserts text, attribute and style values into SVG without the required escaping. Encoding the finished SVG does not repair this. The updated bundle escapes those values; the upstream advisory reports possible code execution under its stated conditions.
Impact and LabTether scope
An attacker who can supply SVG text, attributes, or styles to a Node.js next/og image route may make data become SVG markup. Upstream reports possible remote code execution for that configuration. LabTether's assessed development tree locks Next.js 16.3.3, but we found no next/og, ImageResponse, or generated social-image consumer. Hub exploitation is unconfirmed. I reviewed the affected and replacement package source; I did not execute an exploit.
Runtime dependency. No next/og ImageResponse consumer or matching attacker input path was found in the reviewed Hub console.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
GHSA-rgj7-g3m4-5g8csharp: Vulnerabilities in libheif: GHSA-g89c-p67h-r497 and GHSA-2jg2-4ch7-h545
sharp · 0.35.3 → 0.35.5 · Fixed in source · see record
Finding and root cause
Sharp can pass HEIF input through libvips to libheif. Upstream reports memory-safety defects in the native decoder delivered with affected packages. The wrapper path and replacement package delivery were reviewed; the native failure was not independently reproduced.
Impact and LabTether scope
An attacker who can make a service decode crafted HEIF/AVIF input through affected sharp can reach upstream libheif memory faults. LabTether's assessed development tree locks sharp 0.35.3, but no attacker-fed Hub decoder path was demonstrated. This is a dependency remediation report, not evidence of Hub remote code execution.
Optional Next.js image dependency. No attacker-fed image decoding path was demonstrated; the observed icon picker uses bundled, unoptimized SVG assets.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
GHSA-wq5f-xc86-pv6wsharp : Vulnerability in librsvg dependency CVE-2026-96889
sharp · 0.35.3 → 0.35.5 · Fixed in source · see record
Finding and root cause
Affected Sharp distributions include a vulnerable librsvg decoder. Upstream reports a memory defect with possible code execution under specific glibc Linux conditions. The native memory failure and those conditions were not independently reproduced in LabTether.
Impact and LabTether scope
An attacker who supplies SVG data to an application decoding it with affected sharp native libraries may reach the upstream-reported librsvg memory flaw. That entry point has not been demonstrated in LabTether Hub; this is a dependency remediation report, not confirmed Hub remote code execution.
Optional Next.js image dependency. No attacker-fed image decoding path was demonstrated; the observed icon picker uses bundled, unoptimized SVG assets.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-93749source-map-js allows event-loop denial of service through indexed source-map section offsets
source-map-js · 1.2.1 → 1.2.2 · Fixed in source · see record
Finding and root cause
Indexed source-map section offsets lack sufficient numeric and size checks. Large offsets can expand later mapping work and stall the event loop. The inspected update validates and bounds the offsets.
Impact and LabTether scope
If Mallory can supply an indexed source map to an application that converts it with source-map-js 1.2.1, a huge section line offset can force excessive synchronous work during serialisation. This supports an availability risk, not a demonstrated LabTether attack. I compared the publisher-integrity-verified npm sources for 1.2.1 and 1.2.2; I did not execute hostile input.
Present through CSS tooling and jsdom. No attacker-supplied indexed source-map route or direct application consumer was found.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-85024undici vulnerable to Denial of Service via unhandled error in WebSocket permessage-deflate decompression
undici · 7.29.0 → 7.29.1 · Fixed in source · see record
Finding and root cause
An oversized WebSocket inflate result removes error listeners while the zlib stream remains active. A later stream error can go unhandled. The inspected patch destroys the stream and keeps cleanup safe.
Impact and LabTether scope
Mallory controls a WebSocket server that an Undici 7.29.0 client connects to. After negotiating compression, she sends data that exceeds the decompressed-message limit and then fails decompression. Upstream reports that the resulting unhandled error can terminate the client process. This is an availability issue, not demonstrated code execution or a confirmed Hub attack.
Development dependency through jsdom and Vitest. No application use of the affected API was found. The npm update does not patch Node’s embedded fetch or global WebSocket.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-18149undici vulnerable to Denial of Service via orphaned RetryHandler response body
undici · 7.29.0 → 7.29.1 · Fixed in source · see record
Finding and root cause
A retry can replace the response object after headers were already delivered. The caller retains the earlier body while completion follows another body, leaving the first unresolved. The inspected patch guards response handling across retries.
Impact and LabTether scope
A server controlled by Mallory can strand a response body when an application retries a truncated response and receives a non-retryable reply. Upstream identifies denial of service; we did not reproduce it.
Development dependency through jsdom and Vitest. No application use of the affected API was found. The npm update does not patch Node’s embedded fetch or global WebSocket.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-18540undici vulnerable to downstream response splitting via retry interceptor
undici · 7.29.0 → 7.29.1 · Fixed in source · see record
Finding and root cause
A retry of a partially received error response can use an open-ended range while retaining framing from the earlier response. A downstream proxy can then forward inconsistent response boundaries. The inspected patch bounds retry handling and framing.
Impact and LabTether scope
Mallory controls an upstream server contacted through Undici 7.29.0 with the opt-in interceptors.retry() enabled. She interrupts a length-delimited response, then supplies a longer resumed body. If a forwarder retains the first response's length, trailing bytes may become another downstream HTTP response. This forwarding impact remains conditional; no LabTether API exploit was demonstrated.
Development dependency through jsdom and Vitest. No application use of the affected API was found. The npm update does not patch Node’s embedded fetch or global WebSocket.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-19534undici vulnerable to Denial of Service via unrequested WebSocket subprotocol
undici · 7.29.0 → 7.29.1 · Fixed in source · see record
Finding and root cause
The WebSocket handshake accepts earlier upgrade checks before processing an unrequested peer subprotocol. The affected teardown can produce an unhandled error. The selected upstream release repairs that error path.
Impact and LabTether scope
Mallory controls a WebSocket server contacted by a Node.js client using Undici 7.29.0 without requested subprotocols. An otherwise valid upgrade response containing Sec-WebSocket-Protocol reaches a null dereference instead of rejecting the connection. GHSA-rfgv-xxqx-mfg5 / CVE-2026-19534 reports process termination from the uncaught exception. No LabTether crash, data access or code execution was demonstrated.
Development dependency through jsdom and Vitest. No application use of the affected API was found. The npm update does not patch Node’s embedded fetch or global WebSocket.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-84890undici vulnerable to Denial of Service via unbounded decompression of compressed responses
undici · 7.29.0 → 7.29.1 · Fixed in source · see record
Finding and root cause
The optional decompression interceptor limits decoder layers but does not count total decoded output. Compressed input can therefore exhaust resources. The inspected 7.29.1 patch adds byte limits with a 64 MiB default; that is why this temporary exact pin was selected.
Impact and LabTether scope
Mallory controls an upstream HTTP server and sends a compressed response to a client using Undici's optional interceptors.decompress() interceptor. Undici 7.29.0 does not bound decoded bytes, allowing resource exhaustion according to GHSA-3xpg-4rpp-hhhm / CVE-2026-84890. No affected Hub API route or process crash was demonstrated.
Development dependency through jsdom and Vitest. No application use of the affected API was found. The npm update does not patch Node’s embedded fetch or global WebSocket.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-84933undici vulnerable to cross-user cookie disclosure via Set-Cookie caching in shared caches
undici · 7.29.0 → 7.29.1 · Fixed in source · see record
Finding and root cause
The shared-cache interceptor can store and replay Set-Cookie headers across callers with matching entries. The inspected patch rejects cookie-bearing shared entries during storage, reuse and revalidation.
Impact and LabTether scope
When an application enables Undici’s shared cache, Mallory, a later caller, can receive Alice’s cookie header by requesting the same cached response. An upstream Mallory controls can also plant cookies for later callers. This crosses caller isolation; session takeover and a vulnerable Hub endpoint are not established.
Development dependency through jsdom and Vitest. No application use of the affected API was found. The npm update does not patch Node’s embedded fetch or global WebSocket.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-84947undici vulnerable to response truncation via oversized chunked responses in the dump interceptor
undici · 7.29.0 → 7.29.1 · Fixed in source · see record
Finding and root cause
The dump interceptor announces success when a chunked body reaches its size limit, before the response really ends. Later errors can be suppressed. The inspected patch waits for completion and explicitly rejects oversized input.
Impact and LabTether scope
Mallory controls an HTTP upstream that a client contacts through Undici’s optional dump interceptor. With Undici 7.29.0, she can send an oversized chunked body and cause premature successful completion instead of a size-limit error. No affected LabTether application route has been demonstrated.
Development dependency through jsdom and Vitest. No application use of the affected API was found. The npm update does not patch Node’s embedded fetch or global WebSocket.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-84961undici vulnerable to TLS certificate validation bypass via dropped connect options in BalancedPool
undici · 7.29.0 → 7.29.1 · Fixed in source · see record
Finding and root cause
BalancedPool clones options through JSON, dropping function-valued TLS callbacks. A peer can evade that extra custom policy while normal chain and hostname checks still apply. The inspected update preserves the callbacks.
Impact and LabTether scope
Mallory, controlling a TLS peer contacted by an application, can evade an extra certificate policy when Undici 7.29.0 BalancedPool drops its callback. Her certificate must still pass Node's normal chain and hostname checks; this is not general acceptance of invalid certificates. I compared the 7.29.0 and 7.29.1 package sources; no exploit was executed. This dependency review credits upstream GHSA-w293-vg96-wgc3, CVE-2026-84961, reported by MegaManSec.
Development dependency through jsdom and Vitest. No application use of the affected API was found. The npm update does not patch Node’s embedded fetch or global WebSocket.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-85008undici vulnerable to caching and replay of unsafe HTTP method responses
undici · 7.29.0 → 7.29.1 · Fixed in source · see record
Finding and root cause
The cache interceptor can store and replay some unsafe-method responses despite its configured safe-method list. A later POST or PUT can receive a cached response instead of reaching the origin. The inspected update checks the request method before storage and lookup.
Impact and LabTether scope
Mallory controls an origin contacted by an application using Undici 7.29.0 with its cache interceptor enabled. Her response can make a later identical POST or PUT receive a cached response instead of reaching the origin. This breaks the expected delivery of state-changing requests; no Hub exploit or account compromise was demonstrated.
Development dependency through jsdom and Vitest. No application use of the affected API was found. The npm update does not patch Node’s embedded fetch or global WebSocket.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-85014undici vulnerable to Denial of Service via WebSocketStream unclean close
undici · 7.29.0 → 7.29.1 · Fixed in source · see record
Finding and root cause
An abrupt peer close calls abort on a locked WebSocketStream writer and discards the rejecting promise. Upstream reports process termination under default Node rejection handling. The inspected patch errors the stream through its controller.
Impact and LabTether scope
Mallory controls a WebSocket peer used by an Undici 7.29.0 client. After the client acquires a writer, she can terminate the connection without a close handshake. Upstream reports client process termination under Node.js's default unhandled-rejection behaviour. No LabTether Hub exploit was demonstrated.
Development dependency through jsdom and Vitest. No application use of the affected API was found. The npm update does not patch Node’s embedded fetch or global WebSocket.
Fix and validation
Merged to main on 7 October 2026 in PR #181, commit 48100fee6026. Normal install, npm audit with zero findings, 401 tests, lint, production build, standalone proxy checks, and required GitHub CI passed. These compatibility checks do not reproduce an exploit.
Fixed in source on main. No tagged release, container image, or installed Hub fix is certified by this report. Older builds need a version check.
CVE-2026-93687Unbounded brace nesting in website lint tooling
braces · 3.0.3 → 3.0.3 + reviewed local backport · Fixed in source · see record
Finding and root cause
The parser records nesting without a depth bound, while compile, expand, and stringify traverse the resulting tree recursively. A bounded reproduction confirmed native stack exhaustion from deeply nested braces, parentheses, and direct AST input. The reviewed backport adds one structural-depth limit across those paths, parent chains, and nested expansion arrays.
Impact and LabTether scope
Upstream reports denial of service in tools accepting untrusted glob patterns. Original research: Wayde Shi, PayPal Cyber Security Team. No remotely reachable LabTether website exploit was demonstrated.
LabTether website development chain: eslint-config-next → @next/eslint-plugin-next → fast-glob → micromatch → braces. The observed Next lint path uses fast-glob for configured rootDir patterns; our configuration supplies no such setting. Watari.dev does not have this dependency chain.
Fix and validation
The original 3.0.3 package reproduced native stack exhaustion. The installed local backport rejects over-depth strings, direct ASTs, non-array child collections, parent cycles, and nested expansion arrays with controlled errors. Thirteen focused tests, 14 upstream-compatibility cases, the full website test suite, lint, build, Worker build, and npm audit passed.
Fixed in the LabTether website source and deployed on 7 October 2026. The public patch is linked here. It is a LabTether backport, not an upstream braces release; other consumers still need an upstream fix or their own reviewed remedy.
CVE-2026-73089browserslist memory exhaustion
browserslist · 4.28.6 → 4.28.8 · Fixed in source · see record
Finding and root cause
Upstream reports unbounded growth in Browserslist result and query caches. Repeated distinct queries can retain enough data to exhaust memory. The linked record shows the affected version replaced by an upstream patched release.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
The lockfile marks this package as a development dependency.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-73088browserslist custom stats crash and prototype write
browserslist · 4.28.6 → 4.28.8 · Fixed in source · see record
Finding and root cause
Upstream reports unsafe handling of custom Browserslist statistics, including prototype writes and crashes. The linked record shows an upstream patched version installed in the source lockfile.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
The lockfile marks this package as a development dependency.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-67213nanoid zero-size generator loop
nanoid · 3.3.12 → 3.3.18 · Fixed in source · see record
Finding and root cause
A zero size passed into affected Nano ID custom generators can leave their generation loop running forever. Exploitation requires an application to pass that value into the affected API. The linked fix updates the 3.x dependency line.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
This package is present without the lockfile development-only flag; that alone does not establish runtime exploitability.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-69153PostCSS source map file access
postcss · 8.5.15 → 8.5.26 · Fixed in source · see record
Finding and root cause
PostCSS source-map checks can skip path restrictions when the CSS source filename is absent. Upstream reports unintended map-file access in that configuration. The linked record verifies a patched PostCSS version in source.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
This package is present without the lockfile development-only flag; that alone does not establish runtime exploitability.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-67214nanoid negative-size generator loop
nanoid · 3.3.12 → 3.3.18 · Fixed in source · see record
Finding and root cause
A negative size passed into affected non-secure Nano ID generators can keep their loop from ending. Exploitation requires an application to pass that value into the affected API. The linked fix updates the 3.x dependency line.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
This package is present without the lockfile development-only flag; that alone does not establish runtime exploitability.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-69152brace-expansion unbounded intermediate arrays
brace-expansion · 5.0.7 → 5.0.9 · Fixed in source · see record
Finding and root cause
A brace-expansion output limit does not bound every intermediate array. Hostile patterns can still exhaust memory before the final accumulator limit applies. The linked record verifies the upstream fix in the source lockfile.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
The lockfile marks this package as a development dependency.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-15157undici request header injection
undici · 7.28.0 → 7.29.0 · Fixed in source · see record
Finding and root cause
A blob-like body can supply an untrusted type containing line breaks. In the affected HTTP dispatcher, this can insert extra headers or requests. The linked record verifies replacement of the affected Undici package.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
The lockfile marks this package as a development dependency.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-14643undici cache directive information disclosure
undici · 7.28.0 → 7.29.0 · Fixed in source · see record
Finding and root cause
The cache parser mishandles whitespace around qualified no-cache or private directives. Fields meant to remain private can then be cached. The linked record verifies the upstream patched package.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
The lockfile marks this package as a development dependency.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-16729undici cookie attribute injection
undici · 7.28.0 → 7.29.0 · Fixed in source · see record
Finding and root cause
Cookie domain and unparsed attribute values can include separators that introduce extra cookie attributes. Upstream reports attribute injection through those paths. The linked record verifies replacement of the affected package.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
The lockfile marks this package as a development dependency.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-13697undici private cache disclosure and crash
undici · 7.28.0 → 7.29.0 · Fixed in source · see record
Finding and root cause
Upstream reports defects in private-cache directive handling that can disclose information or crash a caller. The linked record documents the affected dependency version and the merged upstream package fix.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
The lockfile marks this package as a development dependency.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-16728undici retry response desynchronization
undici · 7.28.0 → 7.29.0 · Fixed in source · see record
Finding and root cause
After a partial-response retry, the exposed Content-Length can disagree with the delivered body. Forwarding both can corrupt response framing or stall downstream connections. The linked record verifies the patched package in source.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
The lockfile marks this package as a development dependency.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-73646PostCSS source map path traversal
postcss · 8.5.15 → 8.5.26 · Fixed in source · see record
Finding and root cause
PostCSS can resolve an untrusted source-map reference outside the intended path. Upstream reports a traversal flaw in previous-map loading. The linked record verifies a patched dependency version.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
This package is present without the lockfile development-only flag; that alone does not establish runtime exploitability.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.
CVE-2026-14257brace-expansion memory exhaustion
brace-expansion · 5.0.7 → 5.0.9 · Fixed in source · see record
Finding and root cause
A result-count limit alone does not bound the length of each expanded brace result. Large intermediate strings and arrays can exhaust process memory. The linked record verifies the upstream length-limit fix.
Impact and LabTether scope
Previously published upstream dependency vulnerability. This retrospective record proves removal of the affected version; exploitation or compromise of LabTether was not demonstrated.
The lockfile marks this package as a development dependency.
Fix and validation
Merged 3 September 2026 in PR #132, commit 491cfabc0c30. Exact before/after lockfiles, retained patched versions on main, fixed Dependabot status, web CI and JavaScript/TypeScript CodeQL were verified. Public record added 7 October 2026.
Fixed in source on main. This does not certify a tagged release, container image, or installed system. Older builds need a version check.