
CM4all(ドイツのウェブホスティング会社)の開発者マックス・ケラーマン氏は、2022年初頭にこの問題を発見しましたが、脆弱性を探していたわけではありません。彼は、顧客がサーバーのログが自然に破損していることに不満を抱いていることを知り、デバッグを行っていました。 ケラーマン氏はその追跡に数か月を費やしました。彼の作業は最終的に、Linuxカーネルがパイプとページキャッシュを処理する方法の深い部分にある条件に行き着きました。彼はログ破損を説明するために見つけたバグが、実際にははるかに深刻なもの、つまり完全な権限昇格の脆弱性(完全な権限昇格の脆弱性とは、標準ユーザー、ゲスト、または非特権アプリケーションなどの低レベルのアクセス権を持つ攻撃者が、システムに対して管理、スーパーユーザー、またはルートレベルの制御を取得できるようにする重大なセキュリティ上の欠陥です。つまり、攻撃者はすべての意図されたセキュリティ境界をバイパスし、システムファイルの変更、ソフトウェアのインストール、データの盗難、ファイルの削除などを完全に制御できるようになります)であることに気づきました。 彼は責任を持ってLinuxカーネルチームとリーナス・トーバルズ本人に開示しました。数日以内にパッチが適用されました。 実際の問題は、splice()がデータをパイプに転送するとき、宛先バッファでこのフラグをクリアするのを忘れていたことです。そのため、スプライスされたページ(読み取り専用のファイルのページキャッシュを直接指している)には、依然としてCAN_MERGEが設定されていました。 そのパイプに書き込むと、カーネルはCAN_MERGEを確認し、そのページが書き込み可能であると想定し、許可チェックなしにデータをページキャッシュ(ファイルのメモリ内コンテンツ)に直接マージします。 結果:読み取り可能な任意のファイルの内容を上書きできます。これには、su、passwd、sudoなどのSUID(set user ID)ルートバイナリも含まれます。 なぜこのバグはそれほど重要だったのか いくつかの理由: