クラウドセキュリティエンジニアブログ

ニューリジェンセキュリティのクラウドセキュリティエンジニアチームが AWSなどのクラウドセキュリティについて気になることや調べたことを書くブログ

脆弱性の向き合い方とAI・脅威情報を使用したセキュリティ対策

ニューリジェンセキュリティのコンサルタントの安田です。

2024年は、幾つかの挑戦を伴う年の幕開けとなりました。 世界は様々な苦難な出来事に見舞われ、これらの出来事は私たちの生活、社会、そして未来に深い影響を及ぼしています。また、2023年はサイバー攻撃の増加と社会情勢の不和が深刻な問題となっています。特にサイバー空間で繰り広げられる既知および未知の脆弱性への攻撃やランサムウェアによるサイバー攻撃は、個人のプライバシーから国家および経済の安全保障に至るまで幅広い範囲で影響を及ぼし、社会情勢の不和は人々の生活に不安をもたらし、社会の分断を引き起こしています。 これらの出来事を背景に、脆弱性への攻撃が直面する課題とその解決策について考察します。これらの課題を理解し適切な対策を講じることで、より安全で公正な社会を実現するための道筋を探りたいと思います。

1.脆弱性とは

まず初めに脆弱性への攻撃とは、ハードウェア、ファームウェア、またはソフトウェアに存在するセキュリティ上の欠陥を悪用する攻撃のことを指します。脆弱性は、プログラムの不具合や設計上のミスが原因で発生し、これをセキュリティホールとも呼びます。脆弱性が存在すると、不正アクセスの発生やマルウェアに感染する危険性があります。そのため、脆弱性が発見されるとソフトウェア開発ベンダー等が更新プログラムを作成して提供します。しかし、新たな脆弱性が次々と発見されるため、完全に脆弱性を無くすことは困難です。

また、脆弱性への攻撃には、個人情報を盗むヒューマンエラーに起因する人的脆弱性を狙ったものと、Microsoft WindowsやOfficeのような多くの人が利用しているソフトウェアの脆弱性を狙ったものがあります。近年では、世界的にユーザー数の多いモバイルデバイスOSとなるAndroid OSやiOS、さらに、脆弱性を攻撃しやすいネットワーク境界の製品やプロダクトも数多くの攻撃のターゲットになっています。

加えて、歴史を振り返ると、2010年1月12日にGoogleが公式ブログで公表した「Operation Aurora」*1から、組織・個人関係無く、ゼロデイ攻撃という状況に遭遇することを意識したサイバーセキュリティに対する事前防御と事後対応に備える必要がでてきました。ゼロデイ攻撃とは、NIST*2の用語では「以前は未知だったハードウェア、ファームウェア、またはソフトウェアの脆弱性を悪用する攻撃」と定義されており、未知の脆弱性を悪用した攻撃のことを指します。これらの脆弱性は、ソフトウェアベンダーがその存在を認識していない、または修正パッチがまだ提供されていない状態を指します。そのため、ゼロデイ攻撃は非常に危険であり、防御が困難です。

2. 脆弱性の悪用の状況

既知の脆弱性への攻撃およびゼロデイ攻撃への対策は、現代のサイバーセキュリティの中心的な課題の1つです。これは、攻撃者が新たな脆弱性を見つけ出し、それを悪用する能力が日々進化しているからです。また、モバイルサービスおよびクラウドサービスにおけるデジタルトランスフォーメーションの取り組みによりソフトウェアの複雑性が増すにつれて、新たな脆弱性が発見される可能性も高まります。

脆弱性が悪用されている状況については、米国CISAが2021年11月3日から運用している「Known Exploited Vulnerabilities Catalog:既知の悪用された脆弱性のカタログ」*3のデータによれば、2022年1月から2022年12月の期間において悪用が確認されている脆弱性は555件、その内ランサムウェアのキャンペーンとして悪用された脆弱性が110件とされています。同様に、2023年1月から2023年12月の期間において悪用が確認されている脆弱性は187件、その内ランサムウェアのキャンペーンとして悪用された脆弱性が34件とされています。

図1:CISA Known Exploited Vulnerabilities Catalog 2022年1月から2023年12月のデータを元に筆者が作成した既知の脆弱性登録件数(2024年1月15日時点)

2024年1月15日時点に登録されている1,064件の脆弱性を製品のベンダー(またはプロジェクト)ごとに分類すると、最も多いのはMicrosoft(276件)、他にはApple(71件)、Cisco(68件)、Adobe(67件)、Google(51件)、Oracle(33件)、Apache(31件)、VMware(18件)、D-Link(15件)、Citrix(14件)、Ivanti(14件)といった日本でもメジャーなベンダーなどが多くを占めています。登録されている製品・プロダクト情報を見ると日本の組織や個人で利用されているものも多く見受けられますが、ネットワーク境界で利用されているVPN機能やリモート接続機能を提供する製品や仮想環境で利用されているものも確認できます。

図2:CISA Known Exploited Vulnerabilities Catalog 2024年1月15日時点の登録データを元に筆者が作成したベンダー情報(2024年1月15日時点)

