JFrog Artifactory CVE-2026-82329 - CVSS 9.8 の認証バイパスと実環境での悪用

JFrog Artifactory CVE-2026-82329 - CVSS 9.8 の認証バイパスと実環境での悪用

作成日:
読了:28
更新日:
この記事を読む人におすすめPR / Amazonアソシエイト

当サイトは Amazon.co.jp を宣伝しリンクすることで紹介料を得る手段を提供する、Amazonアソシエイト・プログラムの参加者です。価格・在庫はリンク先の最新情報をご確認ください。

社内のアーティファクトリポジトリは、ビルド成果物と依存パッケージの通り道です。そこに管理者として入り込めれば、攻撃者はコードを一行も書き換えずに、配布されるバイナリを差し替えられます。JFrog Artifactory の CVE-2026-82329 は、まさにその管理者権限を認証情報を一切持たない攻撃者が取得しうるという脆弱性でした。CVSS v3.1 は 9.8、CWE-287(Improper Authentication)です。

JFrog は 2026年8月28日にアドバイザリと修正版を公開しました。その数日後には watchTowr が実環境での悪用を観測したと報告し、米CISA は 2026年9月2日に KEV(Known Exploited Vulnerabilities)カタログへ追加、是正期限を 9月5日という異例の短さに設定しています。

この記事では、JFrog 公式アドバイザリ、MITRE の CVE レコード、NVD、CISA KEV の JSON フィードという一次情報をもとに、何が起きたのか、自社ホスト運用者は何をすべきかを整理します。

WARNING

影響を受けるのは自社管理(self-managed)の Artifactory です。JFrog Cloud(SaaS)は JFrog 側で対処済みで、利用者側の作業は不要とアドバイザリに明記されています。ただし「AWS や Azure 上に自分で立てた Artifactory」はクラウド上にあっても self-managed 扱いです。ここを取り違えると対応漏れになります。

NOTE

本記事の数値・バージョン・日付は、JFrog Security Advisories(2026年8月28日公開)、MITRE の CVE レコード(CVE-2026-82329、JFrog が CNA)、NVD、CISA KEV カタログの JSON フィード(カタログバージョン 2026.09.04)を 2026年9月7日時点で確認したものです。攻撃者の身元、被害組織数、正確な悪用開始時刻、実際のペイロードは一次情報で確認できていないため、本文で「未確認」と明示しています。

概要(まず結論)

項目内容
CVECVE-2026-82329
正式タイトルPotential authentication bypass leading to administrative access in Artifactory
CNA(採番元)JFrog
CVSS基本値(v3.1)9.8(Critical、スコア提供元は JFrog)
CVSSベクタ(v3.1)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0NVD・CVEレコードとも未評価
CWECWE-287(Improper Authentication)
対象製品JFrog Artifactory(self-managed のみ)
JFrog Cloud(SaaS)対象外(JFrog 側で対処済み)
CVE公開日2026年8月28日
修正版リリース日2026年8月28日
緩和策追加 join key の設定あり(後述)
悪用状況実環境での悪用を CISA が確認、KEV 収録済み
CISA KEV2026年9月2日追加、是正期限 2026年9月5日
ランサムウェア利用KEV の記録上は Unknown
CISA SSVCExploitation: active / Automatable: yes / Technical Impact: total

CVSS ベクタの前半 AV:N/AC:L/PR:N/UI:N は、ネットワーク越しに、特別な条件も権限も、利用者の操作すら不要で成立することを意味します。後半の C:H/I:H/A:H は機密性・完全性・可用性のすべてが最大影響です。

見落としがちですが、CISA の SSVC 判定が三拍子そろっている点はもっと重いシグナルです。Exploitation: active(実際に悪用中)、Automatable: yes(偵察から刈り取りまで自動化できる)、Technical Impact: total(制御を完全に奪える)。この組み合わせは「スキャンで見つかったら即座に落とされる」クラスの脆弱性であることを示しています。

影響を受けるバージョンと修正版

JFrog Artifactory は複数のリリースブランチを並行して保守しているため、修正版も 6 系統に分かれています。自分のブランチの修正版に上げる必要があり、単純に「最新に上げる」以外の選択肢もあるという点が実務上のポイントです。

ブランチ影響を受けるバージョン修正版
7.1117.111.4 から 7.111.20 まで7.111.21
7.1177.117.0 から 7.117.27 まで7.117.28
7.1257.125.0 から 7.125.19 まで7.125.20
7.1337.133.0 から 7.133.28 まで7.133.29
7.1467.146.0 から 7.146.37 まで7.146.38
7.1617.161.0 から 7.161.19 まで7.161.20

修正版 6 種はいずれも 2026年8月28日にリリースされています。

ここで一点、一次情報どうしで表記が食い違っている箇所があります。JFrog 公式アドバイザリと NVD の CPE 情報は 7.111 ブランチの下限を 7.111.4 としていますが、MITRE の CVE レコード(JFrog が登録した内容)では同じ範囲が「バージョン 0 以上 7.111.21 未満」と記載されています。つまり CVE レコードを素直に読むと 7.111.4 より古いバージョンも影響範囲に含まれることになります。7.111.4 未満の古い環境を運用している場合は「対象外」と判断せず、安全側に倒してアップグレードすべきです。

なお同じ時期、Artifactory にはもう 1 件 CVE-2026-66384(認証済みユーザーが Docker キャッシュの想定外パスへ書き込めるパストラバーサル、KEV 追加日 2026年8月27日、是正期限 2026年9月10日)も KEV へ収録されています。修正版は 7.146.35 および 7.161.16 で、こちらの期限のほうが後になっているため、82329 の対応に集中していると取りこぼしがちです。両方まとめて潰しておくのが安全です。

タイムライン

日付出来事
2026年8月12日JFrog が CVE-2026-66384 のアドバイザリを公開
2026年8月27日CISA が CVE-2026-66384 を KEV へ追加(是正期限 9月10日)
2026年8月28日JFrog が CVE-2026-82329 を採番・公開、同日に修正版 6 種をリリース
2026年9月1日watchTowr が実環境での悪用観測を公表
2026年9月2日CISA が CVE-2026-82329 を KEV へ追加、SSVC を Exploitation: active と判定
2026年9月5日米連邦民間行政機関(FCEB)向け是正期限

公開から悪用観測まで 4 日、KEV 追加まで 5 日です。watchTowr の脅威インテリジェンス担当者は報道各社に対し「開示から実環境での悪用まで、不快なほど効率的に進んだ」という趣旨のコメントを出しています。パッチ公開が攻撃者への号砲になる、というよく知られた構図がそのまま再現された形です。

同じ「パッチ公開後に一気に刈り取られる」パターンは、Langflow の未認証RCE CVE-2026-9198 でも起きていました。修正コードが公開された時点で差分から攻撃手法が復元できてしまうため、KEV 入りするより前に動き出すのが常套です。

技術的な中身: join key と「認証されていない登録経路」

JFrog Platform の join key とは何か

JFrog Platform(JFrog Platform Deployment、略して JPD)は単一のアプリケーションではなく、Artifactory、Access、Xray、Router といった複数のサービスが連携する構成をとります。このサービス同士が「自分は同じプラットフォームの一員だ」と名乗るための共有シークレットが join key です。新しいノードやサービスをクラスタに追加するとき、管理者は join key を渡すことで登録を許可します。

join key は system.yamlshared.security.joinKey、またはコンテナ環境では JF_SHARED_SECURITY_JOINKEY 環境変数で設定します。認証情報の発行と検証を担当するのは JFrog Access というコンポーネントで、サービス登録の受け口もここにあります。

つまり join key は、ユーザー向けのログイン認証とは別の、マシン間の信頼を成立させるもう一つの認証経路です。今回問題になったのはこちら側でした。

何が壊れていたのか

JFrog はアドバイザリで、この脆弱性を「既定構成のもとで、ネットワーク到達可能な未認証の攻撃者が管理者権限を取得しうる認証上の弱点」とだけ説明しており、内部実装の詳細は公開していません。ただし公式が提示した緩和策の内容が、問題の所在を強く示唆しています。緩和策は「追加の join key(additionalJoinKeys)を設定して、自分が発行した鍵しか受け付けないようにする」というものです。

そして watchTowr は報道各社へのコメントで、次のように説明しています(以下は報道経由で確認できた範囲の要約です)。

  • 追加の join key を設定していないインスタンスには、いわば「幻の(phantom)」join key が存在する状態になる。
  • 攻撃者はその状態を悪用して認証を偽造し、管理者相当の資格情報を発行できる。
  • 正規のユーザー名・パスワード・APIキー・セッションを事前に盗む必要がない。

さらに、第三者の研究者が公開しているパッチ差分の解析(GitHub の dinosn/cve-2026-82329-jfrog-artifactory)では、より踏み込んだ仮説が提示されています。これは JFrog が公式に確認した内容ではないため、あくまで研究者の解析結果として扱ってください。

  • 未認証で到達できるサービス登録エンドポイントが存在し、そこへ細工した JWT を送るとサービストークンが払い出される。
  • 修正版では join key のリストに対して空文字を除外するフィルタが追加されている。つまり修正前は空文字が有効な join key として通っていた
  • 空文字を鍵として使うと HMAC の署名鍵が決定論的に定まるため、攻撃者側で正しい署名を計算できてしまう。
  • 実際、この解析では JWT の kid空文字列の SHA-256 ハッシュ、すなわち e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 になると指摘されています。手元で printf '' | shasum -a 256 を実行すればこの値が一致することは誰でも確認できます。

「空の秘密鍵が秘密鍵として受理される」という失敗は、JWT を扱う実装で繰り返し出てくる古典的な穴です。鍵の空チェックと署名アルゴリズムの検証がなぜ必須なのかは、JWT(JSON Web Token)の仕組みと落とし穴 でも整理しています。

なぜサービストークンが管理者権限につながるのか

ここが CVSS 9.8 になった理由です。マシン間通信のために発行されるサービストークンは、本来「サービスとしての権限」しか持たないはずですが、JFrog Access はトークン発行 API そのものを提供しています。前掲の研究者解析によれば、払い出されたサービストークンを使ってトークン発行 API を叩くことで、管理者スコープのアクセストークンを新規に発行できる状態でした。修正版では、本来サービス権限で足りていた一部のエンドポイントが管理者権限必須へ引き上げられており、「サービス ID の露出が過剰だった」という指摘とも整合します。

構図としては、OAuth 2.0 や OIDC でクライアント認証が破られたときに起きることと同じです。信頼境界のどこか一箇所で「呼び出し元が誰か」の確認が甘いと、その先で発行されるトークンはすべて信用できなくなります(OAuth 2.0 と OpenID Connect の認可フロー)。

なぜ Artifactory の管理者権限がここまで重いのか

Artifactory は Maven、npm、PyPI、Docker、Go、NuGet といった各種パッケージのリポジトリを一元的にホストし、社内のビルド成果物の保管庫であると同時に、外部レジストリのリモートリポジトリ(キャッシュ兼プロキシ)としても機能します。多くの組織では、CI/CD が依存を取得する先が Artifactory に集約されています。

ここを管理者として掌握されると、次のことが一度に可能になります。

  • 成果物の差し替え。既存のバージョンに悪意あるバイナリを上書き、あるいは新しいバージョンとして公開する。依存を取得する全ビルドと全デプロイに波及します。
  • リモートリポジトリの汚染。上流の公開レジストリから取得したパッケージのキャッシュを差し替えれば、上流を一切侵害せずに社内配布物だけを汚染できます。
  • 認証情報の一括奪取。Artifactory は各種レジストリ・クラウドストレージ・LDAP/SAML との連携情報を保持します。管理者になればこれらの設定を読み書きできます。
  • バックドアユーザーの作成。watchTowr の観測では、攻撃者がユーザー・グループ・トークン・フェデレーテッドアクセスの構成を列挙する動きが確認されています。
  • 横展開。ビルドパイプラインが Artifactory の認証情報を保持している以上、逆方向に CI/CD やプロダクション環境へ進む足場になります。

npm パッケージ 1 つの侵害でも組織全体に波及することは、binding.gyp を悪用した npm ワーム で見たとおりです。Artifactory はそのパッケージが通る関所そのものなので、影響範囲は 1 パッケージの比ではありません。

