脆弱性リサーチが明かす「プラセボ・パッチ」、修正プログラムの品質傾向に迫る
脆弱性発見コミュニティZDIの研究により、修正プログラムの品質に低下がみられることがわかりました。その背景を探り、ソフトウェア開発の課題と今後について考察します。
増加し続けるソフトウェア脆弱性検出数
情報資産が企業・組織の基盤インフラの一部となった現代。組織を狙うサイバー攻撃者は、組織の持つさまざまな脆弱性に目をつけ、攻撃を仕掛けます。
周知の通り、多くのサイバー攻撃においては、なんらかのソフトウェア脆弱性が悪用されています。そのため、防衛側(ソフトウェアベンダ、セキュリティベンダ、ユーザ組織)としては、ソフトウェア脆弱性を発見し修正を適用していくことが情報資産を守るために欠かせない活動であるといえます。このような状況から、脆弱性の検出には各ソフトウェアベンダや外部バグバウンティの活動も含め非常に多くのリソースが投下されており、年々検出件数は増加しています。トレンドマイクロが運営する脆弱性発見コミュニティZDI(Zero Day Initiative)によると、2022年のアドバイザリ数は1706件に上り、過去最大を記録しました。
検出される脆弱性が増加する要因は、いくつかあります。上述の通り、検出に割かれるリソースの増加もそのひとつです。また市場に存在するソフトウェア資産は年々増え続けているため、それに付随して脆弱性も当然増えていきます。しかし、それらとは異なる背景で生み出される脆弱性も存在しています。
修正プログラム、実は「穴」が開いていた?
一般的に、検出された脆弱性に対してはソフトウェアベンダから修正プログラム(パッチ)が発行されます。この修正プログラムを適用することで、その脆弱性に対しては対策ができ、セキュリティを担保できるとされます。しかし、ZDIのリサーチによると、その修正プログラムが実は「プラセボ・パッチ」(効き目のないパッチ)だったというケースが見られます。
一例として、下記の事例を見てみましょう。
Microsoft社は、2022年7月のパッチチューズデーで脆弱性CVE2022-22047の対策を公開しました。この脆弱性はWindows CSRSS における特権昇格の脆弱性であり、攻撃者が利用した場合、標的上で他のコードを実行できる場合にSYSTEMとしてのコード実行が可能となるものです。この脆弱性については、公開当時すでに悪用例が観察されており、一定のユーザ不安を喚起したものでした。
7月に修正プログラムがリリースされたことで、この脆弱性のリスクは軽減されたものと思われました。しかしながら、同年10月にCVE2022-37989の対応が公開された際、実はこの修正プログラムはCVE2022-22047での対応不具合を修正したものだとわかりました。つまり、7月当時リリースされた修正プログラムには不具合があり、仮に修正プログラムを適用した状態であっても攻撃者はその修正を容易に回避して攻撃を実行できたであろうと考えられます。ユーザにとっては、修正プログラムを適用した環境であっても実態としては効果がなく、まるでプラセボ薬を服用して安心しているような状況であったといえるのです。特にCVE2022-22047の場合は、公開された2022年7月以前にすでに悪用例が観察されていたため、潜在的にリスクの高い状態が数か月にわたって継続していたことになります。
ZDIによると、このような「プラセボ・パッチ」として発生する脆弱性(すなわち、元の脆弱性が解消されない状態)は、報告される脆弱性全数のうち約10%にも上るといわれています(ZDIへの外部リサーチャの報告およびZDIリサーチャの報告した脆弱性全数に対し、修正プログラムが適切に脆弱性対策できていない件数の比率、2021年から2022年上半期の集計)。
「プラセボ・パッチ」が生まれてしまう、ソフトウェア開発の課題とは
サイバー攻撃の影響が益々深刻化する現代において、ソフトウェア脆弱性への的確な対処が重要であることは言うまでもありません。ソフトウェアベンダにとって、自社製品の脆弱性を低減し対策することは顧客価値を維持するうえで欠かせないことだといえます。当社もソフトウェアベンダとして、日々試行錯誤しながら取り組みを続けています。
このように重要性が自明である状況においても「プラセボ・パッチ」が生まれてしまう背景には、ソフトウェア開発におけるスピード偏重の傾向があるとZDIのDustin Childsは指摘しています。修正プログラム開発におけるQCDを検討した場合、Q(品質)は「既知の脆弱性がない状態」、D(デリバリ)は「脆弱性が悪用される前に公開、配布すること」です。またC(コスト)は「公開前にセキュリティテストを行うコスト」だといえます。現状、ZDIがソフトウェアベンダに報告した全脆弱性のうち約10%が「プラセボ・パッチ」であり品質未達であることを考えると、テストが十分でないケースが相当数あると考えられます。このようなケースでは、品質とデリバリを天秤にかけた結果デリバリが優先されているといえます。
しかしながら、昨今のサイバー攻撃の深刻化はこのような優先度判断の前提条件を覆すものです。重要インフラにおけるIoT導入が進む中でソフトウェアのセキュリティはますます重要視されており、この傾向は今後も続くものといえます。
ZDIの取り組みー「プラセボ・パッチ」のリスクを低減するために
このような現状を受け、脆弱性のリスクを確実に低減するために、ZDIではソフトウェアベンダに対して新たな働きかけを行っています。
ZDIでは、ZDIが報告した脆弱性に対しソフトウェアベンダが修正プログラムを公開すると、いち早く検証を行い、有効性を検証しています。その結果として、修正プログラムが「プラセボ・パッチ」である、すなわち十分な防御を提供できないと判断された場合、ソフトウェアベンダに対し早急に報告し改めて修正プログラムを作成するよう要望します。またその際は、当該脆弱性の開示までの猶予期間を通常の脆弱性よりも短くすることで、迅速な対応を促しています。開示までの猶予期間は、現在下記のように設定されています。通常、まったく新規に報告された脆弱性の場合は、120日です。
元の脆弱性の深刻度(CVSSに拠る) | |||
深刻~非常に深刻 | 中程度以下 | ||
修正プログラムの回避のしやすさ |
回避が容易で、POCまたは実際の攻撃がすでに観測されている | 30日 |
90日 |
多少防御効果あるが、回避可能 | 60日 |
表1:ZDIがソフトウェアベンダに修正プログラムを再作成するよう要望する際の猶予期限
また、ZDIでの修正プログラム検証結果は、トレンドマイクロ製品で実装される仮想パッチに反映され、当該脆弱性がユーザに与える影響をできる限り低減できるように対策されています。
終わりにーソフトウェアベンダが、今考えるべきこととは
デジタル技術が社会を支える重要インフラの一部となった今日、深刻なソフトウェア脆弱性の存在は社会の安全性をも揺るがしかねないリスクとなりました。ソフトウェアは、機能性や信頼性などに加えて「安全性」を提供することで、ユーザからの信頼を獲得し続けることが要求されているといえます。ソフトウェアベンダにとって優先すべきものは何か、明日の市場競争力の源泉について、今一度振り返る時期に来ています。それに加え、各ステークホルダ間、つまりソフトウェアベンダ、セキュリティベンダ、ユーザ、またZDIのような脆弱性発見コミュニティやリサーチャの間での、より真摯かつ緊密な協力が求められるでしょう。
Security GO新着記事
RAGとは?ChatGPTなどの生成AIの性能を向上する仕組み
(2024年12月12日)
EDRを入れればセキュリティ対策は安心?セキュリティ神話がもたらす危険性
(2024年12月11日)
世界のサイバーリスク動向を”データ”で読み解く~世界サイバーリスクレポート2024年版より~
(2024年12月9日)