
CVE-2023-4911の影響を実証する概念実証(PoC)を含むリポジトリ。glibcのld.so動的ローダーに存在するこの脆弱性は、Looney Tunablesに関連するリスクを顕在化させます。
GNU C Library (glibc) は、GNUシステムにおけるCライブラリとして機能し、Linuxベースのシステムに不可欠です。その中核として、glibcは、システムコールやopen、malloc、printf、exitなどの一般的な関数を含む、プログラムに必須の機能を定義しています。glibcの重要な構成要素である動的ローダーは、共有ライブラリを管理し、実行時にそれらをリンクすることで、プログラムの準備と実行において重要な役割を果たします。
再コンパイルなしでユーザーに柔軟性を与えるために導入されたGLIBC_TUNABLES環境変数は、ユーザーが実行時にglibcの動作を変更できるようにします。これにより、パフォーマンスと動作パラメータを調整し、アプリケーションの起動に影響を与える手段が提供されます。
動的ローダーによるGLIBC_TUNABLESの処理におけるバッファオーバーフローの脆弱性は、重大なセキュリティリスクをもたらします。悪用されると、ローカルの攻撃者に昇格された特権が付与され、完全なルートアクセスにつながる可能性があります。Fedora、Ubuntu、Debianなどの主要なディストリビューションでの悪用に成功していることは、その深刻さと広範囲にわたる影響を浮き彫りにしています。
この脆弱性の誤用または悪用は、システムのパフォーマンス、信頼性、およびセキュリティに影響を与える可能性があります。エクスプロイトの詳細は公開されていませんが、バッファオーバーフローは急速にデータのみの攻撃に変わる可能性があるため、リスクは差し迫っています。glibcを使用する一般的なLinuxディストリビューションが影響を受けやすい可能性があり、迅速な認識と緩和の必要性が強調されます。
割り当て日: 2023年10月3日
種類: ローカル権限昇格
影響を受けるバージョン: glibc 2.34以降
ディストリビューション: RHEL、Ubuntu、Fedora、Debian、Amazon Linux、Gentoo、その他glibcを使用するディストリビューション 緩和策
アップグレード: 早急にglibcの更新を適用してください。
監視: セキュリティアドバイザリについて常に情報を入手してください。
確認: アプリケーションでのGLIBC_TUNABLESの使用状況を評価してください。
監査: システムログに不審なアクティビティがないか調べてください。
Ubuntu 22.04 Ubuntu GLIBC 2.35-0ubuntu3.1 util-linux 2.37.2 の su ASLR ON
仮想マシン作成には、Ubuntu (バージョン 22.04.1) のISOを使用しました
インストールが正常に完了したら、特に更新する必要はありません。ただし、システムにgitとGNU Binutilsパッケージが存在しないため、これらをインストールします。これらがないと、エクスプロイト用のpythonスクリプトをコンパイルする際にエラーが発生します。
次のコマンドを使用します:
$ sudo apt install git
$ sudo apt install binutils
脆弱性があるかどうかを確認します
$ env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help
Segmentation fault (core dumped)と出力されれば、脆弱性があります。
動的リンカー/ローダーのバージョンを確認します。これはしばしばGNU C Library (glibc) に関連付けられています。
$ ldd --version
出力からGLIBCのバージョンがわかります
ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
これで、このマシンが脆弱であり、root権限を昇格する準備ができたことがわかりました。
注: このマシンにgccをインストールしないでください。インストールすると脆弱性が失われ、スクリプトが機能しなくなります。
gccがインストールされていないため、Cプログラムをホストマシンでコンパイルし、それをゲストマシンにインポートする必要があります。
このコマンドでCプログラムをコンパイルできます。
$ gcc exploit.c -o (outputname)
Cプログラムの出力ファイルをインポートしたら、pythonスクリプト(genlib.py)もインポートします。
次に、pythonスクリプトをコンパイルします
$ python3 genlib.py
コンパイルすると、'"' フォルダが作成されます。
ユーザーがスクリプトとプログラムを実行できるように、これを/tmpフォルダ内で行います。
最後に、プログラムを実行してroot権限を昇格します
$ ./(nameoftheprogram)
時間はかかりますが、rootシェルが取得できます。
悪用ではなく、強化のために!
参照: