Snap Package Management Toolkit のルートの脆弱性

Qualys は、snap-confine ユーティリティで今年 2022 番目の危険な脆弱性 (CVE-3328-2.57.6) を特定しました。このユーティリティは SUID ルート フラグを伴い、自己完結型パッケージで配布されるアプリケーションの実行可能環境を作成するために snapd プロセスによって呼び出されます。スナップ形式で。 この脆弱性により、ローカルの特権のないユーザーがデフォルトの Ubuntu 構成で root としてコードを実行できるようになります。 この問題は、snapd XNUMX リリースで修正されました。 パッケージの更新は、サポートされている Ubuntu のすべてのブランチに対してリリースされました。

興味深いことに、問題の脆弱性は、snap-confine の同様の 22.04 月の脆弱性を修正するプロセス中に導入されました。 研究者は、Ubuntu Server 2022 への root アクセスを提供する実用的なエクスプロイトを準備することができました。これには、snap-confine の脆弱性に加えて、multipathd プロセスの 41974 つの脆弱性 (CVE-2022-41973、CVE-XNUMX-XNUMX) も含まれています。 、特権コマンドの送信時の権限チェックのバイパスや、シンボリック リンクを使用した安全でない作業に関連します。

snap-confine の脆弱性は、must_mkdir_and_open_with_perms() 関数の競合状態によって引き起こされます。この関数は、所有者を確認した後、マウント システムを呼び出す前に、/tmp/snap.$SNAP_NAME ディレクトリがシンボリック リンクで置換されることを防ぐために追加されました。を呼び出して、スナップ形式のパッケージのディレクトリをバインドマウントします。 追加された保護は、/tmp/snap.$SNAP_NAME ディレクトリが存在し、root によって所有されていない場合、そのディレクトリの名前を /tmp 内の別のランダムな名前のディレクトリに変更することでした。

/tmp/snap.$SNAP_NAME ディレクトリの名前変更操作を利用する際、研究者らは、snap-confine が snap パッケージのコンテンツのルートに /tmp/snap.rootfs_XXXXXX ディレクトリも作成するという事実を利用しました。 名前の「XXXXXX」部分は mkdtemp() によってランダムに選択されますが、「rootfs_XXXXXX」という名前のパッケージは sc_instance_name_validate 関数で検証できます (つまり、$SNAP_NAME が「rootfs_XXXXXX」に設定されてから名前変更操作が実行されるという考えです) /tmp/snap.rootfs_XXXXXX ディレクトリがルート スナップで上書きされます)。

/tmp/snap.rootfs_XXXXXX の使用と /tmp/snap.$SNAP_NAME の名前変更を同時に行うために、snap-confine の XNUMX つのインスタンスが起動されました。 最初のインスタンスが /tmp/snap.rootfs_XXXXXX を作成すると、プロセスがブロックされ、XNUMX 番目のインスタンスが rootfs_XXXXXX というパッケージ名で開始され、XNUMX 番目のインスタンスの一時ディレクトリ /tmp/snap.$SNAP_NAME がルート ディレクトリ /tmp/snap になります。最初の.rootfs_XXXXXX。 名前変更が完了した直後、XNUMX 番目のインスタンスがクラッシュし、XNUMX 月の脆弱性を悪用したときと同様に、/tmp/snap.rootfs_XXXXXX が競合状態操作に置き換えられました。 置換後、最初のインスタンスから実行ロックが削除され、攻撃者はスナップ ルート ディレクトリを完全に制御できるようになりました。

最後のステップはシンボリックリンク /tmp/snap.rootfs_XXXXXX/tmp を作成することでした。これは sc_bootstrap_mount_namespace() 関数によって使用され、mount() 呼び出し以来、書き込み可能な実ディレクトリ /tmp をファイル システム内の任意のディレクトリにバインドマウントします。マウントする前にシンボリックリンクをたどります。 このようなマウントは AppArmor の制限によってブロックされますが、このブロックを回避するために、このエクスプロイトは multipathd の XNUMX つの補助的な脆弱性を利用しました。

出所: オープンネット.ru

コメントを追加します