主要脆弱性情報 脆弱性の概要 脆弱性名称: Cisco ASA の EXTRABACON 脆弱性 影響を受けるバージョン: Cisco ASA の複数のバージョン。初期の脆弱性バージョンを含む約20の以降のバージョンも含まれる。 脆弱性の種類: リモートコード実行 (RCE) 脆弱性 - SNMP パケットによって引き起こされるスタックバッファオーバーフロー 脆弱性の exploit 手順 1. 実行フローのハイジャック - スタックオーバーフローを利用してリターンアドレスを上書きし、リターンアドレスを悪意のあるコードへと変更する - リターンアドレスのオフセットを探す方法を説明するサンプルコード 2. 多段階シェルスコード: - ステージ1: "Finder" - 命令を使用してステージ2へジャンプ先を見つける - ステージ2: "Preamble" - 後のコードを実行するために環境とスタックを設定する - シェルスコードの preamble 部分の構築方法を示すサンプルコード - ステージ3: "Payload" - 実際には悪意のあるコードを実行する部分 - および 関数を調整して直接 TRUE を返し、管理権限を取得する - pass-disable ペイロードの構成方法を示すサンプルコード 重要なオフセットの特定 1. RET Smash(リターンアドレスの上書き) - 実行セグメント内にある 命令を探すことで特定できる。 - 例: Cisco ASA 8.4(3) で を実行し、適切なリターンアドレスを見つける 2. 安全なリターンアドレス - 正常な機能コードのエントリポイントへ復旧し、正常に動作するようにする - 関連するコードセグメントを分析して特定する。例: を使用して位置を特定する 3. 認証関数 - 認証を回避するための重要関数 および のオフセット - 該当するバイナリのコードセグメントを分析する 元のシェルスコードの改善 不要な XOR 0x5A 操作を削除してコード長を短縮する "Preamble" と "Payload" のステージを結合して総長を短縮する より効率的な命令を使用する。例えば、 の代わりに単一の 命令を利用する 上記の方法による最適化により、シェルスコードは200バイト以上から69バイトへ短縮された 今後の作業 他の Cisco ASA バージョンに対応し、必要なオフセットを自動的に検索する Python スクリプトの開発 Ruby 言語に Python コードを移植し、Metasploit フレームワークに統合する