登壇者の自己紹介

gameshack_氏:こんにちは、gameshack_と申します。このプレゼンテーションは英語のみになります。残念ながらまだ日本語は話せません。今日はWebアプリケーションレポートを使用したリモートコード実行に関するプレゼンテーションを行います。「基本的には、ユーザー入力を絶対に信頼してはいけない」というレッスンです。

自己紹介ですが、私はgameshack_です。実際の名前はパトリックなので、gameshack_またはパトリックと呼んでください。ドイツにあるDRACOONのQAエンジニア兼セキュリティリサーチャーです。

DRACOONの紹介

おそらくここにいる誰もがDRACOONのことを聞いたことがないでしょう。主にヨーロッパ、ドイツ、オーストリア、スイスで事業を展開しており、少しずつ拡大しています。

当社はセキュアなファイルサービスソリューションを提供しています。主な特徴はエンドツーエンドの暗号化で、ファイルは常にサービス上で暗号化されています。企業は簡単なファイル共有が可能です。

役割の設定、監査、およびイベントログの取得ができます。マイクロサービスアーキテクチャを採用しており、ほぼすべてのプラットフォームに対応したアプリがあります。

では、DRACOONのレポートとは何でしょうか? 各イベントは基本的にログに記録され、トレースされ、DRACOONインスタンス上でアクションを実行します。

例えば、ユーザーがルームを作成したり、フォルダを作成したり、ファイルにコメントを作成したり、共有リンクを作成したりするといったことが、ウェブサーバーでの通常のログ記録と同様に、すべてログに記録されます。

その後、管理者はレポートを作成し、それをCSVファイルやPDFファイルとしてエクスポートすることができます。

さて、エクスプロイトについてですが、このエクスプロイトは非常にシンプルで簡単です。したがって、ファイルが安全ではないなど、DRACOON自体でエクスプロイトは発生せず、すべてが安全です。

共有リンクからファイルをダウンロードすると、ユーザーエージェントがログに記録されます。

ユーザーエージェントが適切にサニタイズされていなかったため、実際にはどんな種類のAPIエンドポイントにリクエストを送信し、悪意のある文字列をユーザーエージェントとして送信することが可能でした。今回私が使用した悪意のある文字列は、Windowsコンピューター上のコマンドラインを呼び出すものでした。

管理者がレポートを作成し、CSVとしてエクスポートした場合、CSVファイルには修正されずに表示されます。しかし、管理者がそれをExcelまたはGoogleスプレッドシートで開くと、PC上で完全なリモートコード実行が可能になり、悪用される可能性があります。

なぜこれが問題なのでしょうか? Excelには他のプログラムを実行するための古いレガシーな機能があります。この場合、私はCMDを使用し、概念実証として計算機アプリを呼び出していました。

というのも、企業のセキュリティ・ポリシーが正しく設定されていないことがあるからです。もし誰かが自分のオフィスのインスタンスにセキュリティ・ポリシーを正しく設定しなかった場合、そのオフィスは脆弱な状態になり、DRACOONを介して生成されたCSVを通じて悪用される可能性があります。

デモ

そろそろデモの時間ですね。ビデオを用意しました。ライブデモは常に少しトリッキーなので、事前に録画しました。これは基本的にDRACOONです。ここでは共有リンクを作成します。

では、ここでDRACOONが表示されます。ファイルがありますね。共有リンクを作成します。この共有リンクをコピーして誰かに送信します。この場合、悪意のある攻撃者ということになります。

悪意のある攻撃者がサイトを訪れ、リクエストをBurp Suiteまたは使用しているツールに記録します。だから私はこれを用意しました。このポストリクエストを取り出します。これは何も必要としませんよね? これは単なるリクエストです。

他のすべてを削除してユーザーエージェントだけを残したので、このユーザーエージェントを送信するだけです。

送信ボタンをクリックします。次に何が起こるのでしょうか? ある時点で、管理者はレポートをチェックしたいと思うでしょう。DRACOONに入り、必要な時間のレポートを作成します。この場合、私は1つのルームに対してレポートを作成します。

デモのためだけにリストがいっぱいになることはありません。レポートを実行し、しばらく待つと、各人のサイトが生成されます。これがレポートです。

ただし、ユーザーエージェントの文字列があるため、このログにもユーザーエージェントが表示され、そしてExcelはあなたに「本当に実行しますか? このデータを信用しますか?」と聞いてくるでしょう。

このレポートを作成したあなたは、もちろん信頼しているでしょう。おそらくこれを読まずに、ただ「はい」をクリックするでしょう。それでは、「はい」をクリックした時に何が起こるか見てみましょう。

電卓が開きます。これは何でもあります。電卓かもしれませんし、文字どおりウイルスかもしれません。これがエクスプロイトが動作する仕組みです。さて、プレゼンテーションの続きに戻りましょう。

ユーザー入力全般には注意を払おう

さて、まとめです。これを防ぐにはどうすればよいでしょうか? 非常にシンプルですが、ユーザー入力をきちんとサニタイズすることです。ユーザーがテキストフィールドに入力する内容だけでなく、ユーザー入力全般に注意を払うべきです。ユーザーが提出できるものは文字どおりすべてが悪意を持っている可能性があるため、注意が必要です。

非常に単純なものであれば、正規表現を使って数文字を削除するだけでよいので、それほど難しくありません。もう1つできることは、セキュリティポリシーが正しく設定されているか確認することです。

ExcelやGoogleスプレッドシートなど、使用しているものに対してセキュリティポリシーを適切に設定してください。なぜなら、これらのものは危険だからです。私自身は、この種の脆弱性をブログ記事から学びました。これは2017年のかなり古いブログ投稿で、基本的にCSVインジェクションの危険性について書かれています。

OWASPのCSVインジェクションに関する記事へのリンクや、Microsoft 365のセキュリティ設定に関する情報も含まれています。プレゼンテーションをダウンロードして後でリンクを確認したい場合は、QRコードを用意したので、ご活用ください。

誰でもスキャンできます。冗談です、冗談です(笑)。心配いりません、今回はCSVインジェクションはありません。

だいたいこれで終わりです。ありがとうございます。こちらが私の「Twitter(現X)」と「Mastodon」です。もうあまりTwitterは使っていないので、連絡を取りたい場合はMastodonかメールをご利用ください。では、お招きいただきありがとうございました。