対応手順

1. 稼働中のバージョンを確認する

まず自分のブランチと現行バージョンを特定します。UI であれば管理画面のフッターや Administration の General 画面に表示されます。ホストにログインできるなら、インストールディレクトリのバージョンファイルや起動ログで確認するのが確実です。

# tar/RPM/Debian インストールの場合(パスは環境により異なる)
cat /opt/jfrog/artifactory/app/ARTIFACTORY_VERSION.txt
 
# Docker Compose 構成の場合、イメージタグから確認する
docker compose images | grep artifactory
 
# Kubernetes(Helm)構成の場合
kubectl -n artifactory get deploy -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.template.spec.containers[*].image}{"\n"}{end}'

REST API の GET /artifactory/api/system/version でも取得できますが、この API は認証を要求します。脆弱性調査のために認証なしでバージョンを晒す設定に変更するのは本末転倒なので避けてください。

2. アップグレードする

自分のブランチの修正版、すなわち 7.111.21 / 7.117.28 / 7.125.20 / 7.133.29 / 7.146.38 / 7.161.20 のいずれか以降へ上げます。優先順位は明快です。

  1. インターネットから到達可能なインスタンス
  2. 開発者ネットワーク・ビルドネットワーク・社内共有ネットワークから到達可能なインスタンス
  3. それ以外

高可用性(HA)構成の場合はノードを 1 台ずつローリングで更新します。Artifactory の HA は同一バージョンでの運用が前提なので、更新中の混在時間を短くする計画が必要です。

3. すぐに上げられない場合の緩和策

JFrog はアドバイザリで、即座にアップグレードできない自社ホスト環境向けの回避策を提示しています。追加の join key を明示的に設定するという内容です。

まず十分な長さのランダム値を生成します。

openssl rand -hex 16
# あるいは
python3 -c "import secrets; print(secrets.token_hex(16))"

生成した値を system.yamlshared 配下 security セクションに追加します。

shared:
  security:
    additionalJoinKeys: "生成したランダム値"

コンテナ構成では、同等の環境変数 JF_SHARED_SECURITY_ADDITIONALJOINKEYS を設定します。複数の鍵を登録したい場合はカンマ区切りで並べます。設定後は Access サービス(または JPD 全体)を再起動してください。

この回避策は「自分が明示的に登録した鍵だけをサービス登録で受け付ける」状態にするものです。既存の join key はそのまま機能し続けるため、クラスタ構成が壊れることはありません。ただしこれはあくまで暫定措置であり、根本修正はアップグレードです。

なお、この鍵は Git リポジトリや CI の設定ファイルに平文で置かないでください。system.yaml 自体が秘密情報を含むファイルであることを前提に扱う必要があります。設定ファイルからの秘密漏洩がどれだけ日常的に起きているかは、Git リポジトリからの秘密情報漏洩パターン にまとめています。

4. インターネット露出を確認する

CVSS が AV:N である以上、まず問うべきは「そもそも外から見えているのか」です。

  • ロードバランサ、リバースプロキシ、WAF の設定を確認し、Artifactory と Access のポートが公開されていないか点検する。
  • クラウドのセキュリティグループ、ファイアウォールルール、Ingress 定義を棚卸しする。
  • 「開発用だから」「一時的に開けただけ」で放置された経路がないか、構成管理の履歴を確認する。

Artifactory を外部公開する運用上の必要性は、実際にはほとんどありません。社外の CI や外部委託先がアクセスする場合でも、VPN や IP 制限、あるいは限定的なリバースプロキシ経由に留めるべきです。

5. ログ調査と侵害確認の観点

アップグレードは侵害の有無を教えてくれません。すでに発行されてしまったトークンは、バイナリを差し替えただけでは無効になりません。次の観点でログを確認してください。

  • Access サービスのログ。サービス登録に相当するリクエストが、クラスタ構成ノード以外の IP から来ていないか。とくに 2026年8月28日以降のアクセスを重点的に見ます。
  • トークン発行の記録。管理者スコープのアクセストークンが、想定外のタイミング・想定外の呼び出し元で発行されていないか。有効期限が設定されていない(非失効の)管理者トークンは特に疑わしい対象です。
  • ユーザー・グループ・権限の変更履歴。心当たりのない管理者ユーザーの作成、既存ユーザーへの管理者権限付与、権限ターゲットの変更。
  • リポジトリと成果物の変更。既存アーティファクトの上書き、想定外のアップロード、チェックサムの不一致。
  • 連携設定の変更。リモートリポジトリの参照先 URL、Webhook、外部認証(LDAP/SAML/OIDC)の設定変更。
  • ネットワーク側の記録。Artifactory ホストからの想定外の外向き通信。

前述の研究者解析では、検知の手がかりとして「クラスタ外からのサービス登録リクエストの直後にトークン発行 API の呼び出しが続くパターン」や「空文字の SHA-256 ハッシュを kid に持つ JWT」が挙げられています。ログの保持期間内であれば、この観点でのグレップは試す価値があります。ただしこれは JFrog 公式の検知ガイダンスではありません。JFrog は本稿執筆時点でアドバイザリに IoC を掲載しておらず、公式な検知手順は公開されていないのが現状です。

ログの保持期間が短く、8月28日以降の記録がすでに失われている場合、「侵害がなかった」とは言い切れません。その前提で次のステップへ進むのが安全です。

6. トークンと認証情報のローテーション

インターネットに露出していた、あるいは露出の有無が確定できないインスタンスでは、次のローテーションを検討してください。

  • Artifactory 上のアクセストークン、APIキー、デプロイ用の資格情報。
  • join key(および設定した追加 join key)。
  • Artifactory に登録している外部サービスの認証情報。リモートリポジトリの上流認証、クラウドストレージのキー、LDAP/SAML のバインド情報など。
  • CI/CD 側に保存している Artifactory 向けのシークレット。

あわせて、侵害が疑われる期間にビルドされた成果物のチェックサムを、可能であれば再ビルド結果と突き合わせます。この種の事案では、事後対応の主眼は「何を持ち出されたか」よりも「何を書き換えられたか」の確認になります。

恒久対策として考えたいこと

Artifactory をインターネットに公開しない。これが最も費用対効果の高い対策です。今回の脆弱性は AV:N ですが、到達できなければ攻撃は成立しません。同じことは未認証の SQL インジェクションが見つかった Metabase にも言えました。社内ツールを外に出さないという単純な原則が、未知の脆弱性に対する最後の防波堤になります。

ネットワークを分離する。Artifactory を管理系ネットワークに置き、ビルドエージェントからは必要なポートのみ、必要な方向にだけ通す。Access サービスの管理系エンドポイントは、さらに限定した経路からしか触れないようにします。

トークンを棚卸しする習慣を持つ。非失効の管理者トークンが平時から大量に存在する環境では、今回のような事案が起きても「不審なトークン」を見分けられません。有効期限を設定する、スコープを最小化する、定期的に棚卸しする、という運用が異常検知の前提条件になります。

成果物の完全性を検証可能にする。SBOM の生成と保管、署名付きアーティファクト、再現可能ビルドといった仕組みは、「差し替えられたかどうか」を後から判定するための材料です。侵害を防ぐ手段ではありませんが、侵害が起きたときに調査を成立させる手段になります。

KEV カタログを運用に組み込む。CISA KEV は「実際に悪用されている」という一次判断が付いた脆弱性のリストです。自社の資産インベントリと突き合わせる仕組みがあれば、今回のような 5 日で期限が来る事案にも反応できます。

一次情報で確認できなかった事項

以下は本稿執筆時点で一次情報にあたっても確認できませんでした。断定を避け、未確認として記載します。

  • 攻撃者の身元と動機。特定のグループへの帰属は公表されていません。
  • 被害組織数と具体的な被害事例。公表された事例は確認できていません。
  • 正確な悪用開始時刻。watchTowr の観測公表が 2026年9月1日であることは確認できますが、それ以前から悪用が始まっていた可能性は否定できません。
  • 実際に使われたペイロードの完全な形。研究者による再現手法は公開されていますが、実攻撃で使われたリクエストそのものは公開されていません。
  • 脆弱性の内部的な原因の公式説明。JFrog は詳細を非公開としており、本稿の技術解説は緩和策の内容と第三者の解析からの推定を含みます。
  • 公式の IoC と検知シグネチャ。JFrog からは提供されていません。
  • インターネット露出インスタンスの正確な件数。信頼できる一次計測値は確認できませんでした。

まとめ

  • 今すぐ確認: 稼働中の Artifactory が 7.111.21 / 7.117.28 / 7.125.20 / 7.133.29 / 7.146.38 / 7.161.20 のいずれか以降になっているか。self-managed であれば対象です。JFrog Cloud は対象外です。
  • 修正: 自分のブランチの修正版へアップグレードする。インターネット露出インスタンスを最優先で。
  • 緩和: すぐ上げられないなら additionalJoinKeys を設定し、Access サービスを再起動する。あわせて外部到達経路を遮断する。
  • 事後対応: バイナリ更新だけでは既発行トークンは無効化されません。Access ログとトークン発行履歴を確認し、露出していた環境ではトークンと認証情報をローテーションする。
  • ついでに: 同じく KEV 収録済みの CVE-2026-66384(修正版 7.146.35 / 7.161.16)も一緒に潰しておく。

CVSS 9.8 という数字よりも、CISA の SSVC が Exploitation: active、Automatable: yes、Technical Impact: total と三拍子そろっている点のほうが実務的には重い判断材料です。公開から悪用まで 4 日、KEV 是正期限まで 8 日。アーティファクトリポジトリが CI/CD の関所である以上、ここを取られた場合の影響は自社の外まで広がります。確定情報は必ず JFrog のセキュリティアドバイザリと CISA KEV カタログでご確認ください。

参考リンク

GitLab 19.2.1/19.1.3/19.0.5セキュリティリリース - Workhorse情報漏えいとPipeline Schedule APIのmass-assignmentなど13件のCVEを修正

GitLab 19.2.1/19.1.3/19.0.5セキュリティリリース - Workhorse情報漏えいとPipeline Schedule APIのmass-assignmentなど13件のCVEを修正

20

GitLabが2026年7月29日に公開したセキュリティパッチリリース(19.2.1/19.1.3/19.0.5)を、公式リリースノートの一次情報にもとづき整理します。CVSS8.5のWorkhorse情報漏えいCVE-2026-6267、Pipeline Schedule APIのmass-assignment CVE-2026-12436、未認証DoSのCVE-2026-15975を含む13件のCVEの技術的内容と、Self-managed利用者が取るべき対応手順を解説します。

SAP 2026年7月パッチデー - NetWeaver AS ABAP の CVSS 9.9 メモリ破壊とApprouterのHTTPリクエストスマグリング

SAP 2026年7月パッチデー - NetWeaver AS ABAP の CVSS 9.9 メモリ破壊とApprouterのHTTPリクエストスマグリング

12

SAP が2026年7月14日のセキュリティパッチデーで公開した3件の重大脆弱性を一次〜準一次情報で整理します。NetWeaver AS ABAP のメモリ破壊 CVE-2026-44747(CVSS 9.9)、Approuter のHTTPリクエストスマグリング CVE-2026-27690(CVSS 9.1)、Commerce Cloud のサンプル認証情報放置 CVE-2026-44761(CVSS 9.1)について、影響製品・SAP Note番号・実務での優先順位を解説します。

Chrome の V8 型混同ゼロデイ CVE-2026-85046 - Array.prototype.sort のインライン化が生んだ Map の食い違い

Chrome の V8 型混同ゼロデイ CVE-2026-85046 - Array.prototype.sort のインライン化が生んだ Map の食い違い

52

2026年9月3日にChromeが修正し、翌4日にCISA KEVへ追加されたV8の型混同ゼロデイCVE-2026-85046を、Chrome Releasesの公式投稿・CVEレコード・KEVのJSONフィード・V8のコミットログという一次情報で整理します。PACKED_ELEMENTSの配列がPACKED_SMI_ELEMENTSのMapを受け取る仕組み、Array.prototype.sortのインライン化とcomparefnの副作用、書き込みバリアの省略がなぜ任意読み書きにつながるのか、「サンドボックス内での任意コード実行」の実際の意味、Edge・Brave・Electronへの波及、そして企業での更新強制まで。