PolicyHackerOneに報告された脆弱性をHackEDUで再現するHackerOneに報告された脆弱性をHackEDUで再現するサイバーセキュリティに関する体験型学習サービスを提供する「HackEDU」がHackerOneと提携し、過去に報告された脆弱性を再現できるサンドボックス環境をリリースした。HackEDUの無料アカウントを作成するだけで、HackerOneに報告された5つの脆弱性のサンドボックス環境を利用できる。今回はバグハンターのneex氏が2017年に報告したImgurという画像共有サイトでのRCE(#212696)を取り上げる。neex氏が脆弱性を発見した際の手順を再現しながら詳細を学んでいく。ImgurでのRCEの再現HackEDUの利用者はブラウザからサンドボックス環境にアクセスし、ページ内に用意された仮想ブラウザと仮想プロキシを使って脆弱性を再現する。以下のページがImgurでのRCEのサンドボックス環境である。仮想ブラウザ上の1つ目のタブにImgurを再現したImgerというサイトが、2つ目にコールバックを確認するためのタブが開かれている。neex氏のレポートによると脆弱性は画像編集機能で見つかっている。オプションを用いて調査を始めている。サンドボックス環境では画像編集時のHTTPリクエストがPOSTメソッドで送られるが、GETメソッドに変更しても問題なく処理される。今回はレポートを忠実に再現するため、仮想プロキシでインターセプトしたHTTPリクエストをGETメソッドに変更した上でパラメータの値を書き換える。パラメータの値を画像処理ツールのコマンドライン引数に挿入していたため脆弱性が生じた。追加すると画像が90度回転する。オプションで任意のコマンドを実行できる仕様を用いてRCEを実証した1。コマンドで外部のサーバーへ送信している。コールバックを仮想ブラウザの2つ目のタブで確認できる。コマンドの実行結果を受け取れる。代用して文字を区切っている2。今回取り上げた脆弱性はGETパラメータでも再現できたため、仮想ブラウザのアドレスバーからパラメータ操作が可能であった。POSTパラメータでの脆弱性を検証する場合、HTTPリクエストを何度もインターセプトして書き換えることになる。サンドボックス環境の仮想プロキシにはHTTPリクエストの再送機能が搭載されていないため、愛用のローカルプロキシでの再送を試みる。サンドボックス環境とはいえ仮想ブラウザから発生するHTTPリクエストはHackEDUのサーバーに送信される。そのためサンドボックス環境のページを開いているブラウザでローカルプロキシを経由すればHTTPリクエストを操作できる。脆弱性のレポートを読むだけと、実際に再現まで確認するとでは学びの量が違う。レポートに記載されていない別のパターンを試すことで新たな発見にもつながるし、記憶にも残りやすい。ソフトウェア製品の脆弱性の場合、修正前の古いバージョンを入手できれば再現は可能である。Webアプリケーションの脆弱性の場合、サイト運営者でなければ修正後の再現は極めて難しい。HackEDUのようなサービスにより実在した脆弱性を容易に再現できるようになれば、バグハンターだけでなく開発者の学びにも役立つだろう。今回は取り上げなかったが、HackEDUはWebアプリケーションの各種脆弱性のサンドボックス環境やCTF形式の問題も提供している。無料アカウントではSQLインジェクションのみだが、脆弱性の再現から各プログラミング言語での修正まで体験できるコースもある。年間$750の有料アカウントになればCVEが割り振られたソフトウェア製品の脆弱性や、バッファオーバーフローのような脆弱性のサンドボックス環境も利用できるようになる。有料アカウントは7日間の無料体験ができるので、まずは試用してから購入を検討したい。