トップ/記事一覧/VS CodeのJava拡張機能に乗っ取りの脆弱性 CVE-2026-12856、不正なコードを開いて操作すると危険、v1.55.0へ更新を
vscode-java-cve-cover-ja

VS CodeのJava拡張機能に乗っ取りの脆弱性 CVE-2026-12856、不正なコードを開いて操作すると危険、v1.55.0へ更新を

VS CodeでJavaを書く定番拡張機能「Language Support for Java(Red Hat製)」に、不正なコードを開き説明ポップアップ内のリンクを押すとパソコンを乗っ取られかねない脆弱性(CVE-2026-12856、CVSS8.8)が判明。拡張機能をv1.55.0へ更新を。

ニュース2026年6月30日公開 本日更新
目次
この記事のポイント

VS CodeでJavaを書く定番拡張機能「Language Support for Java(Red Hat製)」に、不正なコードを開き説明ポップアップ内のリンクを押すとパソコンを乗っ取られかねない脆弱性(CVE-2026-12856、CVSS8.8)が判明。拡張機能をv1.55.0へ更新を。

Visual Studio Code(VS Code)でJavaを書くときに広く使われている拡張機能「Language Support for Java(Red Hat製)」に、深刻な脆弱性が見つかりました。不正に細工されたJavaのコードを開き、表示される説明ポップアップ内のリンクを押してしまうと、開発者のパソコンを乗っ取られる(任意コード実行)恐れがある欠陥です。共通脆弱性番号は CVE-2026-12856、深刻度はCVSS 8.8(10点満点)。開発元のRed Hatは2026年6月29日に詳細を公開し、拡張機能の バージョン1.55.0 で修正しました。

この拡張機能は、VS CodeにJavaの入力補完やエラー表示、コード移動などの機能を足すもので、Javaを扱う開発者向けの定番として非常に多くの利用者がいます。今回の穴は、ソースコードに書かれた説明文(JavaDoc)をマウスでなぞったときに出る案内ポップアップの作りにありました。コードを「読むだけ」「触るだけ」で被害につながり得る点が、ふだん気にしにくい怖さです。

項目内容
脆弱性番号CVE-2026-12856
対象Language Support for Java(Red Hat製
VS Code拡張機能 / vscode-java)
種類引数インジェクション
(説明ポップアップ内の隠しコマンド)
何が起きるか任意のVS Codeコマンド実行
→パソコンの乗っ取り
深刻度(CVSS)8.8(NVD / CVSS v3.1)
影響する版 / 修正版1.55.0 未満 / 1.55.0

※企業向けの開発環境「Red Hat OpenShift Dev Spaces 3」も、この拡張機能を内包するため影響を受けます(Red Hatのセキュリティ情報)。

この欠陥は誰に、どんな被害をもたらすのか

この穴を突けるのは、罠を仕込んだJavaのコードを、開発者に開かせられる立場の攻撃者です。たとえば、公開リポジトリに置いた一見便利なサンプルやライブラリ、求人の「コーディング課題」、技術記事に添えた検証用プロジェクト、プルリクエストで送られてくる修正案など、開発者が日常的に他人のコードをVS Codeで開く場面はいくらでもあります。攻撃者はそこに仕掛けを忍ばせるだけで、特別なログインや権限を必要としません。

仕掛けの中身はこうです。コード中の説明コメント(JavaDoc)に、見た目はふつうの参考リンクに見せかけた「VS Codeへの命令を実行する隠しリンク」を埋め込みます。開発者がそのコードにマウスを重ねると説明ポップアップが現れ、そこに表示されたリンクをうっかり押した瞬間に、攻撃者が指定した命令が動きます。命令の内容しだいで、外部から取り込んだプログラムの実行までつなげられます。

被害の本質は、開発者のパソコンそのものが乗っ取られることです。開発マシンには、社内システムへの接続情報、クラウドの鍵、未公開のソースコード、各種サービスのトークンなど、組織の中枢に届く資産が集まっています。一台抜かれれば、そこを起点にした他システムへの侵入や、配布物への不正コード混入(サプライチェーン汚染)まで波及しかねません。開発ツールの拡張機能という「土台」を経由する攻撃である点で、依存しているソフトの安全をまとめて見直す必要性を示す一件です。当サイトのOSSサプライチェーン スキャナーでも、この種の「土台ソフトの弱点」を点検する重要性を扱っています。なお、悪意あるコードを開くだけで開発者マシンが奪われる構図は、コードエディタ「Zed」で起きたCVE-2026-44461ほかの脆弱性とも同じ系統です。

この拡張機能とは何か、自分は対象なのか

「Language Support for Java(Red Hat製)」は、VS CodeにJava開発の中核機能を足す拡張機能です。識別名は redhat.java、開発上の通称は vscode-java と呼ばれます。入力補完・エラーの即時表示・定義へのジャンプ・リファクタリングなどを担い、VS Codeでまとめて入れる「Extension Pack for Java」にも含まれています。Javaを書く開発者なら、知らないうちに導入しているケースが多い拡張機能です。

自分が対象かどうかは、VS Codeの拡張機能一覧で「Language Support for Java(TM) by Red Hat」を探し、バージョンが 1.55.0 より古いかどうかで判断できます。Javaの拡張パックを入れている人や、企業向けの「Red Hat OpenShift Dev Spaces 3」を使っている組織も対象です。逆に、Javaを書かずこの拡張を入れていなければ、今回の脆弱性そのものの対象ではありません。

