
このリポジトリには、glibcのiconv()関数におけるバッファオーバーフローの脆弱性CVE-2024-2961をテストするためのCプログラムが含まれています。
このリポジトリには、GNU C ライブラリ (glibc) の iconv() 関数におけるバッファオーバーフロー脆弱性である CVE-2024-2961 をテストするための C プログラムが含まれています。PHP のヒープ構造により、このオーバーフローを悪用してフリーリストポインタの一部を変更し、最終的にプログラムのメモリ内で任意書き込みプリミティブを実現できます。その結果、ファイル読み取り脆弱性と制御可能なプレフィックスを有する PHP アプリケーションの攻撃者は、RCE を達成できます。同様に、PHP に制御されたパラメータで iconv() を強制的に呼び出させることで、攻撃者は同じ能力を得ることができます。
iconv ライブラリがインストールされていること。システムの glibc がバージョン 2.39 以前であることを確認します:
ldd --version
このリポジトリをローカルマシンにクローンします:
git clone https://github.com/exfil0/test_iconv.git
cd test_iconv
GCC を使用して C プログラムをコンパイルします:
gcc -o test_iconv test_iconv.c -liconv
コンパイルしたプログラムを実行します:
./test_iconv
gdb などのデバッグツールを使用してクラッシュを分析し、脆弱性に関連しているか確認します。クラッシュが発生した場合、gdb を使用して詳細を取得できます:
gdb ./test_iconv
GDB 内でプログラムを実行します:
run
プログラムがクラッシュした場合、プログラムの状態を検査できます:
bt
これによりクラッシュのバックトレースが表示され、オーバーフローが CVE によるものかどうかの診断に役立ちます。
AddressSanitizer を使用してプログラムをコンパイルし、オーバーフローを捕捉します:
gcc -fsanitize=address -o test_iconv test_iconv.c -liconv
./test_iconv
AddressSanitizer は、バッファオーバーフローがある場合に詳細な情報を提供します。
脆弱性が確認された場合、この問題が修正されたバージョンに glibc を更新することを検討してください。最新バージョンは GNU プロジェクトの Web サイトまたはディストリビューションのパッケージマネージャからダウンロードしてインストールできます。
この脆弱性の詳細については、以下の調査記事を参照してください: GLIBC Flaw CVE-2024-2961 Opens Door to RCE, PoC Exploit Published
このコードは教育およびテスト目的のみに使用してください。適切な許可なくシステムで使用しないでください。