2024年は1月2日にExcel ファイルの解析機能を提供するオープンソースライブラリ「Spreadsheet::ParseExcel」の脆弱性 (CVE-2023-7101) が既知の悪用された脆弱性のカタログとして既に登録されております。なお、この脆弱性によるサプライチェーンリスクとして影響を受ける製品が存在し、情報処理推進機構(IPA)が「バラクーダネットワークスが提供するセキュリティ対策製品「Email Security Gateway Appliance (ESG)」*4が影響を受けている情報提供を行っています。また2024年1月10日には、Ivanti社のVPN製品Ivanti Connect Secure と Ivanti Policy Secure Gateways に対してCVE-2023-46805及びCVE-2024-21887の脆弱性が既知の悪用された脆弱性のカタログに登録されています。この脆弱性はゼロデイ攻撃として公表されており、JPCERT/CCは、この脆弱性を悪用したとみられる攻撃が日本国内で発生している可能性があることを注意喚起*5しています。

2024年はまだ始まったばかりですが、既にゼロデイ攻撃を含む脆弱性の悪用に関する注意喚起が行われています。大手ベンダーやオープンソースコミュニティに限らず、ソフトウェア開発およびソフトウェアライフサイクルのプロセスにセキュリティプロセスを熱心に取り組んでいる状況に変わりつつあるものの、抽象的なビジネスロジックをコードで適切に実装し続けることは困難であることは容易に理解できます。さらに単一のコンポーネントが協調・分散して動作するサプライチェーンモデルのソフトウェアであれば、なおのこと、すべてのコードやコンポーネントに対するヒューマンエラーを取り除き脆弱性を無くすことは困難な状況と言わざるを得ません。

3. セキュアソフトウェア開発による脆弱性の低減

そもそも脆弱性が作りこまれる原因は一体なんなのでしょうか?ソフトウェアの脆弱性は、企画、設計や実装の段階における人のミス「ヒューマンエラー」から生じます。そのため、人が関わるすべてのソフトウェア開発プロセスにおいて、セキュアなソフトウェア開発の取り組みを用いることが、人が脆弱性を作り出す原因を根本から解決する重要な手段として期待できます。

セキュアソフトウェア開発のプロセスでは、企画、設計段階からセキュリティを考慮に入れ、コーディング規約の遵守、静的コード解析ツールの使用、定期的なコードレビューなどを行います。また、教育とトレーニングも重要な要素であり、開発者がセキュリティのベストプラクティスと脆弱性についての知識を持つことが求められます。そのため、従来からグローバルスタンダートとして紹介されているOWASP*6の取り組みをソフトウェア開発の現場で取り入れることや、NIST SP800-218*7として公開されているセキュアソフトウェア開発フレームワーク(SSDF)を用いることでソフトウェアの脆弱性リスクを低減することが期待できます。NIST SP800-218 で紹介されているSSDFの4つのグループと各実践内容を次の表で示します。

グループ名実践内容
組織の準備(PO:Prepare the Organization)組織は、その人々、プロセス、技術が組織レベルでセキュアなソフトウェア開発を行うための準備が整っていることを確認するべき。多くの組織は、POの実践の一部が、個々の開発グループやプロジェクトのようなソフトウェア開発の一部にも適用可能であることを見つけることが期待できる。 
ソフトウェアの保護 (PS:Protect the Software) 組織は、ソフトウェアのすべてのコンポーネントを改ざんや不正アクセスから保護するべき。
よく保護されたソフトウェアの生産 (PW:Produce Well-Secured Software)組織は、リリースにおけるセキュリティ脆弱性が最小限の、よく保護されたソフトウェアを生産するべき。 
脆弱性への対応 (RV:Respond to Vulnerabilities)組織は、ソフトウェアリリースに残存する脆弱性を識別し、適切に対応するべき。 

表1:Secure Software Development Framework (SSDF) Version 1.1 で示されている4つの原則(原文を翻訳)

ソフトウェア開発の現場は様々ですから、開発するソフトウェアのセキュリティを確保する活動も様々になりますが、OWASP や SSDF では、ソフトウェア開発フレームワークの推奨事項をソフトウェア開発者に提供することで、リリースされたソフトウェアの脆弱性の数を減らすこと、未検出または未対処の脆弱性が悪用された場合の潜在的な影響を低減し、将来の脆弱性再発防止に向けた根本原因に対処することができます。SSDFのようなフレームワークはソフトウェア開発側が利用するだけではなく、ソフトウェア購入者および利用者として、調達セキュリティとなる取得プロセスやサプライヤーとのコミュニケーションを行う際にも活用することで、脆弱性が存在しやすいソフトウェアを利用するリスクを低減することにもつながります。

4. 機械学習・AIや脅威情報を活用したゼロデイ攻撃への対策

人がソフトウェアを開発している以上、常にソフトウェアを利用する環境において、脆弱性と向き合う必要があります。しかし、既知の脆弱性対応のように修正パッチや更新プログラムを適用することで対応できる場合もあれば、未知の脆弱性を悪用するゼロデイ攻撃に遭遇する可能性も考えなければなりません。その際、機械学習・AI及び脅威情報は、ゼロデイ攻撃への対策において有望なツールとなり得ます。

