Skip to content

chore(security): ignore dev-only esbuild advisory GHSA-gv7w-rqvm-qjhr#63

Merged
olivrg merged 1 commit into
mainfrom
fix/esbuild-audit
Jun 13, 2026
Merged

chore(security): ignore dev-only esbuild advisory GHSA-gv7w-rqvm-qjhr#63
olivrg merged 1 commit into
mainfrom
fix/esbuild-audit

Conversation

@olivrg

@olivrg olivrg commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

GHSA-gv7w-rqvm-qjhr

Description

The CI pnpm audit --audit-level=high gate started failing on every branch after a new advisory was published for esbuild (GHSA-gv7w-rqvm-qjhr: "Missing binary integrity verification in Deno module enables RCE via NPM_CONFIG_REGISTRY", patched in >=0.28.1). esbuild is a transitive build-time dependency only — pulled in by tsup (proxy build) and vite (dashboard build), both devDependencies. It is not part of the shipped @gethelio/proxy runtime.

This adds a scoped audit-ignore for that single GHSA so the gate passes:

"pnpm": {
  "auditConfig": {
    "ignoreGhsas": ["GHSA-gv7w-rqvm-qjhr"]
  }
}

Why ignore rather than bump? I first tried the proper fix — a pnpm override forcing esbuild ^0.28.1 — but esbuild 0.28 changed its destructuring transform and vite@6.4.2 cannot compile against it (the dashboard build fails with 600+ "Transforming destructuring … is not supported yet" errors). There is no patched esbuild below 0.28.1, so the only real fix is a vite major upgrade, which is out of scope for a CI unblock. The advisory's exploit vector (a malicious NPM_CONFIG_REGISTRY during install) does not apply to our trusted CI/build context, and esbuild ships in no runtime artifact, so suppressing this one advisory is a deliberate, low-risk triage.

Follow-up (tracked separately): upgrade vite to a release whose esbuild dependency is >=0.28.1, then drop this ignore. This keeps the suppression temporary rather than permanent.


## Type of Change

<!-- Check all that apply. -->

- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Refactor (no functional changes)
- [ ] Documentation
- [x] CI / build / tooling

## Packages Affected

- [ ] `packages/proxy`
- [ ] `packages/dashboard`
- [ ] `packages/python-sdk`
- [x] Root config / monorepo tooling
- [ ] `docs/`
- [ ] `examples/`

## Checklist

- [x] I have read [CONTRIBUTING.md](../CONTRIBUTING.md)
- [x] My code follows the existing style (ESLint + Prettier pass)
- [x] TypeScript strict mode — no `any` types or `@ts-ignore` without justification
- [x] I have added or updated tests for my changes
- [x] All CI checks pass (`pnpm secrets:scan`, `pnpm docs:check:ci`, `pnpm audit --audit-level=high`, `pnpm build`, `pnpm lint`, `pnpm format:check`, `pnpm typecheck`, `pnpm test`)
- [x] I have updated documentation if this changes user-facing behavior
- [x] Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) (e.g. `feat:`, `fix:`, `docs:`)

## How to Test

<!-- Steps a reviewer can follow to verify the change. -->

1. pnpm audit --audit-level=high — exits 0 (the esbuild advisory is reported but ignored; no other highs).
2. pnpm build — dashboard (vite) and proxy (tsup) both build with the existing esbuild (unchanged; pnpm-lock.yaml is not modified by this PR).
3. pnpm lint && pnpm format:check && pnpm typecheck — all clean.

## Additional Context

<!-- Screenshots, config snippets, performance benchmarks, or anything else that helps reviewers. -->
Single-file change (package.json); no dependency-graph or lockfile changes — auditConfig only affects how pnpm audit reports, not resolution. Unblocks the audit gate for all open PRs (it was failing repo-wide), including the in-flight sideband governance API (#12).

@olivrg olivrg merged commit 28c89eb into main Jun 13, 2026
3 checks passed
@olivrg olivrg deleted the fix/esbuild-audit branch June 13, 2026 19:48
olivrg added a commit that referenced this pull request Jun 16, 2026
Two high-severity advisories surfaced in the repo-wide `pnpm audit
--audit-level=high` gate (both transitive, both newly disclosed, so they now
fail CI on main as well):

- form-data (GHSA-hmw2-7cc7-3qxx, <4.0.6): CRLF injection via unescaped
  multipart field names/filenames. Reaches the runtime via @slack/web-api.
  Fixed with a pnpm override forcing form-data >=4.0.6 (a safe 4.x patch bump;
  proxy + Slack channel tests pass on 4.0.6).
- vite (GHSA-fx2h-pf6j-xcff, <=6.4.2): server.fs.deny bypass in the vite DEV
  server. The dashboard ships as prebuilt static assets served by the proxy;
  the vite dev server never runs in production, so the advisory does not affect
  the shipped artifact. Added to ignoreGhsas as dev-only, matching the esbuild
  precedent (#63). To be dropped when vite is upgraded (#64).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant