Ubuntu でロックダウン保護を無効にして UEFI セキュア ブートをリモートでバイパスする方法

Googleのアンドレイ・コノバロフ опубликовал リモートで保護を無効にする方法 ロックダウンUbuntu に同梱される Linux カーネル パッケージで提供されます (理論的に推奨される技術) 持っている Fedora および他のディストリビューションのカーネルで動作しますが、テストされていません)。

ロックダウンは、root ユーザーのカーネルへのアクセスを制限し、UEFI セキュア ブート バイパス パスをブロックします。 たとえば、ロックダウン モードでは、/dev/mem、/dev/kmem、/dev/port、/proc/kcore、debugfs、kprobes デバッグ モード、mmiotrace、tracefs、BPF、PCMCIA CIS (カード情報構造) などにアクセスします。インターフェイスは制限されています CPU の ACPI および MSR レジスタ、kexec_file および kexec_load への呼び出しはブロックされます、スリープ モードは禁止されています、PCI デバイスの DMA 使用は制限されています、EFI 変数からの ACPI コードのインポートは禁止されています、I/O ポートによる操作は禁止されていますシリアルポートの割り込み番号と I/O ポートの変更を含む、許可されます。

ロックダウン メカニズムが最近メインの Linux カーネルに追加されました 5.4ですが、ディストリビューションで提供されるカーネルでは、依然としてパッチの形で実装されるか、パッチで補足されます。 配布キットで提供されるアドオンとカーネルに組み込まれた実装の違いの XNUMX つは、システムに物理的にアクセスできる場合に、提供されているロックを無効にできる機能です。

Ubuntu と Fedora では、ロックダウンを無効にするためのキーの組み合わせ Alt+SysRq+X が提供されています。 Alt+SysRq+X の組み合わせは、デバイスへの物理的なアクセスでのみ使用できることが理解されており、リモート ハッキングしてルート アクセスを取得した場合、攻撃者はロックダウンを無効にして、たとえば、カーネルにデジタル署名されていないルートキットを含むモジュール。

アンドレイ・コノバロフは、ユーザーの物理的な存在を確認するためのキーボードベースの方法は効果がないことを示しました。 ロックダウンを無効にする最も簡単な方法は、プログラムで次のことを行うことです。 シミュレーション /dev/uinput 経由で Alt+SysRq+X を押しますが、このオプションは最初はブロックされています。 同時に、Alt+SysRq+X の置換方法を少なくとも XNUMX つ特定することができました。

最初の方法では、「sysrq-trigger」インターフェイスを使用します。これをシミュレートするには、/proc/sys/kernel/sysrq に「1」を書き込んでこのインターフェイスを有効にし、次に /proc/sysrq-trigger に「x」を書き込みます。 その抜け穴 排除された /dev/uinput の場合と同様に、開発者が最初に しようとした このメソッドをブロックしますが、次の理由でブロックが機能しませんでした。 エラー コードで。

XNUMX 番目の方法では、キーボード エミュレーションを使用します。 USB/IP 次に、仮想キーボードから Alt+SysRq+X のシーケンスを送信します。 Ubuntu に同梱されている USB/IP カーネルはデフォルトで有効になっており (CONFIG_USBIP_VHCI_HCD=m および CONFIG_USBIP_CORE=m)、動作に必要なデジタル署名された usbip_core および vhci_hcd モジュールを提供します。 攻撃者ができることは、 作成する 仮想USBデバイス、 実行することにより ループバック インターフェイス上のネットワーク ハンドラーを設定し、USB/IP を使用してリモート USB デバイスとして接続します。 指定方法について 報告 Ubuntu 開発者向けに提供されていますが、修正はまだリリースされていません。

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

コメントを追加します