機械学習・AIは大量のデータを高速に処理し、パターンを見つけ出す能力を持っています。この能力を利用して、異常な通信パターンや未知の脆弱性を検出することが可能です。機械学習・AIベースのセキュリティシステムは、ネットワークの通信をモニタリングし、異常な行動を検出します。これにより、攻撃が発生する前に脅威を識別し、防御策を講じることが可能になります。

しかし、AIを活用したゼロデイ攻撃への対策には、まだ多くの課題が存在します。例えば、AIは大量のデータと高度な計算能力を必要とします。また、AIの判断が常に適切かどうか、場合によっては、組織にとって正常な行動を誤って異常と判断してしまうこともあります。ただ、重要な事業に対して、ゼロデイ攻撃が発生した場合、サイバー攻撃やデータ流出の影響により事業継続ができない状況に陥られることも考えらえるため、AIの判断結果が常に期待通りではないかもしれませんが、ゼロデイ攻撃に対して積極的に防御するアプローチを採用することも可能になっています。

図3 機械学習・AIを用いたゼロデイ攻撃の検出例

さらに、脅威情報を活用することでゼロデイ攻撃により不正アクセスが発生してしまった場合でも、あらかじめファイアーウォールやWebアプリケーションファイアーウォール等に攻撃元の通信先情報や攻撃の可能性がある挙動をブロックリストやシグネチャとして登録することで、予期することができないゼロデイ攻撃を防御することが期待できます。もちろん、脅威情報も確実にゼロデイ攻撃に関する通信先や挙動を防御することはできないため、最新の脅威情報へのアップデートや脅威ではなくなったデータの削除等セキュリティ運用が必要です。また、機械学習・AIと同様に登録した脅威情報が正常な挙動を防御してしまうこともあるかもしれないため、脅威情報の運用に加えて業務トラフィック等が適切に運用されていることも業務部門、IT部門と連携して確認していく必要があります。

なお、脅威情報はセキュリティベンダー等があらかじめ有害情報として評価しているものもあれば、セキュリティオペレーションセンター等アナリストがセキュリティ運用している組織の脅威情報は、有害情報としてのしきい値(悪性評価スコア)を下げて積極的に異常な挙動を捉えるようにしている場合もあります。そのため、あらかじめ組織としてゼロデイ攻撃の防御精度をどこまで高めておくのかを検討しながら、脅威情報提供ベンダーに特定の有害情報に関する脅威情報を共有してもらうのか、アナリストが積極的に攻撃を食い止めるシグネチャにするのか、また最近ではAIにより生成された脅威情報を活用することも選択肢の1つとして検討することが可能になっています。

ここまで、機械学習・AIおよび脅威情報を使用したゼロデイ攻撃への対策例を考察してみました。ソフトウェアには脆弱性が残存していることを前提に組織におけるセキュリティ対策を準備しておくことでリスクが受容できるようになりますので、他にも多層防御として知られているリスク低減策が存在しますので、その一部を紹介しておきます。

定期的なセキュア設計の点検組織が必要とする情報システムセキュリティ環境を更新し、組織体制、人的、物理的、技術的対策の脆弱性を修正する
定期的なパッチ適用ソフトウェアを定期的に更新し、既知の脆弱性を修正する
ネットワークセキュリティの強化ファイアウォール、VPN、およびIPsecを使用してネットワークセキュリティを強化する
ネットワークセグメンテーション堅牢なネットワークアクセス制御を実装してネットワークをセグメント化する
Webアプリケーションファイアウォール(WAF)の使用Webアプリケーションへのすべての入力トラフィックを検査し、悪意のあるトラフィックをフィルタリングし、脆弱性の悪用を防止する
エンドポイント検出および対応(EDR) エンドポイントの活動状況をモニタリングし、異常な活動を防止する
脅威防御エンジン(機械学習/AI) 機械学習・AIに基づき脅威情報を活用してゼロデイ攻撃を防止する
脅威情報プラットフォーム 潜在的な攻撃と未知の脆弱性に関する情報を活用して予測困難な攻撃を検出する
5. まとめ

我々の社会・経済活動を支える上でデジタル活用が必然の時代になりました。しかし、デジタル活用を行うにあたりソフトウェア開発が活性化するに従い、ソフトウェアの脆弱性対策に取り組む必要が生じています。特にゼロデイ攻撃は現代のサイバーセキュリティの大きな課題であり、その対策にはAIが有望なツールとなり得ます。しかし、その実装にはまだ多くの課題が存在します。これらの課題を克服することで、より安全なデジタル社会の実現につながるでしょう。 また、セキュアソフトウェア開発の取り組みは、脆弱性を作り出す原因を根本から解決する重要な手段となります。これらの取り組みを通じて、より安全なソフトウェアを開発し、ゼロデイ攻撃のリスクを最小限に抑えることが可能となります。本記事が皆様のサイバーセキュリティ対策の一助になることを願っています。