RSS Google オンライン セキュリティ ブログ

ベアメタル・ファームウェア向けのAddress Sanitizer

Follow
Android ファームウェアは、Android ユーザースペースとカーネルと比較して、検査が少ないため攻撃を受ける可能性が高くなっています。Kernel Address Sanitizer (KASAN) は、ランタイム中の無効なメモリー アクセス操作を特定することで、ファームウェアの脆弱性を事前に検出するツールです。KASAN は、広範囲のファームウェア ターゲットに対応し、ヒープ メモリーとスタック メモリーの両方に適用できます。 ベアメタル ファームウェアに対して KASAN を有効にするには、メモリー アクセス操作の検証とシャドウ メモリーの管理を行うためのカスタム ランタイムを実装する必要があります。シャドウ メモリーは、KASAN によってカバーされるメモリー領域の状態を追跡する専用のメモリー領域です。各バイトが 8 バイトのメモリー領域に対応し、その状態を符号化します。 KASAN ランタイムには、メモリー アクセス チェックの実行、シャドウ メモリーの管理、ヒープ メモリー割り当てルーチンのフックが含まれます。これらの関数でメモリー アクセス操作をインストルメント化することで、KASAN はメモリー破損の脆弱性、境界外メモリー アクセス、free 後の使用、ダブル/無効 free、リターン後の使用などを検出できます。 noreturn 関数に対する誤検出を避けるために、__asan_handle_no_return ルーチンが使用され、スタック 変数周りのレッドゾーンを削除します。KASAN は、コンパイル時の特定のコンパイラーオプションを使用することで、ヒープ、スタック、グローバル変数に対して有効化できます。 QEMU システム エミュレータを使用してベアメタル ターゲットに対する KASAN の実装をデモンストレーションする小さなプロジェクトが提供されています。この実装は、技術的な詳細のリファレンスとして使用できます。 KASAN は、ファームウェア ターゲットの 40 以上のメモリー セキュリティ バグと脆弱性を事前に発見し、修正することに貢献しました。デバイスのセキュリティを大幅に向上させるために、ファームウェア開発で KASAN を活用することができます。
favicon
security.googleblog.com
Address Sanitizer for Bare-metal Firmware
Create attached notes ...