Skip to content

fix(deps): nanoid の high 脆弱性 (GHSA-2v37-7h3g-55p8) を override で塞ぐ — dependabot の自動更新が失敗し続けている #270

Description

@shinyaoguri

P3 の作業中に、dependabot の security update が失敗し続けていることに気づいたので起票する (本題とは無関係)。

現象

Dependabot Updates ワークフローの npm_and_yarn in /. for nanoid が失敗する。少なくとも 2 回連続 (31562747532 / 31900302356)。

dependabot 自身がログで原因と対処を書いている:

To resolve this, update postcss to a release that depends on a non-vulnerable nanoid, or add an override/resolution pinning nanoid to a non-vulnerable version.

つまり dependabot には直せない (nanoid は直接依存ではなく、上流の postcss が古い nanoid を要求しているため) ので、毎回エラーで終わっている。

脆弱性

項目
GHSA GHSA-2v37-7h3g-55p8
severity high
概要 nanoid: custom generators can loop indefinitely when size is zero
影響範囲 < 3.3.18
初回修正版 3.3.18

依存経路

typedcode@1.1.0
`-- @typedcode/editor@1.0.0
  `-- vite@8.1.3
    `-- postcss@8.5.16
      `-- nanoid@3.3.15

ビルドツールチェーン (vite → postcss) 経由の devDependency なので、本番バンドルには入らない。実行時の攻撃面ではなく、ビルド環境の問題。

対応案

このリポジトリは既に overrides で同種の問題を処理している (root package.json):

"overrides": {
  "vite": "^8.0.5",
  "dompurify": "^3.4.5",
  "ws": "^8.20.1",
  "uuid": "^11.1.1",
  "undici": "^7.29.0"
}

直近の #259 (undici を override で 7.29.0 に上げ、dead な rollup override を外す) がまさに同じパターン。ここに 1 行足すだけで済む:

"nanoid": "^3.3.18"

3.3.18 は公開済み (3.3.16 / 3.3.17 / 3.3.18 が入手可能)。postcss の要求は ^3.3.x なので semver 的に互換で、メジャーを跨がない。

あわせて #259 の方針に倣い、既に不要になった override が無いかも点検したい (override は放置すると dead になって実態と乖離する)。

関連

Metadata

Metadata

Assignees

No one assigned

    Labels

    pkg:repoリポジトリ横断 (docs/CI/依存)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions