#123

feat(deps): move dependency pins past published advisory ranges

Opencoygeekopened 9d ago

Summary

Update the CLI's dependency pins so a fresh installation no longer resolves the affected versions listed in the public advisories below. This is a dependency-maintenance proposal. Vulnerable code-path reachability and exploitation through AI CLI have not been established.

Problem to solve

The latest published package and the current default-branch package manifest pin sharp to 0.35.4 and undici to 7.30.0. Both versions fall within published advisory ranges with released patches. Keeping exact pins at those versions leaves consumers unable to receive the dependency fixes through an ordinary installation of the current CLI release.

Proposed behavior

Publish a CLI dependency set outside these affected ranges, preserving the existing commands and media behavior. Maintainers can choose the supported patched versions and validation approach.

Acceptance criteria

  • The CLI package manifest and lockfile resolve versions outside all nine listed affected ranges.
  • A fresh installation of the resulting published CLI release resolves the corrected dependency set.
  • Relevant existing CLI checks continue to pass, including media preview and download coverage.

Affected area

packages/ai-cli/package.json, the repository lockfile, and the dependency metadata shipped with the CLI package.

Non-goals

This proposal does not report a newly discovered vulnerability in AI CLI, claim that an advisory's attack prerequisites are reachable through the CLI, or request a public exploit demonstration. No application behavior failure or successful exploitation was reproduced.

Alternatives considered

Leave the exact pins unchanged, or move them to patched releases after compatibility validation. The latter removes the known version matches without requiring consumers to override the dependency graph. A major-version dependency migration is not required by this proposal.

Supporting context

  • Published baseline: npm ai-cli@0.8.0, also the latest stable GitHub release, source revision bd9d87a8ead2ff247b669fc6d4bcac90e8d96353.
  • Default-branch baseline: main at 20592fdd6deb68e09856f675a54e685b05b02226, with an unreleased package version of 0.8.1.
  • Verification was package and source inspection, not a CLI execution, source build, or exploit test. Runtime and platform are not needed to reproduce the manifest version matches.
  • The published npm metadata lists the pins. The corresponding tarball was fetched and its SHA-512 matched dist.integrity; its package manifest has the same pins.
  • The current source manifest has the same pins. The table links the public advisory sources that establish the affected and patched versions.
DependencyAdvisoryPublished advisory summaryFirst patched version in the pinned major line
undiciGHSA-2m5v-pch6-74hxAgent drops function-valued TLS options7.30.1
undiciGHSA-4qv8-2p9j-2685EventSource parser can grow memory without a bound7.30.1
undiciGHSA-4w7w-5xrc-9h26Redirect handling can poison caches and disclose cross-user data7.30.1
undiciGHSA-55wc-3pg8-jfw6Decompression interceptor can throw an uncaught exception7.30.1
undiciGHSA-9fm3-97px-rjf6Automatic WebSocket PONG responses can accumulate without a bound7.30.1
undiciGHSA-f72v-6w45-q472Integrity checks accept algorithm tokens incorrectly7.30.1
undiciGHSA-qrxm-fqhp-jwvmTLS renegotiation can cause denial of service7.30.1
sharpGHSA-wq5f-xc86-pv6wlibrsvg memory safety under specified runtime conditions0.35.5
undiciGHSA-xjj6-f33q-929cToo many content encodings can trigger an uncaught error7.30.1

The sharp advisory describes conditions on glibc-based Linux and distinguishes prebuilt binaries from a global librsvg installation. The undici TLS advisory applies to function-valued tls options such as a custom checkServerIdentity. These conditions were not established in AI CLI. The other listed advisory paths were also not exercised through the CLI. Advisory severities describe the dependencies' reported conditions, not demonstrated impact on AI CLI users.

Motivation

Make the released dependency set consume already-public upstream fixes while preserving compatibility. The observable result is a dependency tree without these version-range matches.

Implementation notes

The listed patched versions identify the earliest fixes in the currently pinned major lines; they are not a request to skip compatibility review or a claim that the resulting full dependency tree has no other advisories.

Testing notes

Inspect the resulting manifest, lockfile, and published package metadata, and rerun the repository's relevant existing checks. No compatibility tests were run for a replacement dependency set in this report.

Risks or tradeoffs

Dependency changes can affect native image binaries or HTTP behavior. Maintainers should validate the chosen versions before release. This proposal provides version evidence only.

Co-contributor credit

No, do not credit me.

Checklist

  • I have searched existing issues for duplicates.
  • I understand pull requests are limited to collaborators and maintainers will handle implementation.
  • I have removed API keys, tokens, credentials, and private data from this report.

Triage assessment

  • Impact level: not-applicable
  • Assessment status: not-applicable
  • Impact basis: This is a dependency-maintenance proposal based on public advisory version matches. No AI CLI behavioral failure, attack path, or security impact was established.
  • Workaround status: not-applicable
  • Workaround basis: No demonstrated application defect is classified by this proposal; consumer dependency overrides were not tested.

Activity

0

No activity yet.