これまで正常に動作していたものが突然動かなくなるというのはWindowsに限ったものではなくなるかもしれません。Microsoftが提出したパッチによって、Linuxカーネルの一部が正常に動作しなくなり、IntelやAMDの開発者が撤回を求めるという事態が発生していたことがわかりました(Neowin)。
問題となった変更は、ARCH_HAS_EXECMEM_ROXカーネルコンフィギュレーションに関するもので、実行メモリ(EXECMEM)のキャッシュを読み取り専用実行(ROX)パーミッションで可能にするものです。
Linux 6.13のx86_64/AMD64アーキテクチャ、すなわち64ビットのAMDおよびIntel CPUを搭載したシステムのパフォーマンス改善を目的したものですが、x86カーネルのメンテナからの承認(Ack)は得られておらず、CPUのCFI(Control Flow Integrity)を破壊してしまった模様。
IntelのPeter Zijlstra氏は、EXECMEM_ROXに関する変更を緊急に戻すようコメントしています。
x86: Disable EXECMEM_ROX support
The whole module_writable_address() nonsense made a giant mess of alternative.c, not to mention it still contains bugs -- notable some of the CFI variants crash and burn.
Mike has been working on patches to clean all this up again, but given the current state of things, this stuff just isn't ready.
Disable for now, lets try again next cycle.
x86:EXECMEM_ROXサポートを無効化
module_writable_address()の無意味さはalternative.cを大混乱に陥れた。
Mikeは、これらすべてを再びクリーンアップするためのパッチに取り組んでいるが、現状を考えると、このようなものはまだ準備ができていない。
今は無効にして、次のサイクルで再挑戦しよう。
またAMDのBorislav Petkov氏も、この件に関して苛立ちを表明しています。
I just love it how this went in without a single x86 maintainer Ack, it broke a bunch of things and then it is still there instead of getting reverted. Let's not do this again please.
x86のメンテナーが一人もいないなんて、素晴らしいことだ。もうこんなことはやめよう。
Control Flow Integrity(CFI) は、プログラムの実行フローを保護するためのコンピュータセキュリティ技術で、コードポインタの分離(CPS)、コードポインタの整合性(CPI)、スタックカナリア、シャドウスタック、vtableポインタの検証などの技術が含まれます。
プログラムのセキュリティを強化し、マルウェア攻撃からシステムを守るための重要な手段です。