どうやって乗っ取りに至るのか

VS Codeには、リンクをクリックするとエディタ内の機能(コマンド)を呼び出せる特別な仕組み(command: から始まるリンク)があります。本来この仕組みは、信頼できる拡張機能が自分の機能を呼ぶために使うもので、外部から来た文章に含まれていてはいけません。ところがvscode-javaは、ソースコードのJavaDoc(説明コメント)を見やすく整形してポップアップ表示する際、そこに書かれた文章(Markdown)をすべて信頼できるものとして扱い、この命令リンクをそのまま生かしていました。

つまり、攻撃者がJavaのコメントに細工した命令リンクを仕込めば、それが正規の説明ポップアップの一部として表示されてしまいます。開発者がリンクを押すと、攻撃者の意図したVS Codeコマンドが実行され、そこから外部プログラムの実行などへ展開され得ます。脆弱性の分類は、命令に渡す引数の検証不足を突く「引数インジェクション」(CWE-88)です。修正版の1.55.0では、ホバー表示するJavaDocから命令リンクを除去(無害化)するよう改められました(リリースノートの「Sanitize existing command links from hover Javadocs」)。詳細は GitHubのセキュリティ勧告(GHSA-7qv8-6qrw-3crv)Red Hatの不具合情報 にまとめられています。

「信頼済みワークスペース」が鍵になる

Red Hatの説明では、この攻撃が成立するのは「信頼済みワークスペース(trusted workspace)」のときとされています。VS Codeには、開いたフォルダを信頼するかどうかを尋ねる「ワークスペースの信頼(Workspace Trust)」という安全機能があり、信頼しない場合は「制限モード」で開かれ、コードの自動実行などが抑えられます。今回の命令実行も、制限モードでは抑止される側に当たります。

問題は、多くの開発者が「このフォルダーのファイルの作成者を信頼しますか?」の確認を反射的に「信頼する」で通してしまう点です。クローンしたばかりの他人のリポジトリをすぐ信頼してしまえば、罠は機能します。修正版への更新が最優先ですが、すぐ更新できない間は、見覚えのないコードを開くときに安易に信頼せず制限モードのまま閲覧する、というのが現実的な自衛になります。

いま何をすべきか

最優先は拡張機能の更新です。VS Codeの拡張機能ビュー(横の四角アイコン)で「Language Support for Java(TM) by Red Hat」を開き、バージョンが 1.55.0 以上になっているか確認してください。自動更新を有効にしていれば順次上がりますが、確実を期すなら手動で更新します。Javaの拡張パックを入れている場合も、内部のこの拡張が更新対象です。企業で「Red Hat OpenShift Dev Spaces」を提供している場合は、Red Hatの案内に沿って更新を適用します。

すぐに更新できない場合の当面の守りは、出どころの分からないコードを「信頼する」で開かないことです。受け取ったプロジェクトはまず制限モードで中身を確認し、JavaDocの説明ポップアップに表示されたリンクを不用意に押さない、という運用で被害条件を避けられます。組織で多数の開発者にVS Codeを配っているなら、拡張機能のバージョンを点検し、古いままの端末を優先して更新するとよいでしょう。

まとめ

CVE-2026-12856は、VS Code向けJava拡張機能「Language Support for Java(Red Hat製)」にあった引数インジェクションの欠陥です。悪意あるJavaコードのJavaDocに命令リンクを仕込み、開発者が説明ポップアップ内のリンクを押すと、任意のVS Codeコマンドが動いてパソコンの乗っ取りに至り得ます。修正版の1.55.0が公開済みのため、まずは更新の適用が要点です。

他人のコードを開くのは開発者の日常であり、エディタや拡張機能はその入口にいます。だからこそ、開発ツールの更新と、見知らぬコードを安易に信頼しない習慣の両方を、この機会に見直しておきたいところです。

よくある質問

VS CodeでJavaを書いていますが、必ず危険なのですか?

悪意あるコードを開き、かつそのワークスペースを「信頼」した状態で、説明ポップアップ内のリンクを押した場合に被害が成立します。自分で書いた信頼できるコードだけを扱っているなら直ちに危険というわけではありませんが、他人のコードを開く機会がある以上、拡張機能を1.55.0以上へ更新することを強く推奨します。

自分が使っているバージョンの確認方法は?

VS Codeの拡張機能ビューで「Language Support for Java(TM) by Red Hat」を開くと、名前の近くにバージョンが表示されます。1.55.0 より古ければ影響を受けるため、更新してください。Javaの拡張パック経由で入っている場合も同じ拡張が対象です。

すぐに更新できません。当面できることは?

出どころの分からないプロジェクトを「信頼する」で開かず、VS Codeの制限モードのまま中身を確認してください。また、JavaDocの説明ポップアップに表示されるリンクを不用意にクリックしないことで、被害の条件を避けられます。

すでに悪用されていますか?

本記事の時点で、実際に攻撃へ使われたという公的な報告(米CISAの「実際に悪用された脆弱性リスト」=KEVへの登録など)は確認していません。ただし手口は理解しやすく深刻度も高いため、悪用が始まる前の早期更新が重要です。

更新履歴

  • 2026年6月30日:初版公開(6月29日のNVD公開、6月25日公開の修正版1.55.0、GHSA-7qv8-6qrw-3crvを受けて作成)。

参照元

avatar-m-1

堀川 慎

Backend Engineer / AWS / Django / Go