生成AIのリスクとは?企業利用で注意すべき情報漏洩・著作権・誤情報と対策

Share
生成AIのリスクとは?企業利用で注意すべき情報漏洩・著作権・誤情報と対策アイキャッチ画像

生成AIは、文章作成や要約、翻訳、情報収集、プログラミング支援など、さまざまな業務で利用されるようになりました。業務を効率化できる一方で、機密情報の漏洩や誤情報、著作権など、新たなリスクへの対応も必要です。

さらに、生成AIを利用するのは企業や一般のユーザーだけではありません。攻撃者がフィッシングメールの作成や攻撃に必要な情報収集などに生成AIを悪用することも考えられます。生成AIにはどのようなリスクがあり、企業はどう向き合えばよいのでしょうか。本記事では、企業による利用とサイバー攻撃への悪用という両面から、生成AIのリスクと対策を考えます。

生成AIの利用リスクだけでなく、AI・LLMを取り巻く脅威や企業に求められる対策の全体像については、「AIセキュリティとは?生成AI時代に企業が知っておくべきリスクと対策」で詳しく紹介しています。

生成AIの普及で広がる企業のリスク

生成AIは、一部の技術者や専門家だけが利用するものではなくなりました。メールや資料の作成、文章の要約、翻訳、アイデア出し、プログラムコードの作成・確認など、日常的な業務のさまざまな場面で活用されています。利用できる場面が広がるほど、生成AIが扱う情報も重要になります。

例えば、「文章を考えてもらう」だけであれば、入力するのは簡単な指示だけかもしれません。しかし、実際の業務では、顧客から届いたメールを貼り付けて返信を作成したり、会議録や契約書をアップロードして要約したり、ソースコードを入力して問題点を確認したりすることも考えられます。こうした使い方は便利ですが、生成AIに渡す情報の中に機密情報や個人情報などが含まれていれば、新たな情報管理の問題が生じます。

また、注意が必要なのは入力する情報だけではありません。生成AIが出力した内容が正しいとは限らず、その情報をどのように利用するかについても利用者側の判断が必要です。生成AIが業務に深く入り込むほど、「何を入力するのか」「何が出力されたのか」「その結果を何に使うのか」を考える必要性も高まっているのです。

企業が生成AIを利用する際のリスクは、大きく「入力」と「出力」に分けて考えると整理しやすくなります。

場面主なリスク
AIへの入力機密情報・個人情報の漏洩、著作物・知的財産の取り扱い
AIからの出力誤情報・ハルシネーション、著作権等の問題、AIへの過度な信頼
組織での利用シャドーAI、利用状況を把握できないリスク
外部からの脅威攻撃者による生成AIの悪用

生成AIに何を入力するかだけを管理しても、出力された情報を無条件に信用してしまえば別の問題が生じます。また、社内ルールを整備していても、従業員が管理外の生成AIを利用していれば、企業としてリスクを把握できません。

さらに、自社が生成AIを利用するリスクだけでなく、攻撃者が生成AIを利用することでサイバー攻撃が効率化される可能性についても考えておく必要があります。

生成AIに機密情報を入力するとどうなる?

生成AIの企業利用で特に注意したいのが、機密情報や個人情報の取り扱いです。例えば、次のような使い方は業務効率化のために自然に行われる可能性があります。

  • 顧客から届いたメールを貼り付けて返信文を作成する
  • 会議録をアップロードして要点をまとめる
  • 契約書を読み込ませて内容を要約する
  • ソースコードを入力してエラーの原因を調べる
  • 社内資料を読み込ませて新しい資料を作成する

しかし、そこに顧客情報や個人情報、社外秘情報、未公開情報などが含まれていれば、企業が管理すべき情報を外部の生成AIサービスへ渡すことになります。

「生成AIに入力するとすべて学習される」は正しい?

生成AIへの情報入力について、「入力した情報はすべてAIの学習に使われる」と説明されることがあります。しかし、必ずしも一律にそうなるわけではありません。入力データが保存されるのか、モデルの学習やサービス改善に利用されるのかといった条件は、サービスや契約プラン、設定などによって異なります。そのため、「生成AIだから機密情報を入力してはいけない」という単純な判断だけではなく、自社が利用するサービスで入力データがどのように取り扱われるのかを確認することが重要です。

企業では、利用規約やプライバシーポリシー、データの保存・利用条件などを確認したうえで、業務利用を認めるサービスを選定する必要があります。また、入力してよい情報と禁止する情報を具体的に定め、従業員に周知することも重要です。「機密情報は禁止」とするだけでなく、顧客情報、個人情報、社外秘資料、認証情報など、自社の業務に即した例を示すと判断しやすくなります。

生成AIと著作権で注意すべきこと

生成AIと著作権の問題についても、「AIが作ったものを使ってよいか」という生成物だけに目を向けるのではなく、AIへ何を入力するかという点から考える必要があります。

他人の文章や画像を生成AIに入力してよいのか

生成AIを利用する際、Web上の文章や画像、顧客・取引先から提供された資料などを入力することがあります。しかし、こうした情報には著作権のほか、契約上の秘密保持義務や利用条件などが関係する場合があります。「インターネットで公開されている」「自社が保有している」という理由だけで、どのような使い方でも認められるとは限りません。業務で生成AIへ情報を入力する場合は、その情報をAIサービスへ提供して問題がないかという観点からも確認する必要があります。

AIが作った文章や画像なら自由に使えるのか

生成AIが作成した文章や画像、プログラムコードなどについても、無条件に自由に利用できるとは限りません。生成物が既存の著作物と類似していたり、第三者の権利に関係する内容を含んでいたりする可能性があります。また、利用する生成AIサービスによって生成物に関する利用条件が異なる場合もあります。

特に、Webサイトや広告、製品、顧客向け資料など外部に公開するコンテンツに生成AIを利用する場合には、人による確認を行い、用途に応じて権利関係についても確認することが重要です。生成AIの利便性が高まるほど、「AIが作ったから問題ない」と考えず、最終的にその生成物を利用する側が確認するという意識が必要になります。

生成AIは「もっともらしく間違える」

生成AIのもう一つの特徴が、必ずしも正しい情報を出力するとは限らないことです。生成AIは、事実とは異なる情報を、自然で説得力のある文章として生成する場合があります。このような現象は「ハルシネーション」と呼ばれます。

例えば、

  • 存在しない事例を紹介する
  • 誤った数値を示す
  • 実在しない書籍や論文、Webページを出典として挙げる
  • 古い情報を現在の情報として回答する
  • 質問の前提を誤って解釈したまま回答する

といったことが考えられます。

問題は「間違いが間違いらしく見えない」こと

生成AIの誤情報で注意したいのは、単にAIが間違えることだけではありません。回答が自然な文章で生成されるため、利用者が誤りに気づかず、「AIが回答したのだから正しいだろう」と信用してしまう可能性があります。例えば、存在しない制度や統計を社内資料に記載したり、誤った内容を顧客への回答に使用したりすれば、企業の信用にも影響しかねません。

そのため、生成AIを検索エンジンや一次情報そのもののように扱うことは避ける必要があります。重要な情報については、公的機関や企業の公式情報、原典などを確認します。また、顧客への回答や外部公開資料、法務・財務・セキュリティなど重要な判断に利用する場合には、人によるレビューを組み込むことが必要です。

生成AIは判断を代替するものではなく、情報整理や作業を支援するツールとして使うことが基本となります。

生成AIはサイバー攻撃にも使われる

ここまでは企業が生成AIを「使う側」のリスクを見てきました。しかし、生成AIを利用できるのは企業や一般ユーザーだけではありません。攻撃者にとっても、生成AIは情報収集や文章作成、プログラミングなどを支援するツールになり得ます。

フィッシングメール作成のハードルを下げる

フィッシング攻撃では、受信者をだまして偽サイトへ誘導したり、マルウェアを実行させたりするためのメールやメッセージが利用されます。

生成AIを使えば、自然な文章の作成や翻訳、文章の修正などを短時間で行うことができます。攻撃対象の業種や立場に合わせた文章を作成する作業にも利用できるため、攻撃者によるコンテンツ作成の負担を減らす可能性があります。

従来、不自然な日本語や文法上の誤りは不審なメールを見分ける手掛かりの一つでした。しかし、生成AIによって自然な文章を容易に作成できるようになれば、文章の不自然さだけでフィッシングを見抜くことはさらに難しくなります。

マルウェアや攻撃コードの作成にも悪用されるのか

主要な生成AIサービスでは、有害なコンテンツやサイバー攻撃への悪用を防ぐための安全対策が講じられています。それでも、生成AIがプログラムコードの作成や修正、技術情報の整理などに利用できる以上、攻撃者が攻撃準備や作業の一部を効率化するために利用する可能性はあります。ここで重要なのは、「生成AIが登場したことで、これまで存在しなかったサイバー攻撃が突然生まれた」と捉えることではありません。

生成AIでサイバー攻撃はどう変わるのか

生成AIがサイバー攻撃に与える大きな影響の一つは、既存の攻撃を「速く」「大量に」「巧妙に」実行するための支援に使われる可能性があることです。

例えば、攻撃対象に関する情報収集、フィッシングメールの文章作成、翻訳、プログラムコードの作成支援など、従来は攻撃者自身が時間をかけて行っていた作業の一部を効率化できます。これは防御する企業側にとっても重要な変化です。これまでと同じ種類の攻撃であっても、攻撃者が試行できる量や速度が増えれば、企業が直面する脅威も変化します。

生成AI時代のセキュリティを考える際には、「AIそのものからどう情報を守るか」だけでなく、AIを利用して効率化される既存のサイバー攻撃にどう備えるかという視点も必要です。

生成AI時代でも基本的なセキュリティ対策は重要

生成AIによってサイバー攻撃が効率化・巧妙化する可能性があるからといって、企業に求められるセキュリティ対策がすべて新しいものに変わるわけではありません。フィッシングやマルウェア、不正アクセスなど、生成AIが悪用される可能性のある攻撃の多くは、以前から存在する攻撃手法です。そのため、生成AI時代においても、基本的なセキュリティ対策を継続することが重要です。

基本的なセキュリティ対策の例

基本的な対策こそが重要の画像

特にフィッシングについては、生成AIによって自然な文章を作成しやすくなることで、「日本語が不自然だから怪しい」といった従来の見分け方だけでは判断が難しくなる可能性があります。送信元やURL、要求されている操作などを確認し、文章の自然さだけでメールの安全性を判断しないことが大切です。

生成AIによる脅威を特別なものとして切り離して考えるのではなく、従来のセキュリティ対策を着実に行ったうえで、生成AIの利用や悪用によって生じる新たなリスクへの対策を加えていくことが基本となります。

「生成AIは危険だから禁止」でよいのか

ここまで生成AIのさまざまなリスクを見てきました。それでは、企業は生成AIの利用を禁止すれば安全なのでしょうか。生成AIを利用しなければ回避できるリスクがあるのは確かです。しかし、利用禁止だけで問題が解決するとは限りません。

禁止だけでは「シャドーAI」につながる可能性も

組織が許可・把握していない生成AIサービスを従業員が業務に利用することは、「シャドーAI」と呼ばれます。例えば、会社では生成AIの利用を認めていなくても、従業員が個人アカウントで生成AIへアクセスし、業務資料を要約しているかもしれません。

この場合、企業側では、

  • 誰がどの生成AIを利用しているのか
  • どのような情報を入力したのか
  • 入力データがどのように扱われているのか
  • 生成された情報を何に利用したのか

を把握することが難しくなります。生成AIを禁止するか許可するかという二者択一ではなく、業務上の利用ニーズとリスクの両方を踏まえて管理することが重要です。

リスクを理解したうえで利用する

生成AIを安全に利用するためには、「生成AIは危険か、安全か」という単純な判断ではなく、利用方法を具体的に考える必要があります。

例えば、

  • どの生成AIサービスを利用するのか
  • どのような業務に利用するのか
  • 何を入力してよいのか
  • AIの出力を誰が確認するのか
  • 問題が起きた場合にどこへ報告するのか

といった点を明確にすることで、リスクを管理しながら生成AIを活用しやすくなります。

生成AIを安全に利用するために企業が行うべき5つの対策

生成AIのリスクは、特定のセキュリティ製品だけで解決できるものではありません。利用環境、ルール、教育などを組み合わせ、組織として取り組む必要があります。

  1. 利用する生成AIサービスを決める
    業務で利用を認める生成AIサービスを明確にします。サービスの機能だけでなく、入力データの保存・利用条件、アクセス管理、管理者向け機能なども確認して選定します。
  2. 入力してよい情報・禁止する情報を決める
    生成AIへ入力できる情報の範囲を明確にします。個人情報、顧客情報、社外秘資料、ソースコード、認証情報など、自社で実際に扱う情報を例示すると、従業員が判断しやすくなります。
  3. AIの出力を確認する
    生成AIから得た回答や生成物をそのまま利用せず、用途に応じて確認します。特に外部公開する情報、顧客への回答、重要な意思決定に利用する場合には、事実関係や権利関係などを人が確認するプロセスを設けます。
  4. AI利用ガイドラインを整備する
    利用可能なサービスや用途、入力禁止情報、生成物の確認方法、問題が発生した場合の報告先などをルールとして整理します。
  5. 利用状況を把握し、継続的に見直す
    生成AIのサービスや機能は変化し続けています。新しいサービスが利用されていないか、現在のルールが実態に合っているかを定期的に確認します。新たなリスクや利用方法が確認された場合には、ガイドラインや利用環境、従業員教育も見直していくことが重要です。

AI利用ガイドラインや組織としての管理体制については、「AIガバナンスとは?企業に必要な体制とAI利用ガイドラインの作り方」で詳しく紹介します。

生成AIのリスクに関するよくある質問

▼ ChatGPTなどに会社の情報を入力すると情報漏洩になりますか?
▼ 生成AIで作った文章や画像は自由に利用できますか?
▼ 会社で生成AIの利用を禁止すれば安全ですか?
▼ 生成AIによってサイバー攻撃は増えるのでしょうか?

まとめ

生成AIは、業務を効率化する便利なツールである一方、機密情報の漏洩、著作権・知的財産、誤情報など、利用方法に応じたリスクがあります。また、攻撃者が生成AIを利用し、フィッシングなど既存のサイバー攻撃を効率化する可能性にも注意が必要です。

重要なのは、生成AIを過度に恐れることではなく、どのような場面で、どのようなリスクが生じるのかを理解したうえで利用することです。企業では生成AIの利用を個々の従業員の判断だけに任せず、利用するサービス、入力できる情報、生成物の確認方法などを明確にする必要があります。さらに、利用状況を把握し、AIサービスや脅威の変化に応じてルールや対策を継続的に見直していくことが、安全な生成AI活用につながります。

LLMを利用したシステムでは、プロンプトインジェクションなど、LLMの特性を悪用したセキュリティリスクにも注意が必要です。LLMアプリケーションで注意すべき脅威と技術的な対策については、「LLMセキュリティとは?プロンプトインジェクションなどの脅威と対策」で詳しく解説しています。

公開日:2023年6月28日
更新日:2026年9月2日

編集責任:木下


BBSecでは

AIの利用拡大に伴い、企業を取り巻くIT環境やセキュリティリスクも変化しています。公開IT資産の把握、脆弱性の確認、セキュリティ対策の有効性検証など、自社の課題に応じた対策をご相談ください。


Security Serviceへのリンクバナー画像
BBsecコーポレートサイトへのリンクバナー画像
セキュリティ緊急対応のバナー画像

Security NEWS TOPに戻る
バックナンバー TOPに戻る

ゼロデイ脆弱性とは?最新事例と企業が取るべき対策を解説

Share
ゼロデイ脆弱性とは?最新事例と企業が取るべき対策を解説アイキャッチ画像

