
AppArmorは、Linux Security Modulesの一種です。
任意のプログラムに対して、意図しないファイルやデバイスのアクセスを阻害したり、サブプロセスに対するセキュリティ制約をかけたりすることによって、この機構が有効であるLinuxシステムの堅牢さを向上させます。
ubuntuではバージョン23.10でAppArmorベースの制限を追加し、バージョン24.04で名前空間の誤用リスクを制限するためにデフォルトで有効にしました。
これはubuntuのセキュリティ向上に貢献するものとなっていますが、最近このAppArmorの現在の実装ではカバーしきれない話が確認されています。
- aa-execによるバイパス
AppArmorのプロファイルの中には、aa-execというプログラムを実行できるツールを含んでいるものがあります。
このツールと他のツールとを組み合わせて使用することで、権限のないユーザが名前空間の制限をバイパスし、名前空間内の権限を増やすことができてしまいます。 - busyboxによるバイパス
ubuntuの配布物にはbusyboxが含まれています。
脅威アクターはこのbusybox経由でshellを起動し、そのshellのなかでunshareコマンドを実行することで、完全な管理機能を備えたユーザ名前空間を正常に作成できてしまいます。 - LD_PRELOADによるバイパス
LD_PRELOADはプログラム実行時にライブラリをダイナミックにリンク読み込みする機構で使われる環境変数です。
脅威アクターは この環境変数を悪用することで、緩めなAppArmorプロファイルを割りあてられたプログラムにshellを挿入します。
この操作により脅威アクターはそのプロセス内から特権名前空間を起動し、意図された制限をバイパスできてしまいます。
これらの使い方はAppArmorの意図した使い方ではありません。
このため、見る人によってはこれらの事象は脆弱性であると感じるものとなっています。
しかし、現時点ではubuntuとしての見解では、これらは脆弱性とは認識されておらず、多層防御メカニズムの限界と考えられています。
このことが関係し、これらのバイパスに関連する対策の提供は、緊急扱いで進む予定になっておらず、標準のバージョンリリースの中の一部に含められる形で進む予定になっています。
このため、利用者は直接的な対策をすぐに適用することは現時点ではできません。
代わりとして、いくつかの設定変更で対策をしておくことが紹介されています。
- 権限のない制限のないプロファイルの変更を制限する
aa-execの悪用をブロックするには、kernel.apparmor_restrict_unprivileged_unconfined=1のように有効にします。
この設定はデフォルトでは有効になっていません。 - 広範囲のAppArmorプロファイルを削除する
見方によっては緩い制限となってしまうプロファイルの割り当てを削除します。
実施には、名前空間の作成を許可する、busyboxおよびNautilusの広範なAppArmorプロファイルを無効にする設定を実施します。 - bwrapプロファイルを定義する
このプロファイルを設定することでNautilusを意図したとおりに機能し続けさせることができますが、この方法には注意も必要です。
Nautilusを管理権限で使用すると高い権限で動作してしまうことになるのです。
このため、この方法での対策は手放しに実施できるものではありません。
これらのいくつかの対策により、前述の3つのバイパスのうちの2つには対策することができます。
しかし、いずれも対処療法であり、根本的な対策とはなりません。
いつの日にか、これらに対策できた状態のubuntuがリリースされることになると思いますが、これらは脆弱性として認識されていませんので、現在のリリース済みのubuntuへの機能のバックポートは実施されるかわかりません。
新しいバージョンがリリースされた際には、こういった新たな更新を入手するために利用環境のubuntuのバージョンそのものを新しくする必要があるということになるかもしれません。
新しいリリースが出た際にしばらく様子を見る人も一定数いるように思いますが、そういった様子見期間の長さが対策の適用の遅れとならないか心配です。
Understanding AppArmor User Namespace Restriction
https://discourse.ubuntu.com/t/understanding-apparmor-user-namespace-restriction/58007
この記事をシェア |
---|