Skip to content

Daily security sweep — backlog #41

Description

@benfrank241

Rolling backlog for the daily security sweep on this repo: advisories that were found but deliberately not bundled, plus structural things that stop the sweep from verifying honestly. Appended to on each run.


2026-09-04

Not bundled — out of scope (no Dependabot alert)

yaml@2.7.0GHSA-48c2-rrv3-qjmp, moderate (CVSS 4.3, CWE-674), stack overflow via deeply nested YAML collections. Vulnerable range >=2.0.0 <2.8.3; fixed in 2.8.3.

  • Location: root package-lock.json, dev-only, transitive via typedoc@0.27.8.
  • Not flagged by Dependabot (no alert number), so it fell outside this run's scope of "open alerts". Surfaced by npm audit while verifying the toml bundle.
  • Clean fix available: typedoc declares yaml: ^2.6.1, which accepts 2.8.3, and it is the only requester. A plain global override is correct here — no scoping needed:
    "overrides": { "yaml": "^2.8.3" }
    (Use the caret form, not >=2.8.3, so the override cannot jump the major.)
  • Left for a maintainer or a future sweep rather than mixed into PR fix(security): bump toml 3.0.0 → 4.3.0 (root lockfile) — closes 4 Dependabot alerts #40, which is scoped to the four toml alerts.

Structural: Dependabot PRs on this repo can never go green

Every Dependabot PR in the last several months is red on all checks, and none of the failures are dependency-related:

  • Tests (TS)Error: VECTORIZE_API_KEY must be set (tests/testContext.ts:11). ci.yml reads secrets.VECTORIZE_TOKEN / secrets.VECTORIZE_ORG, which are not exposed to dependabot/* branches.
  • Tests (Python) — same root cause in tests/python.
  • Secret Detectiongitleaks-action@v2 fails without secrets.GITLEAKS_LICENSE, likewise unavailable.

Confirmed across dependabot/npm_and_yarn/toml-4.2.0 (#39), …/brace-expansion-2.1.4, …/tests/ts/postcss-8.5.25, …/linkify-it-5.0.2, …/pip/tests/python/pytest-9.0.3. On push to main the same GitLeaks job succeeds, which isolates the cause to the missing secret rather than a real finding.

Consequences worth a maintainer decision:

  1. Dependabot security PRs carry no signal — they cannot be merged on a green check, so they accumulate. This is why the sweep recreates them on chore/security-daily-* branches (which do get secrets).
  2. Consider populating Dependabot secrets (Settings → Secrets and variables → Dependabot) with VECTORIZE_TOKEN, VECTORIZE_ORG, GITLEAKS_LICENSE so Dependabot's own PRs become self-verifying, or gate the integration tests to skip cleanly when the key is absent.

Structural: Tests (TS) / Tests (Python) are live integration suites

Both jobs hit the real Vectorize API (VECTORIZE_ENV: dev). They are not runnable locally without credentials, and they exercise src/ts / src/pythonneither touches the root package.json. A root-lockfile bundle therefore gets no meaningful coverage from CI, and verification has to be derived from the actual consumers (see PR #40's verification section). Not a defect, just a limitation to remember on future root-lockfile sweeps.

Also noted

  • Two workflows are both named CI (ci.yml and docs.yml). gh run list output is ambiguous as a result — the CI failures on push/main are docs.yml (GitHub Pages doc generation), not the test workflow, which only triggers on pull_request. Renaming one would make triage easier.
  • Label security did not exist and was created by this run. dependencies already existed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

dependenciesPull requests that update a dependency filep1High severity - remediate within 30 dayssecuritySecurity fixes

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions