jqの脆弱性CVE-2026-32316とは?バージョンの確かめ方と、Ubuntu・Mac(Homebrew)での更新方法

jqの脆弱性CVE-2026-32316のアイキャッチ。対象1.8.1以前と修正版1.8.2を案内する図

シェルスクリプトやCIで jq を使っている方向けに、脆弱性 CVE-2026-32316 の対象バージョンと更新方法をまとめます。結論から言うと、jq 1.8.1以前を使っている場合は、修正版の1.8.2、または利用中のOSが配布している修正済みパッケージへ更新してください。

この記事では、悪用手順や再現用ペイロードは扱いません。自分のバージョンが対象かどうかを確かめる方法と、Ubuntu・Debian、Mac(Homebrew)での更新方法だけを整理します。

目次

結論:1.8.1以前は更新する

  • 対象:jq 1.8.1以前(公式アドバイザリでは「<= 1.8.1」と記載)
  • 修正版:1.8.2(2026年6月20日公開。日本時間では6月20日23時11分)
  • 深刻度:High、CVSS 8.2(GitHub公式アドバイザリの評価)
  • 注意:UbuntuやDebianのパッケージでは、バージョン番号が1.8.2にならなくても修正が取り込まれている場合があります。OSのパッケージで入れている場合は、後述のパッケージバージョンもあわせて確認してください
jqの対象バージョン1.8.1以前と修正版1.8.2の対応図

何が起きる脆弱性か

jq公式のGitHub Security Advisory(GHSA-q3h9-m34w-h76f)によると、文字列をつなぐ処理の中で、長さの計算があふれる(整数オーバーフロー)問題がありました。組み合わせた文字列が非常に大きくなると、本来必要な大きさよりずっと小さいメモリ領域しか確保されず、そこへ大きなデータを書き込むことでヒープバッファオーバーフローが起きる、という内容です。分類は CWE-190(整数オーバーフロー)からつながる CWE-122(ヒープベースのバッファオーバーフロー)とされています。

公式アドバイザリは、影響について「信頼できないjqクエリを評価する利用者やシステムが影響を受ける」と説明しています。細工されたクエリでjqのプロセスを落とされるおそれがあり、環境によってはヒープの破損がさらなる悪用につながる可能性も指摘されています。

どんな使い方がとくに注意か

  • 利用者や外部システムから受け取ったクエリを、そのままjqで評価している
  • CIやサーバー上で、外部から来たJSONやクエリをjqで処理している
  • 実行するクエリは固定でも、入力されるJSONが外部から来ていて、しかも非常に大きなデータになり得る

手元で自分が書いたクエリとデータだけを処理している場合でも、対象バージョンを使っているなら更新しておくのが安全です。「大きな文字列が必要なら自分には関係ない」と決めつけず、まずバージョンを確認してください。

信頼できないクエリや大きな入力が処理される場合の影響の流れを概要で示した図

自分のバージョンを確かめる

まず、今使っているjqのバージョンを確認します。

jq --version

表示された版が1.8.1以前なら、今回の対象です。1.8.2以降なら、この脆弱性の修正は含まれています。ただし、次に説明するように、OSのパッケージで入れている場合は表示だけで判断しないでください。

開発用PCだけでなく、CI、コンテナ、サーバーなど、jqが動いている場所ごとに確認が必要です。手元だけ新しくても、コンテナイメージやCIの実行環境が古いまま残っていることがあります。

Ubuntu・Debianでは「1.8.2でなくても直っている」場合がある

UbuntuやDebianでは、OS側が古いバージョンのまま修正だけを取り込む(バックポートする)ことがあります。そのため、版の表示が1.7.1や1.6でも、パッケージの細かい版数が修正済みに達していれば、CVE-2026-32316への修正は入っています。逆に、表示が古い版のままでパッケージも古ければ更新が必要です。

Debian修正済みパッケージの例
bookworm1.6-2.1+deb12u3
trixie1.7.1-6+deb13u3以降
forky、sid1.8.2-1

古いLTSではUbuntu Pro側で提供されるものもあるため、自分の版の案内を公式ページで確認してください。

Ubuntu修正済みパッケージの例
26.04 LTS1.8.1-4ubuntu2
25.101.8.1-3ubuntu1.1
24.04 LTS1.7.1-3ubuntu0.24.04.2
22.04 LTS1.6-2.1ubuntu3.2
dpkg -l jq libjq1

表示されたパッケージ版が、自分のOS向けの修正済み版以降であれば、番号が1.8.2でなくても修正済みです。表に自分のOSがない場合や判断に迷う場合は、DebianとUbuntuの公式ページ(記事末尾の参考リンク)で、自分のリリースの欄を確認してください。

更新方法(Ubuntu・Debian)

OSのパッケージでjqを入れている場合は、パッケージを更新します。

sudo apt update
sudo apt install --only-upgrade jq libjq1

更新が終わったら、もう一度バージョンとパッケージを確認します。

jq --version
dpkg -l jq libjq1

表示される版そのものは1.8.2にならない場合があります。その場合は、パッケージ版が上の表の修正済み版以降になっているかで判断してください。

更新方法(Mac・Homebrew)

Homebrewでjqを入れている場合は、Homebrew側で更新します。

brew update
brew upgrade jq

更新後に、版を確認します。

jq --version

ここで1.8.2以降と表示されれば、今回の修正版に上がっています。

jqのバージョン確認から対象なら更新、再確認までの流れ図

公式バイナリや自前ビルドを使っている場合

OSのパッケージではなく、公式リリースのファイルを直接置いている場合や、自分でビルドしている場合は、jq 1.8.2の公式リリースに入れ替えてください。入れ替え後に、実際に使われるjqの版が1.8.2以降になっていることを確認します。古いファイルを別の場所に残したまま、そちらが使われ続けていないかも見てください。

コンテナで使っている場合は、イメージを作り直して入れ替える必要があります。ベースイメージやインストール手順に古い版が固定されていないかも、あわせて確認してください。

今すぐ更新できない場合に見ること

  • 外部から受け取ったクエリを、そのままjqで評価しない。実行するクエリは自分で管理したものに限る
  • 外部から来るJSONの大きさに上限を設けられる場合は、運用に合わせて上限を検討する
  • CIやサーバーで動くjqも対象に含め、更新できる場所から順に1.8.2以降、またはOSの修正済みパッケージへ寄せる

これらは更新までの間の見直しであり、代わりにはなりません。最終的には修正済みの版へ更新してください。

まとめ

  • jqの脆弱性CVE-2026-32316は、1.8.1以前が対象、深刻度はHigh(CVSS 8.2)
  • 修正版はjq 1.8.2(2026年6月20日公開)
  • Ubuntu・Debianのパッケージでは、1.8.2という表示でなくても修正済みの場合があるため、パッケージ版数も確認する
  • 開発用PCだけでなく、CI・コンテナ・サーバーで動くjqも確認し、対象なら更新する

参考(一次情報)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

社内エンジニアとして、SREとセキュリティの仕事をしています。サーバーの構築や運用、クラウド環境の設計にも関わってきました。趣味はゲームと漫画・アニメ。

コメント

コメントする

目次