AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

copyfailの

root の情報が失われた環境で権限昇格できる既報のやつ。

結局、ウェブアプリの脆弱性や SSH 情報の漏洩でローカルユーザー (シェル) を奪えないと話が始まらないので CVSS はそこまででもない……? と思っていたのですが、乗られたら大体おわりだし、まあねという気もするしう〜ん。

現代のカーネル

概ねパッケージマネージャーから kernel 更新してシステム全体を reboot すれば大丈夫。

sudo dnf update kernel && sudo reboot

AlmaLinux

RHEL から修正がこねえ〜! とのことで、当時バチバチで独自に Kernel ロールバックしたパッチが全体配布始まっていた。

almalinux.org

こういうの見てると Alma に引っ越したほうがいいのかなあ、という気持ちがちょっと出てくる。 (普段は Rocky を使っている)

その他の対策

メモリ上のコマンドを書き換えて su できてしまう (原理的にメモリ上に存在すればどんなコマンドも書き換えれる?) という話なので、入口になっている algif を封じるということらしい。

modinfo algif_aead を実行して、filename: (builtin) が出ればカーネル組み込み、/../../../.. .. algif_aead.ko のようにパスが出ればモジュール適応らしい。

モジュール適応の場合は、以下のように rmmod を使うことで無効化できる

algif モジュールを封じる

echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead

この結果 Module algif_aead is builtin と出ると、封印がうまくいっていないらしい (=カーネル組み込みのはずなので、 modinfo で改めて確認する)。

rmmod の実行時結果を /dev/null に送るか送らないかは人によるので、とりあえず送らないようにしている。

Module algif_aead is builtin カーネル組み込みの場合

algif が封印できない環境として、RHEL 一族 (Fedora, CentOS, 互換ディストリ) がいるらしい。

これらは前述のカーネル組み込み型らしく、rmmod では無効化できず素直にカーネル修正を適用するか、ブートーローダーで無効化するしかないらしい。

sudo grubby --update-kernel=ALL --args=initcall_blacklist=algif_aead_init
sudo reboot

github.com

grubby が存在しない環境の場合は、直接編集してリブートしろとのことだった。 調べただけなんだけど、直接 grub いじるのは怖いよなあ、という具合なので、面倒でも grubby いれた方がよさそうだし、それできるなら素直にカーネルアップデートした方がいい。

sudo vi /etc/default/grub 

# GRUB_CMDLINE_LINUX_DEFAULT 行に initcall_blacklist=algif_aead_init を追加

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot

どうしても再起動できない場合

kernel 5.8 以上なら、 eBPF とかいうヤツで防げるらしいけど、使ったこと無いので書くだけ書いておく、という具合で。

github.com

RedHat

自分向けのまとめでこれを書いている最中に RedHat でナレッジと Errata が出来ているのを発見した。

ナレッジ

access.redhat.com

対応としては概ね前述の通り。

Errata

https://access.redhat.com/errata/RHSA-2026:13566access.redhat.com

8, 9, 10 とメンテナンス中のバージョンは全部 algif の巻き戻し修正が降ってきている模様。

 kernel: crypto: algif_aead - Revert to operating out-of-place (CVE-2026-31431)

素直に当てるのがいいすね。

参考

qiita.com

www.walbrix.co.jp

zenn.dev