ゼロデイ脆弱性は、修正パッチが提供される前に悪用される極めて危険な脆弱性です。ChromeやFirefox、VPN機器など、企業で日常的に利用される製品でも継続的に確認されており、情報漏えいや業務停止につながるケースもあります。本記事では、ゼロデイ脆弱性の基本的な仕組みや実際の被害事例、従来対策が通用しにくい理由を整理しながら、企業に求められる現実的な対策について解説します。

ゼロデイ脆弱性が実際にどのように悪用されるのかについては、以下の記事で詳しく解説しています。
「世界で多発するゼロデイ攻撃とは?Apple・Google・Ciscoを襲った脆弱性の実態と対策」

本記事は2026年5月時点の情報をもとに作成しています。記載している脆弱性情報やCVE詳細は、公開後に内容が更新される場合があります。最新情報は各ベンダーおよびNVD・CISAの公式情報をご確認ください。

はじめに

ChromeやFirefoxなど、日常業務で広く使われている主要ブラウザでも、ゼロデイ脆弱性は繰り返し確認されています。ゼロデイ脆弱性とは、製品ベンダーや利用企業が十分な修正猶予を持てないまま悪用される、極めて危険度の高い脆弱性です。企業にとってゼロデイ脆弱性が厄介なのは、単に危険な脆弱性であるという点だけではありません。多くの場合、攻撃が確認された時点では、すでに悪用が始まっているか、修正パッチの適用が間に合っていない状態です。つまり、通常のパッチ管理や既知のマルウェア検知だけでは、防御が後手に回る可能性があります。 Webブラウザ、VPN機器、セキュリティ製品、業務アプリケーション、開発支援ツールなど、企業活動を支えるソフトウェアの多くは、常に外部との接点を持っています。そのため、ゼロデイ脆弱性は情報漏えい、業務停止、信用毀損、取引先への影響といったビジネスリスクに直結します。まず押さえたいのは、ゼロデイ脆弱性を悪用した攻撃に対し、完全に避けるのではなく、発生を前提に、侵入されにくく、侵入されても早期に検知し、被害を抑え込める体制を整えることです。

ゼロデイ脆弱性とは何か

ゼロデイ脆弱性とは、製品ベンダーや利用者がまだ十分に把握していない、または修正パッチが提供されていない脆弱性を指します。「ゼロデイ」という言葉は、攻撃者に悪用される可能性があるにもかかわらず、防御側に残された対応猶予が実質的にゼロ日であることに由来します。ここで整理しておきたいのが、「脆弱性」と「攻撃」は同じものではないという点です。脆弱性は、ソフトウェアやシステムに存在するセキュリティ上の欠陥です。一方で、ゼロデイ攻撃は、その未知または未修正の欠陥を悪用して、情報の窃取、権限昇格、不正コード実行、システム侵入などを行う攻撃行為を指します。NIST(米国立標準技術研究所)では、ゼロデイ攻撃を「これまで知られていなかったハードウェア、ファームウェア、ソフトウェアの脆弱性を悪用する攻撃」と定義しています。

たとえば、あるブラウザに不正なHTMLページを処理した際に任意のコード実行につながる欠陥があったとします。その欠陥自体がゼロデイ脆弱性であり、攻撃者が細工したWebページへ利用者を誘導して実際に悪用すれば、それがゼロデイ攻撃になります。CVEはこうした脆弱性を識別するための共通番号であり、NVD(米国国立脆弱性データベース)ではCVEプログラムについて、「特定のコードベースで確認された脆弱性を参照するための辞書、または用語集のような仕組みだ」と説明しています。

なぜゼロデイ脆弱性は危険なのか

ゼロデイ脆弱性が危険視される最大の理由は、修正パッチが存在しない、または広く適用される前に攻撃が始まることです。一般的な脆弱性対応では、ベンダーが脆弱性情報を公開し、修正パッチを提供し、企業が影響範囲を確認して適用するという流れになります。しかしゼロデイの場合、この順番が崩れます。攻撃者が先に脆弱性を把握し、攻撃に利用してから、ベンダーや利用者が気づくことがあるためです。もう一つの問題は、従来型のシグネチャ検知が効きにくいことです。シグネチャ型のセキュリティ対策は、既知のマルウェアや既知の攻撃パターンを検出するうえでは有効です。しかし、まだ十分に解析されていない攻撃コードや、新しい悪用手法に対しては、検知が遅れる可能性があります。NISTの関連文献でも、「ゼロデイ攻撃は未知の脆弱性を悪用するため従来のシグネチャ型検知では事前に攻撃シグネチャを用意できず有効性に限界がある*1」とされています。

ゼロデイ攻撃は、標的型攻撃にも使われやすい傾向があります。攻撃者にとって、未修正の脆弱性は価値の高い侵入口です。特に、ブラウザ、VPN、ファイアウォール、メールサーバ、リモートアクセス製品、エンドポイント管理製品などは、企業ネットワークの入口や重要な業務環境とつながっているため、攻撃が成功した場合の影響が大きくなります。 ビジネス面では、ゼロデイ脆弱性の悪用は情報漏えい、業務停止、顧客対応コストの増加、監督官庁や取引先への報告、ブランド信用の低下などに発展します。攻撃の起点が一台の端末や一つのWebアクセスであっても、その後に認証情報の窃取、横展開、機密情報の持ち出しが行われれば、被害は組織全体へ拡大します。

実際の被害事例

Google Chromeで相次いだゼロデイ脆弱性

ゼロデイ脆弱性の代表的な事例として、Google Chromeの脆弱性が挙げられます。Chromeは多くの企業で標準ブラウザとして利用されており、Webメール、SaaS、業務システム、クラウド管理画面などへのアクセスにも使われています。そのため、Chromeのゼロデイ脆弱性は、単なる個人利用者向けブラウザの問題ではなく、企業の業務端末リスクとして捉える必要があります。

2025年には、Chromeで悪用が確認されたゼロデイ脆弱性が複数回修正されました。BleepingComputerでは、2025年から2026年にかけてChromeは複数のゼロデイ脆弱性を修正したと報じています*2。2026年2月には、CVE-2026-2441が修正されました。NVDによれば、この脆弱性はChromeのCSSにおけるUse After Free(解放済メモリの再利用)の問題であり、 Google Chrome 145.0.7632.75より前のバージョンでは、細工されたHTMLページを介してリモート攻撃者がサンドボックス内で任意のコードを実行できる可能性がありました。GoogleのChrome Releasesでも、この脆弱性について「実際に悪用が確認されている」旨が記載されています。2026年3月には、CVE-2026-3909とCVE-2026-3910が修正されました。CVE-2026-3909は「Skia(Chromeが使用するグラフィック処理ライブラリ)における境界外の書き込み」で、細工されたHTMLページを介して境界外メモリアクセスにつながる可能性があります。CVE-2026-3910は「V8(ChromeのJavaScript実行エンジン)における不適切な実装」で、細工されたHTMLページを介してサンドボックス内で任意のコード実行が可能となるおそれがありました。GoogleはCVE-2026-3910について、「実際に悪用が確認されている」と公表しています。また、2026年3月末にはCVE-2026-5281も修正されています。NVDによれば、これはChromeのDawnにおける解放済メモリの再利用の脆弱性で、レンダラープロセスが侵害された状態で、細工されたHTMLページを通じて任意のコード実行につながる可能性があるものです。Googleはこの脆弱性についても、「実際に悪用が確認されている」と公表しています。

これらの事例が示しているのは、Webブラウザが単なる閲覧ツールではなく、企業ネットワークへの入口になり得るということです。利用者が業務中にWebサイトを閲覧する、SaaSへアクセスする、メール内のリンクを開くといった日常的な操作が、ゼロデイ攻撃のきっかけになる可能性があります。

OpenAI Codexに関するサンドボックス迂回の事例

近年は、開発支援ツールやAI関連ツールもゼロデイリスクの対象になっています。Zero Day Initiativeは2026年4月、OpenAI Codexに関するZDI-26-305を公開しました*3。この脆弱性は、影響を受けるOpenAI Codex環境においてサンドボックスを迂回できる可能性があるものとされ、攻撃には、「標的ユーザーが悪意あるJavaScriptを含むリポジトリをCodexで処理する必要がある」と説明されています。OpenAI Codex CLIでは2025年にも、サンドボックス設定ロジックの問題により、意図したワークスペース境界を迂回し、Codexプロセスが権限を持つ範囲で任意のファイル書き込みやコマンド実行につながる可能性がある脆弱性が、GitHub Security Advisoryで公開されています*4。この問題はCodex CLI 0.39.0で修正され、利用者には更新が推奨されています。

この事例から分かるのは、ゼロデイ脆弱性がOSやブラウザだけの問題ではないということです。開発者が利用するCLIツール、AIエージェント、コード生成支援ツール、CI/CD環境も、企業の重要な攻撃面になりつつあります。特に、ソースコード、認証情報、クラウド設定、APIキーにアクセスする可能性があるツールでは、サンドボックスや権限管理を過信しない運用が必要です。

ゼロデイ攻撃の仕組み

ゼロデイ攻撃の流れ概要図

※ゼロデイ攻撃では、脆弱性公開前や修正前に攻撃が始まるため、従来型のシグネチャ検知だけでは防御が難しい場合があります。

ゼロデイ攻撃は、脆弱性の発見から攻撃実行までが非常に速い場合があります。攻撃者は、ソフトウェアの不具合を独自に発見することもあれば、脆弱性情報が闇市場や限定的なコミュニティで売買されることもあります。その後、攻撃者はその脆弱性を悪用するエクスプロイトコードを作成し、標的組織に対して攻撃を実行します。まず、未公開または未修正の脆弱性が発見されるところから始まります。次に、その脆弱性を悪用するための攻撃コードが作成されます。ブラウザの脆弱性であれば、細工されたHTMLページやJavaScriptが使われることがあります。VPNや外部公開サーバの脆弱性であれば、インターネット越しに直接攻撃が行われることもあります。攻撃が成功すると、攻撃者は端末やサーバへ侵入し、認証情報の取得、権限昇格、内部ネットワークへの横展開を試みます。その後、機密情報の収集、データの持ち出し、ランサムウェアの展開、バックドア設置などへ進む可能性があります。

ゼロデイ攻撃の基本的な仕組みについては、以下の記事でも詳しく解説しています。
「世界で多発するゼロデイ攻撃とは?Apple・Google・Ciscoを襲った脆弱性の実態と対策」

従来対策が通用しない理由

ゼロデイ脆弱性への対応で難しいのは、従来のセキュリティ対策が必ずしも十分に機能しないことです。もちろん、ウイルス対策ソフト、ファイアウォール、パッチ管理、メールセキュリティ、URLフィルタリングといった対策は今でも重要です。しかし、ゼロデイ攻撃では、これらをすり抜ける可能性があります。シグネチャ型対策は、既知の攻撃には強い一方で、未知の攻撃には限界があります。攻撃コードが新しく、まだ検体や攻撃パターンが共有されていない場合、検知ルールが存在しないことがあります。さらに、攻撃者は正規のWeb通信、正規のプロセス、正規の認証情報を利用して侵入後の活動を行うため、外形上は通常の業務通信に見えることもあります。また、境界防御だけに依存した対策では対応が難しいケースも増えています。クラウドサービスやリモートワークの拡大により、従来の「社内は安全」という前提だけでは、ゼロデイ攻撃のような未知の脅威への対応が難しくなっています。ゼロデイ攻撃では、社内端末、クラウドアカウント、開発端末、外部公開資産のどこからでも侵入口が生まれる可能性があります。

ゼロトラストの考え方を含め、従来型セキュリティ対策の課題については、こちらの記事でも詳しく解説しています。
「ゼロトラストセキュリティ -今、必須のセキュリティモデルとそのポイント-」

ゼロデイ脆弱性への対策

ゼロデイ脆弱性への対策では、未知の攻撃を完全に防ぐことだけでなく、侵入後の被害を最小限に抑えるアプローチが重要です。ゼロトラストに基づく権限管理や多要素認証に加え、EDRやXDRによる侵入後の検知、ASMによる攻撃面の把握、SOCによる継続監視などを組み合わせた多層的な対策が求められます。

ゼロデイ攻撃対策を支援するBBSecのアプローチ

ゼロデイ攻撃へ備えるには「脆弱性情報を知ること」だけでなく、「自社がどの製品を利用しているのか」「どこが外部公開されているのか」を知ることで自社環境への影響を迅速に把握し、継続的に監視・対応できる体制を持つことが重要になります。

ブロードバンドセキュリティ(BBSec)では、EDR-MSSによる侵入後の検知・対応、G-MDRによる高度な脅威分析、ASMによる攻撃面の可視化を通じて、企業のゼロデイ対策を支援しています。ゼロデイ脆弱性への備えを強化したい方は、以下のサービスページもあわせてご覧ください。

ASM(アタックサーフェス管理)の考え方や、攻撃面を継続的に把握する重要性については、こちらの記事でも詳しく解説しています。
「脆弱性管理とIT資産管理 -サイバー攻撃から組織を守る取り組み-」

まとめ

ゼロデイ脆弱性は、主要ブラウザやVPN機器、業務ソフトウェアなど、企業が利用するさまざまな環境で発生する可能性があります。ゼロデイ攻撃による被害を抑えるためには、パッチ管理だけでなく、ゼロトラストに基づく権限管理、EDRやXDRによる侵入後の検知、ASMによる攻撃面の把握、SOCによる継続監視などを組み合わせた多層的な対策が求められます。

【参考情報】


ウェビナー開催のお知らせ

  • 2026年6月3日(水)14:00~15:00「金融機関の対応事例に学ぶPQC移行の進め方と実務ポイント」
  • 2026年6月10日(水)14:00~14:30「Webサイトの見えない脅威を可視化する 外部タグ・サードパーティースクリプトの監視対策」
  • 最新情報はこちら


    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。

    サービスに関する疑問や質問はこちらからお気軽にお問合せください。


    Security Serviceへのリンクバナー画像
    BBSecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像

    編集責任:木下

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る

    Claude Code流出問題の全体像 ―事件からわかるAI開発リスクとサプライチェーンリスク―

    Share
    「Claude Code流出問題の全体像 ―事件からわかるAI開発リスクとサプライチェーンリスク―」アイキャッチ画像

    はじめに

    「Claude Code」で起きたソースコード流出問題の経緯、なぜnpm公開物から内部ソースへ到達できたのか、何が漏れ、何が漏れていないのかを整理します。またソースコード流出によって浮き彫りになるAI開発リスクとソフトウェア供給網のリスクについても解説します。

    Claude Codeソースコード流出の概要

    「Claude Code」はAnthropic社が提供する公式のコーディング支援ツールです。Anthropicが公開している「Claude Code Doc」の中でも、Claude Codeはコードベース理解、ファイル編集、コマンド実行、各種開発ツール連携を行う製品として説明されています。

    Claude Code流出は、単なる「話題のAIニュース」では終わりません。今回、ターミナルやIDE(統合開発環境)からコード編集、コマンド実行、検索、Git操作まで担う実運用の開発基盤の中核にあたる実装の一部が、npm配布物に含まれたソースマップ(source map)を起点に外部から参照可能な状態になっていたことがわかりました。本事件はAIエージェント時代のソフトウェアサプライチェーン問題として捉える必要があります。

    流出の発端と技術的な経路(source map問題)

    本事件で最初に押さえるべきなのは、「Claude本体のモデル重みが漏れた」のではなく、「Claude Codeという周辺プロダクトのソースコードが到達可能になった」という点です。事件の発端となったのは、Chaofan Shou氏(@Fried_rice)によるXの投稿です。2026年3月31日、Chaofan Shou氏は「Claude code source code has been leaked via a map file in their npm registry」(訳:Claude Codeのソースコードが、npmレジストリ内のmapファイルを通じて流出した)と投稿しており、少なくとも現時点で公開されている初動情報の起点は、この発見報告にあると考えられます。

    その後に作成されたいくつかの公開GitHubリポジトリでは、漏洩経路について「npmパッケージに含まれたソースマップが、難読化前のTypeScriptソースを指しており、その参照先からsrc一式を取得できた」と説明しています。GitHubリポジトリ自体はAnthropicの公開情報ではないため、そこに書かれた全内容を鵜呑みにするべきではありませんが、少なくとも複数の公開Claude Artifacts(アーティファクト)が同じ経路を示していること、そして後述するAnthropic公式のGitHub上のIssueでも「流出またはデコンパイルされたClaude Codeのソースコード」を前提に議論が進んでいることから、ソースマップ起点として内部実装が可視化されたという大筋は相当に確度の高い情報だと言えます。さらに公開リポジトリのREADMEでは、「約1,900ファイル、51万行超のTypeScriptコードが露出した」と説明しています。

    流出した内容と影響範囲

    本事件が注目を集めた理由は、Claude Codeが単なるCLIラッパーではなく、幅広い機能群を内包したAI開発支援基盤であるためです。Anthropicの公開リポジトリと公式リリースノートを見るだけでも、Claude CodeにはIDE連携、MCP、プラグイン、履歴再開、権限管理、Web検索、各種設定や運用補助機能が継続的に追加されていることがわかります。また公開GitHubスナップショットREADMEでも、ツールシステム、コマンド群、IDEブリッジ、マルチエージェント協調、スキル、プラグイン、メモリやタスク管理など、多層的な構造が記述されています。

    つまり今回のClaude Code流出問題は、AIコーディング支援の表面だけでなく、その実装思想や運用機能の一端まで外から読める状態になったという意味を持ちます。

    何が漏れ、何が漏れていないのか

    Anthropic公式情報でも、Claude Codeの内部実装に関するソースコード断片や構成が公開状態になったことは裏づけられています。Anthropic公式GitHubのIssueでも、流出コードを前提とした解析が行われていました。

    Anthropicの公式GitHubリポジトリに2026年3月31日付で立てられたIssueでは、「source code isn’t publicly available, so this analysis is based on the leaked/decompiled Claude Code source」(訳:ソースコードは公開されていないため、本分析は流出またはデコンパイルされたClaude Codeのソースコードに基づく)と投稿され、Xでの発見報告とGitHub上の流出スナップショットを参照していたということがわかります。つまり、少なくともコミュニティ側では流出コードを参照した解析が現実に行われ、それがAnthropicの管理下のIssue空間にも持ち込まれていたということです。

    一方で、複数の報道機関によれば、「Anthropicが今回の件を「人為的ミス」によるものと認め、顧客データや認証情報、Claudeモデルそのものの重みは流出していない」と説明したとしていますが、この点は一次ソースではなく報道ベースの情報として慎重に扱う必要があります。

    なぜ深刻なのか:AIエージェント時代のリスク

    それでも、このClaude Codeソースコード流出が深刻なのは、顧客データ漏洩の有無だけでは影響範囲が測れないからです。AIエージェント製品では、モデル重みそのものに価値があるのはもちろんですが、実際の使い勝手や競争力は、その周囲にあるハーネス、権限管理、ツール呼び出し、コンテキスト処理、UI、IDE統合、再開機能、運用設計によって大きく左右されます。公開スナップショットにあるディレクトリ構成やコマンド一覧、サービス層の説明を見ると、Claude Codeがかなり成熟した「製品化されたAIエージェント」であることが読み取れます。競合や研究者にとって、こうした実装知見が外から見える状態になることの意味は小さくありません。

    特に重要なのは、Claude Codeが単にコードを生成するAIだけではなく、ローカル環境や周辺ツールに触れながら作業を進めるAIエージェントとして設計されている点です。漏洩したとされる公開スナップショットにも、Bash実行、ファイル読み書き、Web取得、Web検索、MCP、LSP、タスク作成、スケジュール実行などの機能が列挙されています。これは、今後のAIセキュリティを考える際に、モデル単体の安全性だけでは足りず、エージェントの実行基盤や配布パッケージの安全性まで視野に入れなければならないことを示しています。

    AIエージェント時代の新課題、Non Human Identity(NHI)のセキュリティ課題と今後のAIコーディングに求められる実践的な視点を解説した記事はこちら。ぜひあわせてご覧ください。
    AIコーディング入門 第5回:NHI(Non‑Human Identity)とAIエージェントのセキュリティ課題

    ビルド・配布プロセスにおける問題の本質

    さらに今回の一件は、ソースコード流出そのものだけでなく、公開物のビルド管理や配布管理の問題としても重要です。ソースマップ(source map)は本来、デバッグや解析のためには有用ですが、公開パッケージに不用意に含めれば、難読化やバンドルの前提を崩し、実装内部への入口になります。もしREADME記載どおり、ソースマップが外部ストレージ上の元ソース一式を指していたのであれば、問題は単なる「mapファイル混入」で終わりません。公開パッケージ、参照先URL、ストレージ公開設定、リリース工程のチェック体制まで含めた、供給網全体の設計ミスになります。ここにClaude Codeソースコード流出問題の本質があります。

    「影響は限定的」という見方の限界

    本事件をめぐる議論では、「どうせAIのコードはすぐ変わるから被害は限定的だ」という見方もあります。これは半分正しいです。たしかにプロダクトコードは日々更新されます。それでも、ある時点の設計方針、抽象化の仕方、権限制御、内部機能のつながり、未公開機能の痕跡は、競争戦略や攻撃面の理解に十分な価値を持ちます。現に公開スナップショットには、マルチエージェント協調、チーム作成、スキル実行、メモリ同期、リモートトリガーといった、単純なCLI以上の発想が読み取れる記述が含まれています。AI開発企業にとって、こうしたプロダクト実装の漏えいは、顧客情報漏えいとは別種の経営リスクです。

    企業が取るべき対応と実務上の教訓

    企業の情報セキュリティ担当者や開発責任者にとって、本事件から学ぶべき教訓は明確です。第一に、公開パッケージの中身を「本番ビルド成果物」だけでなく、「付随ファイル」まで含めて検査する必要があります。第二に、ソースマップやデバッグアーティファクトの扱いを、開発者の善意や慣習に任せてはいけません。第三に、クラウドストレージの参照先や署名URL、生成物の格納ルールを、CI/CDと一体で見直すべきです。第四に、AIエージェント製品では、モデルAPIの保護だけでなく、CLI、IDE拡張、SDK、プラグイン、MCP連携のような周辺面を含めてセキュリティレビューをかける必要があります。Claude Codeの公式リリースノートを見るだけでも、製品は短い周期で多機能化しており、変化の速さ自体がリスク管理を難しくしています。

    もう一つ重要なのは、事故後の透明性です。現時点で確認できるAnthropic公式情報は、Claude Codeの製品説明やリリースノートが中心で、今回のソースコード流出事件についての障害報告書は見当たりません。そのため、実務的には「発生原因」「影響範囲」「再発防止策」を公式にどこまで明文化するかが、今後の信頼回復を左右します。AI安全性を強く掲げる企業であればなおさら、モデル安全だけではなく、配布と運用の安全性でも説明責任が問われます。今回のClaude Codeのソースコード流出は、その現実を突きつけた出来事となります。

    まとめ

    Claude Codeソースコード流出事件はAI本体が破られた事件ではありませんが、AI製品はモデルだけ守ればよい、という幻想は崩されました。AIコーディング支援、AIエージェント、開発者向けCLI、IDE統合、MCP、プラグイン基盤といった要素が一体化した時代において、情報漏洩リスクはモデル重みだけでなく、配布物、周辺コード、実行制御、設定、公開ストレージにもまたがります。Claude Code流出事件を単なる興味本位の話題で終わらせるのではなく、現代のソフトウェアサプライチェーンの課題とAIプロダクト運用の脆さを示す事例として読むべきでしょう。

    参考文献


    サイバーインシデント緊急対応

    セキュリティインシデントの再発防止や体制強化を確実に行うには、専門家の支援を受けることも有効です。BBSecでは緊急対応支援サービスをご提供しています。突然の大規模攻撃や情報漏洩の懸念等、緊急事態もしくはその可能性が発生した場合は、BBSecにご相談ください。セキュリティのスペシャリストが、御社システムの状況把握、防御、そして事後対策をトータルにサポートさせていただきます。

    サイバーセキュリティ緊急対応電話受付ボタン
    SQAT緊急対応バナー

    ウェビナー開催のお知らせ

  • 2026年4月10日(水)14:00~15:00
    「ランサムウェア時代のIT-BCP入門~サイバー攻撃によるシステム停止に備える実践的な策定ステップ~」
  • 2026年4月15日(水)14:00~15:00
    「AI時代のサイバー脅威最前線 ― IPA『情報セキュリティ10大脅威2026』から学ぶ防御戦略 ―」
  • 2026年4月22日(水)14:00~15:00
    「Swift CSCF v2026変更点解説セミナー ― Control 2.4 (Back Office Data Flow Security)の必須化とCustomer client connectorへの要件適用拡大 ―」
  • 最新情報はこちら

    編集責任:木下

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る


    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像

    【続】プログラミング言語の脆弱性対策を考える:2024

    Share

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る

    本記事は2020年9月公開の記事「プログラミング言語の脆弱性対策を考える」の続編となります。前回の記事をまだご覧になっていない方はぜひ、この機会にご一読ください。

    いま「C言語の脆弱性対策について簡単に教えて」と生成AIに尋ねてみると、弊社SQAT.jpの記事が引用記事として出てきます。前回の記事を公開してからそろそろ5年ぐらいの月日がたつということで、今回は2024年版のプログラミング言語をめぐる状況と、ちょっとした脆弱性対策に関する情報をご紹介します。

    2020年から2024年で変わったこと

    生成AIの汎用化

    2024年の夏、最初の会社の同期20人で5年ぶりに集まりました。その中でコードを業務で書いているメンバーが同じテーブルに集まったとき、最初に出た話題は「生成AIって何使っている?」でした。所属する会社も違い、使っている言語はバラバラ、コードを書く目的や環境、書く頻度もまちまち、利用する生成AIもバラバラなのですが、全員が生成AIを使っていることに少々驚きました。この友人が全員口をそろえて生成AIについて評価していた点は、コードを作るときに最初にかかる時間と手間が圧倒的に削減されるという点です。

    これまでは「こういうことを処理するコードを作ろう」と思うと、わかるところは先に大まかに書いたうえで、わからないところや怪しい部分はプログラミング言語のリファレンスをひっくり返し、Webで検索し、情報を集めたうえでコードスニペットを起こし、実際のコードとして動かし…という順で作業していました。一方、生成AIを使う場合はこういったことをやろうと思った時点で足りない部分を生成AIに質問すればスニペットが返ってくる(場合によってはコードブロックが返ってくる)ので、コードづくりの前半部分の悪戦苦闘がかなり軽減されます。

    ところが、短所もいくつかあります。まず生成AIサービスが免責事項として常に掲げるように、必ずしも正しい答えが返ってくるわけではない点には理解が必要とされるところです。
    引用元をよくみると、古いバージョンの言語に基づいたQ&Aサイトの回答を参照していることもよくありますし、プロンプトに対して素直に答えるという性質上、 プロンプトに入れていない前段処理に対して不整合が発生する内容のスニペットが回答される、といったことはわりと日常茶飯事です。

    学習データやプロンプトの入れ方次第では返答されるコードスニペット自体にエラーや脆弱性が含まれる場合もあります。プロンプトに関係のない前後の処理との不整合でエラーが発生したり、他のコードブロックとの兼ね合いでエラーが発生したり、そのエラーが結局脆弱性につながるものだったりという可能性は十分にあります。

    また、一般的な商用サービスの生成AIでは入力が学習データに使用されます。つまり自身が入力したデータが流用されるという前提でサービスを利用することになります。このため、自社の知的所有権への配慮や、個人情報や機微情報、場合によっては非公開情報全般への配慮が必要となる点にも注意が必要です。エンタープライズサービスとしてこういったことを回避するサービスもありますが、それ相応の費用が必要となります。

    ただ、自前で大規模言語モデル(LLM:Large language Models)をつくるよりも人件費や設備費用などが圧倒的に安価で手軽であるという点では規模の経済性を実感するところはあります。そういった観点から、将来、どの企業でも自社でAIを全く使わないという選択肢はあまりないかと思います。プログラミングに限らずですが、AIとほどよく付き合って効率的に仕事を進めつつ、エラーや脆弱性をきちんと見逃さない仕組みをもって問題を回避していく、
    そういう仕事法になっていくかもしれません。

    ノーコードとローコード

    以前からどちらも存在はしますが、2020年代に入ってからノーコードやローコードといった選択肢が増えてきています。

    ノーコード
    プログラミングの知識がなくてもアプリケーションを開発できる手法です。専門的なコードを書くことなく、ドラッグ&ドロップなどのビジュアル操作で簡単にアプリケーション開発ができます。ITの専門スキルがない人でもアイディアをデジタル化できる点が特徴です。小規模なプロジェクトの開発に適しています。
    ローコード
    最小限のプログラミングでアプリケーションを開発する手法です。基本はビジュアル操作ですが、必要に応じて一部コードを書きます。柔軟性とスピードのバランスが特徴です。

    最近だとAWSがローコード構築サービスをリリースした*5のが一例となるでしょう。ノーコードやローコードを使用するメリットとしては、各業務の定義やフロー、プロセスが明確であれば定型業務やバックヤード業務の一部を合理化できることです。効率化することで時間短縮ができ、別のより生産性の高い仕事に人を割り振れるといった副次的な効果も期待できます。ただ、業務の内容が不明確な場合や、業務が日々恣意しい的な運用をされている場合には大きなメリットを得ることは難しいかもしれません。

    ここで脆弱性の話です。実際ノーコードといっても実は補助的にパラメータの入力が必要な場合があります。また、外部とのAPI連携をノーコードの画面から実行するといった構成のノーコード機能を持っているSaaS(Software as a Service)もあります。そして誤ったパラメータの入力で入出力の脆弱性を発生させる可能性がある、APIとのやりとりの詳細はユーザでは見えない(SaaSのサポート担当者は見えるケースが多いようです)ため、誤った接続先に接続していた場合や連携しているAPIになんらかの脆弱性があった場合に切り分けが煩雑になるといったところは懸念材料として頭の片隅に置いたほうが良いでしょう。

    ノーコードもローコードも非常に便利です。そのノーコードフロー自体の仕組みやパラメータの動きや連携先のAPIの信頼性などを理解したうえで使えば、劇的に効率化が図れるため、API同様にうまく付き合っていくということが重要になるのではないでしょうか。

    プログラミング言語

    専門家たちがどのプログラミング言語を使っているかというデータが、毎年Stack Overflowから発表されます。2020年と2024年でどの程度変わったか、比較をしてみましょう。

    言語2024年2020年
    JavaScript64.60%69.70%
    HTML/CSS54.10%62.40%
    Python53%41.60%
    SQL47%56.90%
    TypeScript43.40%28.30%
    Bash/Shell34.20%34.80%
    Java30.00%38.40%
    C#28.80%32.30%
    C++20%20.50%
    C18.70%18.20%
    PHP16.90%25.80%
    PowerShell14.40%注 1)
    Go14.00%9.40%
    Rust11.70%4.80%
    Kotlin9.90%8.00%
    Dart6.00%3.70%
    Ruby5.80%7.50%
    Lua5.30%ランク外
    Swift4.90%6.10%
    Visual Basic4.10%ランク外

    出典:Stack Overflow Developer Survey2020年版/2024年版より弊社作成
    2020年版:https://survey.stackoverflow.co/2020#technology-programming-scripting-and-markup-languages-professional-developers
    2024年版:https://survey.stackoverflow.co/2024/technology#most-popular-technologies-language-prof

    ここからは2020年と2024年の脆弱性診断結果の比較で目についた点を深堀りしてみたいと思います。

    プログラミング言語と適材適所

    前述した「専門家たちはどのプログラミング言語を使っているか」というデータの表からもわかるとおり、このWeb大全盛の時代に「PHPを使う」と回答したエンジニアの比率は下がっています。また、BBSecのシステム脆弱性診断結果からもPHPの脆弱性報告件数が減っていることがわかります。米国の脆弱性情報データベースNVDによるとPHPの脆弱性自体の数が減っている*2(2019年が34件に対して2023年は6件)ということも関連があるかと思いますが、診断結果のエビデンスで見かける機会も減っています。

    脆弱性の存在するバージョンの使用の検出内訳

    (上図:2020年上半期、下図:2024年上半期)

    2020年上半期
    2024年上半期

    当社が発行するセキュリティレポートでは、半期(6か月)毎にBBsec脆弱性診断の結果を集計・分析。その傾向を探るとともに、セキュリティに関する国内外の動向を分かりやすくお伝えしています。
    最新号のダウンロードはこちら。

    GitHubでのプルリクエスト(機能追加や改修など、作業内容をレビュー・マージ担当者やその他関係者に通知する機能)の数も2013年をピークにここ数年は5%台半ばでの微増微減を繰り返している状態になっています*3。けれど、現在稼働しているWebサイトのうち75.8%がPHPを使用している*4といわれていることも事実です。また、CMSの代名詞ともいえるWordPressはPHPで開発されているのですが、WordPress 注 2)が全Webサイトの実に43.4%で使用されています*5。つまり、WebサイトのうちPHPを使っているサイトは76%ぐらいあるけれど、半分以上はWordPressとその派生のパッケージが市場シェアを支えているという構造になっています。そのため、実際に動いているサイトのほとんどがPHPであることは間違いないですが、その大半はWordPressで、それ以外のサイトは少数派というのが現状です。

    PHPの強みはWeb開発に特化した、可読性が高く学習しやすい言語である点です。小中規模でセキュリティ要件があまり高くないWebサービスやCMSであればPHPで開発するのが一番便利であり、保守性も高いでしょう。一方で、大量のデータの処理・分析が必要なケース、セキュリティへの配慮からバックエンドとフロントエンドを切り離して開発・運用する必要があるケース、パフォーマンスが重視されるケース、マルチデバイス対応が必要なケースなど、PHPでは要件を満たさないケースが出てきていることも事実です。

    PHPの市場をけん引しているCMSでも、「ヘッドレスCMS」と呼ばれるタイプなど、これまでとは異なるCMSへの需要が伸びているといわれています。今後は、旧来のCMSや中小規模のWebサイトはそのままPHP、マルチデバイスやパフォーマンス、バックエンドへの特殊な処理要件やセキュリティ要件などがある場合は別の言語といった形で、さらにすみわけが進んでいくのかもしれません。そういった意味でも “WebならPHP” という時代から、”適材適所でWeb開発も言語を選ぶ” 時代になってきたといえるでしょう。

    2024年のC言語

    C言語系統で開発というと「2024年でもまだ?」という声が上がりそうなところですが、実際C言語系統はOSまわりでいまだに健在です 注 3)。また古いプログラム(コード、ドライバなど)で互換性が保証される場合はそのまま利用されているケースもあるといわれています。つまりは、C言語系統の言語が抱える根本的な問題、メモリハンドリング(メモリの使い方の変化に伴うメモリエラーを適切に処理する能力)関連の問題もいまだにそこかしこで健在しています。この問題が特に注目を集めたのが、昨今のCrowdStrike Falconのエラーを含んだパターンファイルの配布によるBSOD(Blue Screen of Death)の大量発生です。

    関連情報

    弊社では、10月16日(水)に開催予定のウェビナーのオープニングセッションとして、「10分でわかるCrowdStrike障害」を取り扱います。ご関心がおありでしたらぜひお申込みください。詳細はこちら。


    この問題で再び脚光を(よくない形で)浴びたのがC系統言語の問題です。NULLポインタ参照は、現代の脆弱性の考え方からいうと非常に危険な脆弱性を発生させる原因の一つになります。これらすべての原因は以前にもご紹介した通り、メモリハンドリングを行う言語であるがゆえに発生することです。メモリまわりの脆弱性(元をたどればバグ)の発生頻度を、プログラミング言語自体を変えることで抑えたいと思っている人は多数いて、その結果、よりメモリハンドリング関連の問題が少ないRustへの移行を行うという動きが出てきています。最初期の例としてはMozilla ServoのレンダリングエンジンがC++からRustに書き換えられたもの*6が挙げられるでしょう。Microsoftも、OSの一部をRustに書き換えることについて2022年~2023年に言及しています。

    最近ではGoogle AndroidがドライバのRustへの置き換えが順調である旨をブログで発表*7しています。また、DARPA(アメリカ国防高等研究計画局)ではC/C++をRustに置き換えるためのプログラム「TRACTOR」で大規模言語モデルを利用した置き換えを行うことを発表*8しています。TRACTORほど大規模ではなくても、CからRustへの移行ツールがGitHubコミュニティで活発に開発されています。もちろんRustへ移行すれば即座に完全にメモリハンドリングの問題から100%解放されるわけではありません。また、C言語系統のプログラムの置き換え先がRustしかないわけでもありません。ですが、現在進行しているRustへの置き換えはC言語しかなかった時代の最後にして最大の遺産であり、OS周りのC言語依存からの脱却への一歩となることでしょう。


    注:
    1) 2020年版はBash/Shell/PowerShellが1つにまとめられているため、PowerShell個別のデータはなし。
    2) WordPressはWordPress本体よりもそのプラグインの脆弱性が多く報告されています。また、WordPress専用の脆弱性・マルウェアスキャナはたくさんありますが、2024年9月にはWordPressのコミュニティへの投稿でスキャナ検出ができないマルウェアがあるといった旨の投稿があるなど、その市場シェアを狙った動きも伺えます。こうした動きについては最新の情報を追うなどし、対策の実施を検討されることをおすすめします。
     参考:https://wordpress.org/support/topic/new-malware-found-in-wordpress-installations-hidden-admin-users-redirects-and/#post-18010647
    3) Windows OSに限らず、多くのOSはC言語系統の言語をOSの開発に使用しています。Windowsの場合はCとC++が使用されています。ここにCrowdStrike FalconはC言語系統で書かれたセンサーとパターンファイルを使用してマルウェアや侵害行為の検出をしています。セキュリティ製品あるあるで、センサー自身がシステムブート時に読み込み必須なドライバとなっています。BSOD大量発生の件は、CrowdStrikeのQAプロセスが不十分だったことが大きな原因ではありますが、パターンファイルに不整合がありメモリの境界外読み取りエラーを発生させました。センサーはシステムブート時に読み込み必須なドライバとなっているため、Windows OS起動時にCrowdStrike Falconのセンサーを起動する必要がありましたが、問題のパターンファイルが境界外読み取りエラーを発生させたため、問題のパターンファイルがインストールされたすべてのWindowsマシンがブートできず、ブルースクリーンを表示するだけの箱/板になってしまう状況に陥りました。これが2024年7月にニュースになったインシデントの概要です。
     参考:https://www.crowdstrike.com/wp-content/uploads/2024/08/Channel-File-291-Incident-Root-Cause-Analysis-08.06.2024.pdf


    Security NEWS TOPに戻る
    バックナンバー TOPに戻る

    サイバーインシデント緊急対応

    サイバーセキュリティ緊急対応電話受付ボタン
    SQAT緊急対応バナー

    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像

    プログラミング言語の脆弱性対策を考える

    Share

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る

    プログラミング言語のセキュリティは、組織のシステム全体のセキュリティに大きな影響を与えます。「アプリケーションの脆弱性の半数はC/C++に起因する」という報告もあり、プログラミング言語における脆弱性の特徴を理解し、適切な対策を講じることは、いまや組織のセキュリティに不可欠な取り組みといえます。本記事では、プログラミング言語の最新動向、脆弱性が生まれる背景を解説します。

    プログラミング言語のトレンド

    言語 使用している
    開発者の比率
    JavaScript69.7%
    HTML/CSS 62.4%
    SQL 56.9%
    Python 41.6%
    Java 38.4%
    Bash/Shell/PowerShell 34.8%
    C# 32.3%
    TypeScript 28.3%
    PHP 25.8%
    C++20.5%
    C 18.2%
    Go 9.4%
    Kotlin8.0%
    言語 使用している
    開発者の比率
    Ruby7.5%
    VBA6.2%
    Swift6.1%
    R5.5%
    Assembly4.9%
    Rust4.8%
    Objective-C4.4%
    Scala3.9%
    Dart3.7%
    Perl3.3%
    Haskell1.8%
    Julia0.9%

    Stack Overflow Developer Survey 2020 より弊社作成
    https://insights.stackoverflow.com/survey/2020#technology-programming-scripting-and-markup-languages-professional-developers

    JavaScript、HTML/CSS、SQLなどが上位に並んでいますが、皆さんの予想どおりでしょうか?ちなみに冒頭で述べた、「脆弱性の半数」を生み出すとされるC/C++に関しては、昨今IoTデバイスなどの組込機器やデスクトップアプリケーション等に利用目的が収れんしてきているといわれ、その使用率は減少傾向にあります。また、リストには記載がありませんが、日本に限ってみると、COBOLなどのレガシーシステム向けの言語がいまだ根強いシェアを保っているのはご存じの方も多いことでしょう。

    なお、弊社での診断傾向としては、JavaScriptのほか、Pythonが目立っています。今後については、「オーバーヘッドが少なく、静的型付け言語である」という特徴をもつTypeScriptなどが、軽量さの望まれるサーバレス環境での需要につながるものとみられます。また、Android端末向けにKotlinの需要も高まると予測しています。以下、ご参考に、プログラミング言語と主な利用分野のマッピングを示します。

    図:主要プログラミング言語と現在利用されている代表的分野

    プログラミング言語の脆弱性 ― 言語ごとに異なる特徴を知る

    プログラミング言語の脆弱性を考える場合、特定の言語に固有のものと、言語間で共通のものを押さえておく必要があります。

    例えば、C/C++では、その脆弱性の7割がメモリハンドリングのミスに起因するといわれており、メモリ関連処理のロジックを正しく制御させ、ソースコード内に脆弱性を作りこまないようにすることが、重要なセキュリティ対策となります。そのほか、言語固有の脆弱性として代表的なものは、Javaでの「安全でない入力に対するデシリアライゼーション」の問題、JavaScriptでの「パストラバーサル」や「暗号」の問題、PHPでの「クロスサイトスクリプティング(XSS)」や「SQLインジェクション」などになります。

    なお、2000年代後半以降にリリース開始された比較的新しいプログラミング言語(Kotlin、Golang、Rustなど)については、上記とは若干が異なる観点からの注意が必要です。まず、こうした言語では、セキュアコーディングのための様々な関数やライブラリなどが用意され、セキュリティに関する手厚い対策が組み込まれているのですが、その一方で、セキュリティの機能が増えれば増えるほど関連ドキュメントが膨大になり、把握が追いつかないという課題が生じています。例えば、Kotlinの場合、Kotlin自体のドキュメンテーションではセキュリティ関連の記述はNULLの安全性に触れる程度なのですが、セキュアコーディングに取り組もうとすると、膨大なAndroid Developer Guideを参照する必要があります。また、相互運用性への配慮も必要です。例えばKotlinやGolangはJavaと一緒に利用するケースが多いため、こうした言語で開発を行う場合には、Java側の環境を考慮したうえでのセキュアコーディングが不可欠になり、それが開発の難易度を押し上げているという状況があります。

    プログラミング言語の脆弱性 ― 全言語に共通の特徴を知る

    続いては、すべての言語に共通する脆弱性です。これは大きく以下の3つに分類できます。

    情報漏洩
    ・表示する必要のない機微な情報(ユーザ名やIDなど)の露呈
    ・不要なシステム情報の公開
    入力検証の不備
    ・不正なパラメータの許容、XSS、SQLインジェクション
    ・HTTPヘッダ分割
    認可・認証関連の脆弱性
    ・オブジェクトやファイルなどへのアクセス認可の不備
    ・認証情報の保護機構や暗号化の不備

    脆弱性が発生する背景

    以上述べてきたような脆弱性は、なぜ発生するのでしょう。その背景には、開発現場における以下のような課題があると考えられます。

    ・プロジェクトベースで人員が変わることが多く、知識や経験の共有が行われることがまれ
    ・脆弱性やセキュアコーディングに対する意識、知識レベルがプログラマによって異なる
    ・ギリギリのスケジュールでプロジェクトが進むことが多く、知識や経験の共有まで手が回らない
    ・セキュリティへの対応が明示的な業務として遂行されるのではなく、プログラマやプロジェクトメンバー1人1人の善意に依存する面が強い

    具体例で説明しましょう。先ほど、PHPではXSSやSQLインジェクション等の脆弱性がよく見られると述べました。しかし、PHPでも、バージョン4以降であれば「htmlspecialcharacters」という関数を利用することでXSSの回避に必要な特殊文字のエスケープ処理ができます。SQLインジェクションについても、プレースホルダの利用による回避が可能です。このように、すでに対策が存在する場合であっても、プログラマ間で知識や経験の共有が行われていない場合、ソースコード診断やステージング環境でのWebアプリケーション脆弱性診断が実施されない限り、脆弱性は放置されることになります。また、「機微な情報の露呈」という問題については、個人情報保護などの法制度に対する知識が共有されておらず、そもそも課題として認識されていないという可能性があります。なお、知識共有のハードルは、セキュリティ機能が充実しているゆえに把握すべき情報量が膨大で、他の言語との互換性等まで含めた配慮が求められる最近のプログラミング言語では、さらに高いといえるでしょう。

    こうした課題を解決するには、プログラマ個人の知識・技術レベルを高めることはもちろんですが、それ以上に重要なのは、組織を挙げての体系的な取り組みであるといえます。

    先手を打った対処がカギ

    そこでぜひ取り入れたいのが、プログラミング言語に関わる脆弱性が生じていないかを、開発の初期段階から継続的に点検する取り組みです。これは「DevSecOps」とも呼ばれる考え方で、「開発(Dev)」・「運用(Ops)」に「セキュリティ(Sec)」の観点を組み込むことで、システムのセキュリティ強化を図るものです。開発プロジェクトは常に時間との闘いですが、だからといって脆弱性への対応を先送りしてはなりません。対処が事後になればなるほど、影響範囲が広がり、コストも肥大する恐れがあります。

    以前の記事でも解説しましたが、何よりも、初期段階からの取り組みが重要です。例えば、人員の流動が激しいプロジェクトベースの現場では、開発の早期からソースコード診断を含むテスト活動を実施し、脆弱性をコード単位で効率的に解消していくことによって、各段階で積み上げられた知識や経験を、後続の工程で活用することが可能になります。また、近年主流になっているアジャイル型の開発手法でもこれは有効で、短い開発サイクルが繰り返される中で早期に・こまめにテストや修正を行うようにすることで、セキュリティを強化できるのみならず、プロジェクト全体の工数も抑制できます。なお、短いサイクルでテストを回すには、SaaSタイプのソースコード診断サービスの利用を検討してもよいでしょう。

    先手を打って脆弱性に対処できれば、脆弱性の要因となっていた様々な課題に取り組む余裕も生まれます。結果として、セキュリティと開発効率をともに高められる好循環を実現できるのではないでしょうか。

    Security NEWS TOPに戻る
    バックナンバー TOPに戻る


    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像
    セキュリティトピックス動画申し込みページリンクへのバナー画像