Skip to content

fix(deps): sharp の high 脆弱性 (GHSA-rgj7-g3m4-5g8c) を override で塞ぐ — miniflare が exact pin していて dependabot が解けない #307

Description

@shinyaoguri

dependabot PR (#287 / #288 / #289) のマージ対応中に、Dependabot Updates の security update が sharp で失敗し続けていることに気づいたので起票する (本題とは無関係)。#270 (nanoid) とまったく同じ「上流が脆弱版を exact pin していて dependabot 単独では解けない」型。

現象

npm_and_yarn in /. for sharp - Update が failure。直近だけで 2 回 (34377916785 / 34378011723)。

脆弱性

項目
alert #61
GHSA GHSA-rgj7-g3m4-5g8c
severity high
概要 sharp: Vulnerabilities in libheif (GHSA-g89c-p67h-r497 / GHSA-2jg2-4ch7-h545)
影響範囲 < 0.35.4
初回修正版 0.35.4 (公開済み・現在の latest)
scope development

依存経路と、dependabot が解けない理由

typedcode@1.1.0
`-- wrangler@4.127.1 (dev)
  `-- miniflare@5.20260828.0-alpha
    `-- sharp@0.35.2   <- exact pin

miniflare は sharp を 範囲ではなく exact 0.35.2 で要求している。最新の miniflare@5.20260908.0-alpha を見ても依然 0.35.2 なので、wrangler / miniflare を上げても解消しない (#288 で wrangler 4.115.0 → 4.127.1 に上げた後も alert は open のまま)。dependabot には手が無く、毎月 failure で終わる。

影響

  • dev 依存のみ (wrangler dev / miniflare のローカル実行時)。本番バンドル・Workers のデプロイ成果物には入らない
  • 脆弱性は libheif の HEIF/AVIF デコード。TypedCode は画像を一切デコードしないので、この利用形態では到達しない見込み
  • 実害よりも衛生の問題 (high alert が open のまま、Dependabot Updates が毎回赤、npm audit が赤)

対応案

root package.jsonoverrides に 1 行足す:

"sharp": "^0.35.4"

0.35.2 → 0.35.4 は patch で API 互換。sharp はネイティブバイナリを持つので、適用後は npm ci が optionalDependencies (@img/sharp-*) を正しく取り直すことと、npm run dev:workers / e2e が動くことを確認する。

なお #270 のトリアージでは override より lock 更新 (案 B) が推奨されているが、今回は lock 更新では解けない (miniflare の要求が exact のため、npm update sharp では 0.35.2 から動かない)。override が唯一の手段になる。

関連


🤖 Assisted by Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests that update a dependency filepkg:repoリポジトリ横断 (docs/CI/依存)severity:high重要度の高い問題

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions