Ubuntu

バージョン21.04以降のUbuntu Linuxでデフォルトで使用されているneedrestartユーティリティに、10年以上前に導入されたローカル特権昇格(LPE)の脆弱性5件が発見された。

これらの欠陥はQualys社によって発見され、CVE-2024-48990、CVE-2024-48991、CVE-2024-48992、CVE-2024-10224、CVE-2024-11003として追跡されている。これらは2014年4月にリリースされたneedrestartバージョン0.8で導入され、昨日バージョン3.8で修正されたばかりです。

needrestartは、Ubuntu Serverを含むLinuxで一般的に使用されているユーティリティで、パッケージ更新後に再起動が必要なサービスを特定し、それらのサービスが共有ライブラリの最新バージョンを実行するようにします。

LPEの欠陥の概要

Qualysが発見した5つの欠陥は、脆弱なLinuxシステムにローカルアクセスできる攻撃者が、ユーザーの操作なしに権限をrootに昇格させることを可能にします。

欠陥に関する完全な情報は別のテキストファイルで公開されていますが、要約は以下の通りです:

  • CVE-2024-48990:Needrestart は、実行中のプロセスから抽出した PYTHONPATH 環境変数を使って Python インタープリタを実行します。ローカルの攻撃者がこの変数をコントロールすると、 Python の初期化中に悪意のある共有ライブラリを仕込むことで root として任意のコードを実行できてしまいます。
  • CVE-2024-48992: needrestart が使用する Ruby インタープリタに、攻撃者が制御する RUBYLIB 環境変数を処理する脆弱性が存在します。これにより、ローカル攻撃者が悪意のあるライブラリをプロセスに注入することで、 root として任意の Ruby コードを実行できてしまいます。
  • cve-2024-48991:needrestart のレースコンディションにより、ローカルの攻撃者が検証中の Python インタプリタのバイナリを悪意のある実行ファイルに置き換えることが可能になります。置き換えのタイミングを注意深く計ることで、 needrestart を騙して root としてコードを実行させることができます。
  • cve-2024-10224:needrestart が使用する Perl の ScanDeps モジュールは、 攻撃者が提供するファイル名の処理が不適切です。攻撃者は、シェルコマンド (例: command|) に似たファイル名を細工することで、 ファイルを開いた際に root として任意のコマンドを実行することができます。
  • cve-2024-11003:Needrestart が Perl の ScanDeps モジュールに依存しているため、 ScanDeps 自体に脆弱性があり、eval() 関数の安全でない使用により、 攻撃者が制御した入力を処理する際に任意のコードを実行される可能性があります。

これらの欠陥を悪用するためには、攻撃者がマルウェアや侵害されたアカウントを通じてオペレーティング・システムにローカル・アクセスする必要があり、リスクがいくらか軽減されることに注意することが重要である。

しかし、攻撃者は過去にも、Loony Tunablesや nf_tablesのバグを悪用したものなど、同様のLinuxの特権昇格脆弱性を悪用してrootを取得しているため、ローカルアクセスが必要だからといって、この新しい欠陥を否定すべきではない。

needrestart が広く使われていること、そして脆弱性が存在する期間が非常に長いことから、上記の欠陥は、重要なシステム上で特権昇格の機会を生み出す可能性があります。

特定された脆弱性すべてに対応するパッチが含まれているバージョン 3.8 以降にアップグレードする以外に、needrestart.conf ファイルを修正してインタープリタ・スキャン機能を無効にし、脆弱性が悪用されるのを防ぐことが推奨されます。


$nrconf{interpscan} = 0. # インタプリタ・スキャナを無効にする;

これでneedrestartは、攻撃者が制御する可能性のある環境変数を持つインタプリタを実行しなくなるはずです。