Skip to content

「許せない」脆弱性であるSQLインジェクションの根絶をCISAが求める

    
「許せない」脆弱性であるSQLインジェクションの根絶をCISAが求める

3月27日(水)、CISAとFBIが支援を求めて叫び声をあげた:SQLインジェクションの脆弱性を根絶する必要があり、大至急対応する必要があると。この欠陥がある製品を開発し続けている全てソフトウェアメーカーを対象に共同のSbD(Secure by Design)アラートを発令した。 

念のために言っておくが、SQLインジェクションは26年前の欠陥であり、Webアプリケーションに対する最も重大なセキュリティ脅威のOWASP トップ10の主役であり続けている。

今回支援を求めたのは、最近CL0Pランサムウェア犯罪集団によるCVE-2023-34362 MOVEit脆弱性の悪用が広く報道されたことに端を発していると、CISA(米サイバーセキュリティ・インフラセキュリティ庁)とFBIは水曜日の勧告で説明している。2023年6月、米国政府機関はこの犯罪集団の逮捕に非常に意欲的で、世界的中のネットワークに穴を開け、何千もの企業や団体に影響を与えた犯罪者を追跡するのに役立つ情報に対して1000万ドルの報奨金を出した。

SQLインジェクション:「許せない」脆弱性

「過去20年間にSQLインジェクション(SQLi)の脆弱性は広く知れわたり、多くのドキュメントがあり、適切な対策があるにもかかわらず、ソフトウェアメーカーはこの欠陥のある製品を開発し続けており、多くの顧客を危険にさらしている」と勧告で述べられている。SQLiのような脆弱性は、Contrast SecurityのCTOで共同創業者のJeff Williamsが2002年に最初のOWASPトップ10リストに入れて以来、「許せない」脆弱性と見なされてきた。そのような脆弱性にも関わらず、SQLの脆弱性(CWE-89など)は依然として蔓延している。

SQLインジェクションとは? 

SQLインジェクションとは単に、開発者が信頼できないデータをデータベース関数に渡したことを意味する。このような呼び出しは、ライブラリの奥深くやアプリケーションフレームワークの一部として起こる可能性があるため、分かりにくい場合がある。残念ながら、企業や組織がランタイムセキュリティを使用して本番環境のWebアプリケーションを保護していない限り、このような極めて一般的な脆弱性を狙った攻撃を阻止する能力を損なうことになる。

これは、たとえ企業や組織がアプリケーションセキュリティ(AppSec)ツールを導入していたとしても同様である。例えば、静的アプリケーションセキュリティテスト(SAST)は、静的にデータフロー解析(DFA)を行うことは非常にエラーを起こしやすいため、SQLインジェクションとの戦いになる。動的アプリケーションセキュリティテスト(DAST)ツールでは、検出のきっかけとなるエクスプロイトを正確に見つけられるとは限らない。また、Webアプリケーションファイアウォール(WAF)には、標的となる関数が攻撃される可能性のある全ての方法に対してシグネチャがあるとは考えにくい。

SQLインジェクション攻撃に関するリスク

危険度が高いリスクだ。FBIがCL0P犯罪集団を見つけるのと引き換えに、1000万ドルもの大金をちらつかせた理由がわかるだろう。考えられるシナリオ:

  • 悪意のあるハッカーが、SQLインジェクションを実行して、データベースからデータまたはテーブルを削除する。この場合、データベースのバックアップがあったとしても、データを削除すると、データベースが復元されるまでアプリケーションの可用性に影響を与える可能性がある。さらに、バックアップには最近のデータが含まれていないこともある。
  • 攻撃者がSQLインジェクションを使用して、データベース内のデータを変更または更新し、データを追加する。例えば、金融アプリケーションの場合、攻撃者はSQLインジェクションを使用して口座残高を変更できる。さらに悪いことに、攻撃者がアプリケーションデータベースの管理者権限を取得できる場合もある。
  • SQLインジェクション攻撃の最も一般的なリスクは、ユーザデータの盗難だ。電子メールアドレス、ログイン認証情報、個人を特定できる情報(PII)が盗まれ、ダークウェブで販売される可能性がある。したがって、SQLインジェクションが成功してしまうと、企業・組織だけでなくユーザにとっても脅威となる。

SQLインジェクションの発見から26年が経過した今でも、SQLiの脆弱性は、データ侵害やデータのセキュリティに関する最も重要な課題のひとつである。

無料広告してくれたCL0Pに感謝

ランタイムセキュリティの公共広告について話そう。

Contrastは、危険な関数にセキュリティチェックを自動的に導入することで、SQLiのようなAppSec問題の根本原因に対処できる。これらのチェックは「Contrast信頼境界」と呼び、危険な関数を囲むミニファイアウォールのようなものだ。Contrastの信頼境界によって、危険な関数が本番環境で攻撃者によって悪用されるのを防ぐことができる。また、これらの信頼境界は、関数が安全に使用されていなかったり、安全ではないライブラリが使用されているとと、開発者にすぐに警告をする。

特にSQLiに関しては、データベースにクエリを送信するすべての関数に境界を追加する。適切にエスケープされていなかったり、パラメータ化されていないユーザ入力をメソッドで追跡した場合、悪用可能なSQLインジェクションが存在すると判定し、すぐに開発者に警告する。本番環境では、そのデータがクエリの意味を変更する場合、それは攻撃であると判定し、エクスプロイトを防ぐ。

SQLi をContrastで排除する方法についてはこちら

ゼロデイを発見前にブロック 本番環境では危険な関数がContrastで保護され、既知および未知の脆弱性が悪用されるのを防ぐことができる。その結果、Contrastには、ゼロデイが公式に発見される前(CVEが発行される前)にゼロデイを防ぐのに成功した様々な実績がある。Contrastによってブロックされたゼロデイとしては、ファイルやディレクトリが外部からアクセス可能になるStruts 2のパストラバーサルがある。また、リモートコード実行(RCE)の危険性があるSpring/Kafkaのデシリアライズや、Spring4Shellのコマンドインジェクション/クロスローダの改ざん。そして、広く普及したLog4ShellのELインジェクション、などがある。

発見前にブロックされたゼロディの殿堂入り

事実、Contrastには、発見される前にブロックされたゼロデイをいくつか記録した、殿堂入りリストがある。時には、発見される何年も前に。

ぜひご覧あれ:

​​CVE-2023-22527 Atlassian Confluence – テンプレートインジェクション

CVE-2023-34040 Spring/Kafka – 安全でないデシリアライズ

CVE-2023-22965 Spring4Shell – 悪意のあるデータバインド

CVE-2021-44228 Log4Shell – JNDIインジェクションによるリモートコード実行

CVE-2021-26084 Atlassian ConfluenceのELインジェクション

CVE-2020-17530 Apache Struts2 – ELインジェクション

CVE-2020-11651 Python Salt – 認証回避

CVE-2020-11652 Python Salt – ディレクトリトラバーサル

CVE-2020-9484 Apache Tomcat – 安全でないデシリアライズ

CVE-2019-2725 WebLogic – 安全でないデシリアライズ

CVE-2019-0230 Apache Struts2 – ELインジェクション

CVE-2018-11776 Apache Struts2 – ELインジェクション

CVE-2016-0792 Jenkins XStream – 安全でないデシリアライズ

...これはこれで良いことだが、Contrast SecurityのCTOで共同創業者のJeff Williamsが指摘するように「攻撃や侵害の圧倒的多数は既知の脆弱性によるものであり、ゼロデイを悪用したものではない」のだ。

CISAとFBIは、テクノロジ企業の幹部に対し、自社のソフトウェアの正式なレビューを促し、出荷前にSQLインジェクションのセキュリティ脆弱性を排除するための対策を実施するよう早急な対応を求めた。

Contrastなら、このような脆弱性を排除する方法をお見せすることができる。是非、デモをリクエストして欲しい。 

お問い合わせ

関連記事/サイト:

Contrast Security Japan