glibc Vulnerability Puts Millions of Linux Systems at Risk of Code Execution
2025/05/19 SecurityOnline — 数多くの Linux アプリケーションにおいて、基本コンポーネントとして活用される GNU C Library (glibc) で、新たな脆弱性が報告された。この脆弱性が示すのは、静的 setuid バイナリの共有ライブラリ読込みメカニズムに存在する、潜在的に悪用が可能な欠陥の詳細である。この脆弱性 CVE-2025-4802 は、静的 setuid バイナリが dlopen() を介して動的ライブラリを呼び出す際に、LD_LIBRARY_PATH 環境変数を不適切に使用することに起因する。

GNU C Library (glibc) は、GNU プロジェクトだけではなく、ほぼ全ての主要 Linux ディストリビューションで使用される標準 C ライブラリである。オペレーティング・システムのカーネルと、ユーザー・プログラム・エリアとの間のブリッジとして機能し、入出力処理/メモリ割当/ネットワーク通信などの、基本的な機能を実現している。
glibc は、主に動的リンク・バイナリで使用されるが、静的リンク実行ファイルもサポートしている。具体的に言うと、コンパイル時に必要な全ライブラリを取り込む、自己完結型プログラムなどが該当する 。
この脆弱性は、静的 setuid バイナリと動的ローダーの相互作用に存在する。このアドバイザリには、「静的にリンクされた setuid バイナリが、dlopen を介して動的ライブラリを呼び出す場合に、LD_LIBRARY_PATH を誤って検索し、ライブラリのロードを決定することで、攻撃者が制御するライブラリ・コード実行の可能性が生じる。動的ライブラリの呼出しについて補足すると、setlocale 後の内部 dlopen 呼び出しや、getaddrinfo などの NSS 関数の呼び出しなどがある」と記されている。
通常において、LD_LIBRARY_PATH などの環境変数は、setuid が付与された特権バイナリでは、セキュリティ・リスクを排除するために無視される。しかし、脆弱性 CVE-2025-4802 により、この前提が覆ってしまう。脆弱な setuid バイナリが存在する状況で、ダイレクトな呼び出し、もしくは、一般的な libc 依存関数を介した dlopen() の呼び出しが行われると、悪意のユーザーに任意のコード挿入を許すことになる。
このリスクは、以下の要件を満たす必要があるため、ローカル/状況依存型に分類される:
- システム上に静的にリンクされた setuid バイナリが存在すること。
- そのバイナリは、手動または間接的な libc/NSS 呼び出しを通じて、dlopen() を呼び出す必要がある。
- 標的環境には、ユーザーによる LD_LIBRARY_PATH 設定が可能という必要性がある。
このアドバイザリは、「本アドバイザリの公開時点において、そのような悪意のプログラムは発見されていない。カスタム setuid プログラムの存在は、セキュリティの観点から推奨されず、また、無視できないものである」と述べている。
そのため、このバグの発生確率は低いとされるが、レガシーな環境や、カスタム・ビルドの静的バイナリを使用している環境では、影響度の高い脆弱性となる。
システム管理者および Linux ディストリビューターは、以下の対策を講じる必要がある:
- カスタム・ビルドを保守している場合には、glibc のバージョン 2.39 へのアップデートもしくは、手動によるパッチ適用の必要がある。
- 静的 setuid バイナリを監査し、可能な場合は削除する。もしくは、動的リンクを用いて再コンパイルする。
Linux システムで広く使用されている GNU C Library (glibc) に、コード実行の脆弱性が発生しています。開発者の皆さんは、十分にご注意ください。よろしければ、glibc 検索も、ご参照ください。
You must be logged in to post a comment.