件名: ASLRn't は x86 カーネルに依然として存在する。CVE-2024-26621 のパッチが適用されているにもかかわらず 送信者: Steffen Nurpmeso 受信者: oss-security@openssf.lists.openwall.com - 内容: - 脆弱性の主要情報: - 実行可能ファイルの多くは root による書き込みのみ許可されているが、一般ユーザーから実行可能。 - MAP_DENYWRITE の目的は、実行中のプロセス下で実行可能ファイルが変更されないことを確保することにあるようだ。 - 一般ユーザーが MAP_DENYWRITE が有効な状態でファイルをマップした場合、DoS(サービス運用妨害)問題を引き起こす可能性がある。 - いくつかのファイルが見つかった。これらのファイルは root のみが書き込み権限を持つが、筆者はこれらに影響を与えるために MAP_DENYWRITE を使用できる可能性があると考えている(筆者自身がファイルを変更した場合)。 - Linux における強制ロックやロックファイルについて再検討する必要がある。lslocks(1) や /proc/locks によると、PID 1130 がロックを保持していることが示されているが、権限の競合により「i」では確認できない。 - 筆者は、最終的に /proc や /sys のどこにも該当する情報がないことを指摘している。 - キャパビリティ(能力)がより細粒度になっている。 - 筆者は、Linux で実行中の実行可能ファイルの更新されたバージョンに置き換える際に常に困難を感じている。BSD では単純な名前変更で対応可能だが、なぜ実行パスの一部としてどちらか一方だけが使用できるのかは不明である。 - 簡潔な解決策: - 一時ファイル名を使用して新しい実行可能ファイルを書き込む。 - link(2) を使用して既存の実行可能ファイルに対して新しい名前を作成する。 - rename(2) を使用して既存の実行可能ファイルとアトミックに置き換える。 - 必要なすべてのチェック後に unlink(2) を使用して旧バージョンを削除する。 - 旧実行可能ファイルのバックアップを残したくない場合は、link(2) と unlink(2) を省略できる。この方法では、実行可能ファイルの inode 番号が変更される(すなわち、それは実際には異なるファイルである)。最後に使用されていた名前が削除されていても、まだ使用中であれば、旧バージョンはディスク上に残る可能性がある。