6月1日、Phoronixが「Linux 7.2 Proceeding To Deprecate AF_ALG Due To "Massive Attack Surface", Drops Offloading」と題した記事を公開した。
Linuxカーネルの暗号化インターフェースAF_ALGが廃止検討へ
LinuxカーネルのAF_ALG(Address Family ALGorithm)インターフェースが、セキュリティ上の深刻な懸念により廃止が検討されている。AF_ALGは2010年頃に導入された仕組みで、ユーザー空間のアプリケーションがLinuxカーネルの内蔵暗号化エンジンに直接アクセスできるソケットAPIを提供している。
廃止検討の背景には、「大規模な攻撃面」の存在と、近年の自動化された脆弱性発見ツールの進歩がある。Eric Biggersがカーネルの暗号化サブシステム「cryptodev」ツリーに投稿したパッチでは、廃止の理由について以下のように説明している。
廃止の主な理由として、AF_ALGが「ほぼ完全に不要」であり、「現代の脆弱性発見ツールに耐えられない大規模な攻撃面を公開している」点が挙げられている。開発者は「この機能に費やされている労力は、実際に使用している少数のプログラムと比べて非常に不釣り合い」だとし、それらのプログラムも「ユーザー空間のコードでより良いサービスを受けられる」と述べている。
ゼロコピーサポートとハードウェアオフロードも削除対象
AF_ALGの機能縮小は段階的に進められており、まずゼロコピーサポートがセキュリティ上の懸念により削除される予定だ。ゼロコピーは、データをコピーすることなく直接メモリ間で転送する高速化技術だが、権限境界を越えたアクセスのリスクが問題視されている。
さらに、別のパッチにより、AF_ALGからハードウェア暗号化アクセラレーター(オフロード機能)のサポートも削除されることが決定した。開発者は以下のように説明している:
AF_ALGは廃止予定であり、特権のないユーザー空間に公開されている。最もバグの少ないアルゴリズム実装のみを使用する:純粋なソフトウェアのもの。
これによりAF_ALGの主要な利点の一つであるオフCPUアクセラレーターを使用する能力が削除される。しかし、オフCPUアクセラレーターの使用は、パフォーマンスと攻撃面の両方において巨大なオーバーヘッドを持っている。
開発者は、ハードウェアアクセラレーターが本当に必要な場合は、AF_ALGに代わる新しい専用APIを開発すべきだとしている。
AF_ALGとは何か:技術的背景
AF_ALGは、LinuxカーネルのCrypto APIをユーザー空間から利用するためのソケットインターフェースだ。通常、アプリケーションが暗号化を行う場合はOpenSSLなどのユーザー空間ライブラリを使用するが、AF_ALGを使うことでカーネル内の暗号化機能やハードウェアアクセラレーターを直接利用できる。
理論上はパフォーマンス向上が期待できるが、実際には以下の問題が指摘されていた:
- カーネル-ユーザー空間間の通信オーバーヘッド
- 複雑な権限管理とセキュリティモデル
- 限定的な利用実績(主要なアプリケーションでの採用が少ない)
- 大きな攻撃面(カーネル内のバグが権限昇格に直結)
自動化時代のセキュリティ課題
今回の決定は、現代のソフトウェア開発における新たなセキュリティ課題を反映している。従来は手動での監査やファジングで発見されていた脆弱性が、機械学習ベースのツールやLLMを活用した自動化により、より高速かつ大量に発見されるようになっている。
この変化により、攻撃面の大きいコンポーネントの維持コストが急激に増大しており、利用価値に対してセキュリティリスクが見合わない機能の廃止が加速している。LinuxカーネルのようなOSS開発では、限られたメンテナーリソースの中で優先順位をつける必要があり、AF_ALGのようなニッチな機能は廃止の対象になりやすい。
今後の展望
開発者コミュニティでは、AF_ALGの代替手段について議論が続いている。ハードウェア暗号化の需要は引き続き存在するため、よりセキュアで保守性の高い新しいAPIの設計が求められている。
io_uringのような最新のカーネルAPIでは、設計段階からセキュリティが重視されており、AF_ALGの後継となる暗号化APIでも同様のアプローチが採用される可能性が高い。
詳細はLinux 7.2 Proceeding To Deprecate AF_ALG Due To "Massive Attack Surface", Drops Offloadingを参照していただきたい。