ディープダイブMOVEitのゼロデイ脆弱性に迫る

2023年9月30日発行
by Laura Verheyde
ケーススタディ

ディープダイブMOVEitのゼロデイ脆弱性に迫る

2023年9月30日発行
by Laura Verheyde
リソースを見る
リソースを見る

ソフトウェア・サプライチェーンのサイバー攻撃はますます一般的になりつつあり、米国政府レベルでは法改正が相次ぐ一方、企業は拡大するリスクプロファイルを軽減し、ソフトウェア品質を迅速に向上させようと躍起になっている。ファイル共有サービスに関連するゼロデイ脆弱性は、今年だけでも3件発生しており、中でも最大かつ最も破壊的なものは、MOVEitの大量エクスプロイトである。

CL0Pランサムウェア・グループによって先導されたMOVEit事件は、しばらくの間サイバーセキュリティ・ニュースを席巻し、1,000以上の組織が影響を受けた。この数は増え続けており、2021年のSolarwinds以来、最も強力なソフトウェア・サプライチェーン攻撃の1つとなっている。

この広範な侵害のきっかけとなったのは、SQLインジェクションの脆弱性群で、最終的にMITREの深刻度スコアは10点満点中9.8点となった。SQLインジェクションは、90年代後半からセキュリティ専門家の悩みの種であり、かなり簡単な修正にもかかわらず、最新のソフトウェアに入り込み、脅威行為者に機密データへのレッドカーペットを提供し続けている。 



MOVEitのシナリオは、多くの開発者やAppSecの専門家が以前に経験したものとは少し異なっており、ライブシミュレーションでSQLi退治のスキルを試すことができます。

脆弱性SQLインジェクション

SQLインジェクションは、Progress SoftwareのMOVEitファイル転送アプリケーションを悪用するために、具体的にどのように使われたのか?

CL0Pランサムウェアグループは、SQLインジェクションの脆弱性CVE-2023-34362を悪用し、MOVEitのデータベースに無制限かつ不正にアクセスすることができました。そこから、彼らはLEMURLOOTをインストールすることができました。LEMURLOOTは、最終的に、システム設定の検索、SQLデータベースの列挙、MOVEit Transferシステムからのファイル検索、完全な管理権限を持つ新しいアカウントの作成など、いくつかの高リスクで重要なプロセスを実行できるようにするWebシェルです。

言うまでもないが、この攻撃ベクトルは比較的単純なエラーの結果であり、お粗末なコーディング・パターンを使い続けた結果とも言えるが、企業レベルで継続的な問題を引き起こす可能性は計り知れない。 

MOVEitエクスプロイトと同様に、悪意のあるSQLを注入して実行する方法をシミュレートしたSQLiの説明を見てみよう:
‍。

このクエリー文字列と変数:
↪CF_200D↩。

string emailAddress ="contact@scw.com";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


は次のようなクエリーになる。

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'";
㊤Cf_200D

... そして、悪意のある細工を施した入力の場合:
‍。

string emailAddress = "contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


‍ となる。

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--'";
‍クエリ

飛行中はどう見える?

文字列の連結により、入力はSQL構文として解釈されることに注意してください。まず、SELECT文が有効なSQL構文であることを確認するためにシングルクォートが追加されます。次に、最初の文を終了するためにセミコロンが追加されます。 

これが配置されると、有効なDELETE文が追加され、ハイフン2つで末尾の文字(シングルクォート)をコメントアウトする。例えば、悪意のあるSQLがユーザのロールやパスワードを更新するものであった場合、UPDATE文も同様に簡単に追加できます。


‍ このプレイアブル・ミッションで実際に試してみてください。

>> PLAY THE MOVEit MISSION
↪Cf_200D

SQLiは比較的簡単ではあるが、依然として強力な攻撃ベクトルであり、あまりにも一般的なものである。MOVEitの場合、この悪用によって有害なバックドアがインストールされ、さらに同じような深刻度の攻撃グループが発生した。

SQLインジェクションのリスクを軽減するには?

MOVEit を業務の一部として利用している企業は、Progress Software が推奨する修復アドバイスに従うことが不可欠です。これには、緊急レベルの優先事項としてセキュリティパッチを適用することが含まれますが、これに限定されません。

SQL インジェクション全般については、包括的なガイドをご覧ください。

安全なコードを書いてリスクを軽減する方法についてもっと知りたいですか?当社のSQLインジェクション・チャレンジを無料でお試しください。

さらに無料のコーディング・ガイドラインにご興味があれば、セキュアコーディングのベストプラクティスを常に把握するのに役立つSecure Code Coachをご覧ください。

リソースを見る
リソースを見る

著者

ローラ・ベルヘイデ

Laura Verheyde はSecure Code Warrior のソフトウェア開発者で、脆弱性のリサーチとMissions および Coding labs のコンテンツ作成に注力している。

もっと知りたい?

セキュアコーディングに関する最新の知見をブログでご紹介しています。

当社の豊富なリソースライブラリは、安全なコーディングアップスキルに対する人間的なアプローチを強化することを目的としています。

ブログを見る
もっと知りたい?

開発者主導のセキュリティに関する最新の研究成果を入手する

ホワイトペーパーからウェビナーまで、開発者主導のセキュアコーディングを始めるために役立つリソースが満載のリソースライブラリです。今すぐご覧ください。

リソース・ハブ

ディープダイブMOVEitのゼロデイ脆弱性に迫る

2023年9月30日発行
Laura Verheyde 著

ソフトウェア・サプライチェーンのサイバー攻撃はますます一般的になりつつあり、米国政府レベルでは法改正が相次ぐ一方、企業は拡大するリスクプロファイルを軽減し、ソフトウェア品質を迅速に向上させようと躍起になっている。ファイル共有サービスに関連するゼロデイ脆弱性は、今年だけでも3件発生しており、中でも最大かつ最も破壊的なものは、MOVEitの大量エクスプロイトである。

CL0Pランサムウェア・グループによって先導されたMOVEit事件は、しばらくの間サイバーセキュリティ・ニュースを席巻し、1,000以上の組織が影響を受けた。この数は増え続けており、2021年のSolarwinds以来、最も強力なソフトウェア・サプライチェーン攻撃の1つとなっている。

この広範な侵害のきっかけとなったのは、SQLインジェクションの脆弱性群で、最終的にMITREの深刻度スコアは10点満点中9.8点となった。SQLインジェクションは、90年代後半からセキュリティ専門家の悩みの種であり、かなり簡単な修正にもかかわらず、最新のソフトウェアに入り込み、脅威行為者に機密データへのレッドカーペットを提供し続けている。 



MOVEitのシナリオは、多くの開発者やAppSecの専門家が以前に経験したものとは少し異なっており、ライブシミュレーションでSQLi退治のスキルを試すことができます。

脆弱性SQLインジェクション

SQLインジェクションは、Progress SoftwareのMOVEitファイル転送アプリケーションを悪用するために、具体的にどのように使われたのか?

CL0Pランサムウェアグループは、SQLインジェクションの脆弱性CVE-2023-34362を悪用し、MOVEitのデータベースに無制限かつ不正にアクセスすることができました。そこから、彼らはLEMURLOOTをインストールすることができました。LEMURLOOTは、最終的に、システム設定の検索、SQLデータベースの列挙、MOVEit Transferシステムからのファイル検索、完全な管理権限を持つ新しいアカウントの作成など、いくつかの高リスクで重要なプロセスを実行できるようにするWebシェルです。

言うまでもないが、この攻撃ベクトルは比較的単純なエラーの結果であり、お粗末なコーディング・パターンを使い続けた結果とも言えるが、企業レベルで継続的な問題を引き起こす可能性は計り知れない。 

MOVEitエクスプロイトと同様に、悪意のあるSQLを注入して実行する方法をシミュレートしたSQLiの説明を見てみよう:
‍。

このクエリー文字列と変数:
↪CF_200D↩。

string emailAddress ="contact@scw.com";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


は次のようなクエリーになる。

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'";
㊤Cf_200D

... そして、悪意のある細工を施した入力の場合:
‍。

string emailAddress = "contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


‍ となる。

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--'";
‍クエリ

飛行中はどう見える?

文字列の連結により、入力はSQL構文として解釈されることに注意してください。まず、SELECT文が有効なSQL構文であることを確認するためにシングルクォートが追加されます。次に、最初の文を終了するためにセミコロンが追加されます。 

これが配置されると、有効なDELETE文が追加され、ハイフン2つで末尾の文字(シングルクォート)をコメントアウトする。例えば、悪意のあるSQLがユーザのロールやパスワードを更新するものであった場合、UPDATE文も同様に簡単に追加できます。


‍ このプレイアブル・ミッションで実際に試してみてください。

>> PLAY THE MOVEit MISSION
↪Cf_200D

SQLiは比較的簡単ではあるが、依然として強力な攻撃ベクトルであり、あまりにも一般的なものである。MOVEitの場合、この悪用によって有害なバックドアがインストールされ、さらに同じような深刻度の攻撃グループが発生した。

SQLインジェクションのリスクを軽減するには?

MOVEit を業務の一部として利用している企業は、Progress Software が推奨する修復アドバイスに従うことが不可欠です。これには、緊急レベルの優先事項としてセキュリティパッチを適用することが含まれますが、これに限定されません。

SQL インジェクション全般については、包括的なガイドをご覧ください。

安全なコードを書いてリスクを軽減する方法についてもっと知りたいですか?当社のSQLインジェクション・チャレンジを無料でお試しください。

さらに無料のコーディング・ガイドラインにご興味があれば、セキュアコーディングのベストプラクティスを常に把握するのに役立つSecure Code Coachをご覧ください。

弊社製品や関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

送信
フォームを送信するには、「Analytics」のCookieを有効にしてください。完了したら、再度無効にしてください。