AL2023 カーネル強化
AL2023 の 6.1 Linux カーネルは、いくつかの強化オプションと機能を使用して設定および構築されています。
カーネル強化オプション (アーキテクチャに依存していません)
ACPI メソッドをランタイムに挿入/置換できるようにする (CONFIG_ACPI_CUSTOM_METHOD)
Amazon Linux では、root ユーザーが任意のカーネルメモリに書き込むことができるため、このオプションは無効になっています。
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
その他のバイナリフォーマット (binfmt_misc)
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
BUG() サポート
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
カーネルメモリ構造の有効性をチェックしているときに、カーネルがデータ破損に遭遇した場合の BUG()
Linux カーネルの一部は、データ構造の内部整合性をチェックし、データ破損を検出した場合は BUG() できます。
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
COMPAT_BRK
このオプションを無効にすると (Amazon Linux がカーネルを設定する方法)、randomize_va_space sysctl 設定はデフォルトで 2 になり、mmap ベース、スタック、VDSO ページのランダム化に加えてヒープのランダム化も有効になります。
1996 年以前の古い libc.so.5 バイナリとの互換性を保つため、このオプションはカーネルに組み込まれています。
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
COMPAT_VDSO
この設定オプションは x86-64 に関連しますが、aarch64 とは関係ありません。これを n に設定すると、Amazon Linux カーネルは 32 ビットの仮想化動的共有オブジェクト (VDSO) を予測可能なアドレスに表示しなくなります。このオプションを n に設定したことで障害が発生することがわかっている最新の glibc は 2004 年の glibc 2.3.3です。
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
CONFIG_DEBUG ゲートの強化
CONFIG_DEBUG ゲートの Linux カーネル設定オプションは通常、デバッグ用の問題を想定して構築されたカーネルで使用するように設計されており、パフォーマンスなどは優先されません。AL2023 はCONFIG_DEBUG_LIST 強化オプションを有効にします。
IOMMU を設定する前に EFI スタブで PCI デバイスの DMA を無効にする
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
カーネルとユーザースペース間のメモリーコピーの の強化
カーネルがユーザーすペースにメモリーをコピーしたり、ユーザー空間からメモリーをコピーしたりする必要がある場合、このオプションはいくつかのチェックを有効にすることで、ある種のヒープオーバーフローの問題を防ぐことができます。
CONFIG_HARDENED_USERCOPY_FALLBACK オプションはカーネル 4.16 から 5.15 までにあって、カーネルデベロッパーが不足している許可リストエントリを WARN() 経由で見つけやすくするためのものです。AL2023 には 6.1 カーネルが含まれているため、このオプションは AL2023 には関係ありません。
CONFIG_HARDENED_USERCOPY_PAGESPAN オプションは主にデベロッパー向けのデバッグオプションとしてカーネルに存在していましたが、AL2023 の 6.1 カーネルには適用されなくなりました。
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
休止のサポート
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
乱数生成
AL2023 カーネルは、EC2 内で適切なエントロピーが使用できるように設定されています。
CONFIG_INET_DIAG
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
割り当て時と割り当て解除時に、カーネルページとスラブアロケータのすべてのメモリをゼロにする
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定CONFIG_INIT_ON_ALLOC_DEFAULT_ONinit_on_alloc=1 動作はカーネルコマンドラインに追加することで有効にでき、CONFIG_INIT_ON_FREE_DEFAULT_ON 動作は init_on_free=1 に追加することで有効にできます。
すべてのスタック変数をゼロ (CONFIG_INIT_STACK_ALL_ZERO) に初期化する
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
カーネルモジュール署名
AL2023 はカーネルモジュールの署名および署名の検証を行います。サードパーティモジュールを構築するユーザーの互換性を保つため、モジュールに有効な署名を要求する CONFIG_MODULE_SIG_FORCE オプションは有効化されていません。すべてのカーネルモジュールが署名されていることを確認したいユーザは、これを強制するように Linux セキュリティモジュール (LSM) の ロックダウン を設定できます。
kexec
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定kdump 機能を使用できるように有効になっています。
IOMMU サポート
AL2023 は IOMMU サポートを有効にします。CONFIG_IOMMU_DEFAULT_DMA_STRICT オプションはデフォルトでは有効になっていませんが、この機能はカーネルコマンドラインに iommu.passthrough=0 iommu.strict=1 を追加することで設定できます。
kfence
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
従来の pty のサポート
AL2023 は最新の PTY インターフェイス (devpts) を使用します。
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
Linux セキュリティモジュール (LSM) の ロックダウン
AL2023 は lockdown LSM をビルドします。これにより、セキュアブートを使用するとカーネルが自動的にロックダウンされます。
CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY オプションは有効になっていません。このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
ページポイズニング
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
スタックプロテクター
AL2023 カーネルは、-fstack-protector-strong オプションで有効になっている GCC のスタックプロテクター機能を搭載して構築されています。
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
seccomp BPF API
seccomp 強化機能は、systemd およびコンテナランタイムなどのソフトウェアがユーザースペースアプリケーションを強化するために使用されます。
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
panic() タイムアウト
AL2023 カーネルは、この値が 0 に設定された状態で設定されています。つまり、パニックが発生してもカーネルは再起動しません。このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定sysctl、/proc/sys/kernel/panic、およびカーネルコマンドラインで設定できます。
セキュリティモデル
AL2023 ではデフォルトで許可モードの SELinux が有効になっています。詳細については、「AL2023 の SELinux モードの設定」を参照してください。
Linux セキュリティモジュール (LSM) の ロックダウン および yama モジュールも有効になっています。
/proc/kcore
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
システムコールエントリでのカーネルスタックオフセットのランダム化
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定randomize_kstack_offset=on を設定することで有効にできます。
参照カウントチェック (CONFIG_REFCOUNT_FULL)
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
スケジューラーによる SMT コアの認識 (CONFIG_SCHED_CORE)
AL2023 カーネルは CONFIG_SCHED_CORE を使用して構築されているため、ユーザースペースのアプリケーションで prctl(PR_SCHED_CORE) を使用できます。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
schedule()(CONFIG_SCHED_STACK_END_CHECK) 呼び出しでスタックに問題がないか確認する
AL2023 カーネルは CONFIG_SCHED_STACK_END_CHECK が有効になっている状態で構築されています。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
メモリアロケータの強化
AL2023 カーネルでは、CONFIG_SHUFFLE_PAGE_ALLOCATOR、CONFIG_SLAB_FREELIST_HARDENED、および CONFIG_SLAB_FREELIST_RANDOM オプションを使用してカーネルメモリアロケータを強化できます。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
SLUB デバッグのサポート
AL2023 カーネルは、このオプションによってカーネルコマンドラインで有効にできるアロケータのオプションのデバッグ機能を CONFIG_SLUB_DEBUG で有効にします。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
CONFIG_STATIC_USER_MODE_HELPER
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定CONFIG_STATIC_USERMODEHELPER で必要なためです。
読み取り専用カーネルテキストおよび rodata (CONFIG_STRICT_KERNEL_RWX および CONFIG_STRICT_MODULE_RWX)
AL2023 カーネルは、カーネルとカーネルモジュールのテキストと rodata メモリを読み取り専用としてマークし、テキスト以外のメモリは実行不可としてマークするように設定されています。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
TCP syncookie のサポート (CONFIG_SYN_COOKIES)
AL2023 カーネルは TCP syncookie をサポートするように構築されています。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
ガードページ (CONFIG_VMAP_STACK) 付きの仮想化マップスタック
AL2023 カーネルは CONFIG_VMAP_STACK で構築されているため、ガードページ付きの仮想化マッピングカーネルスタックが可能になります。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
コンパイラ警告をエラー (CONFIG_WERROR) として構築する
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
関数 exit (CONFIG_ZERO_CALL_USED_REGS) 時にレジスタをゼロにする
このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
ユーザースペース割り当ての最小アドレス
この強化オプションは、カーネル NULL ポインターのバグの影響を軽減するのに役立ちます。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
clang 特定の強化オプション
AL2023 カーネルは clang ではなく GCC で構築されているため、CONFIG_CFI_CLANG 強化オプションを有効にすることはできません。CONFIG_CFI_PERMISSIVE も適用されません。このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
x86-64 固有のカーネル強化オプション
CONFIG オプション |
AL2023/6.1/aarch64 | AL2023/6.1/x86_64 | AL2023/6.12/aarch64 | AL2023/6.12/x86_64 |
|---|---|---|---|---|
| CONFIG_AMD_IOMMU | 該当なし |
y
|
該当なし |
y
|
| CONFIG_AMD_IOMMU_V2 | 該当なし |
y
|
該当なし | 該当なし |
| CONFIG_IA32_EMULATION | 該当なし |
y
|
該当なし |
y
|
| CONFIG_INTEL_IOMMU | 該当なし |
y
|
該当なし |
y
|
| CONFIG_INTEL_IOMMU_DEFAULT_ON | 該当なし |
n
|
該当なし |
n
|
| CONFIG_INTEL_IOMMU_SVM | 該当なし |
n
|
該当なし |
n
|
| CONFIG_LEGACY_VSYSCALL_NONE | 該当なし |
n
|
該当なし |
n
|
| CONFIG_MODIFY_LDT_SYSCALL | 該当なし |
n
|
該当なし |
n
|
| CONFIG_PAGE_TABLE_ISOLATION | 該当なし |
y
|
該当なし | 該当なし |
| CONFIG_RANDOMIZE_MEMORY | 該当なし |
y
|
該当なし |
y
|
| CONFIG_X86_64 | 該当なし |
y
|
該当なし |
y
|
| CONFIG_X86_MSR | 該当なし |
y
|
該当なし |
y
|
| CONFIG_X86_VSYSCALL_EMULATION | 該当なし |
y
|
該当なし |
y
|
| CONFIG_X86_X32 | 該当なし | 該当なし | 該当なし | 該当なし |
| CONFIG_X86_X32_ABI | 該当なし |
n
|
該当なし |
n
|
x86-64 サポート
基本的な x86-64 サポートには、物理アドレス拡張 (PAE) と実行なし (NX) ビットのサポートが含まれます。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
AMD と Intel IOMMU のサポート
AL2023 カーネルは AMD と Intel IOMMUsをサポートするように構築されています。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
CONFIG_INTEL_IOMMU_DEFAULT_ON オプションは設定されていませんが、カーネルコマンドラインに intel_iommu=on を渡すことで有効にできます。このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
CONFIG_INTEL_IOMMU_SVM オプションは現在 AL2023 では有効化されていません。このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
32 ビットユーザースペースのサポート
重要
32 ビット x86 ユーザースペースのサポートは廃止され、32 ビットユーザースペースバイナリの実行のサポートは Amazon Linux の今後のメジャーバージョンで削除される可能性があります。
注記
AL2023 には 32 ビットパッケージは含まれなくなりましたが、カーネルは 32 ビットユーザースペースの実行を引き続きサポートします。詳細については「32 ビット x86 (i686) パッケージ」を参照してください。
32 ビットユーザースペースアプリケーションの実行をサポートするため、AL2023 では CONFIG_X86_VSYSCALL_EMULATION オプションは有効にせず、CONFIG_IA32_EMULATION、CONFIG_COMPAT、CONFIG_X86_VSYSCALL_EMULATION オプションを有効にします。このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
64 ビットプロセッサ用の x32 ネイティブ 32 ビット ABI は有効になっていません (CONFIG_X86_X32 および CONFIG_X86_X32_ABI)。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
x86 モデル固有レジスタ (MSR) のサポート
turbostat をサポートするため CONFIG_X86_MSR オプションは有効になっています。このオプションはカーネルセルフプロテクションプロジェクト (KSPP) の推奨設定
modify_ldt システムコール
AL2023 では、ユーザープログラムが modify_ldt システムコールを使用して x86 ローカル記述子テーブル (LDT) を変更することはできません。この呼び出しは 16 ビットコードまたはセグメント化されたコードを実行するために必要です。この呼び出しがないと、WINE でプログラムを実行したり、非常に古いスレッドライブラリを実行したりする場合など、dosemu などのソフトウェアが動作しなくなる可能性があります。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
ユーザーモードでカーネルマッピングを削除する
AL2023 は、カーネルアドレスの大部分がユーザースペースにマップされないようにカーネルを設定します。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
カーネルメモリセクションをランダム化する
AL2023 は、カーネルメモリセクションのベース仮想化アドレスをランダム化するようにカーネルを設定します。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
aarch64 固有のカーネル強化オプション
CONFIG オプション |
AL2023/6.1/aarch64 | AL2023/6.1/x86_64 | AL2023/6.12/aarch64 | AL2023/6.12/x86_64 |
|---|---|---|---|---|
| CONFIG_ARM64_BTI |
y
|
該当なし |
y
|
該当なし |
| CONFIG_ARM64_BTI_KERNEL | 該当なし | 該当なし | 該当なし | 該当なし |
| CONFIG_ARM64_PTR_AUTH |
y
|
該当なし |
y
|
該当なし |
| CONFIG_ARM64_PTR_AUTH_KERNEL |
y
|
該当なし |
y
|
該当なし |
| CONFIG_ARM64_SW_TTBR0_PAN |
y
|
該当なし |
y
|
該当なし |
| CONFIG_UNMAP_KERNEL_AT_EL0 |
y
|
該当なし |
y
|
該当なし |
ブランチターゲット識別
AL2023 カーネルでは、ブランチターゲット識別 (CONFIG_ARM64_BTI) がサポートされます。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
AL2023 で GCC を使用して構築された CONFIG_ARM64_BTI_KERNEL オプションは有効になっていません。また、gcc のバグ
ポインター認証 (CONFIG_ARM64_PTR_AUTH)
AL2023 カーネルは、リターン指向プログラミング (ROP) 手法の軽減に役立つポインター認証拡張機能 (ARMv8.3 拡張機能の一部) をサポートするように構築されています。Graviton
CONFIG_ARM64_PTR_AUTH オプションは有効になっており、ユーザースペースのポインター認証をサポートします。CONFIG_ARM64_PTR_AUTH_KERNEL オプションも有効になっているため、AL2023 カーネルはリターンアドレス保護を自分で使うことができます。
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
TTBR0_EL1 切り替えを決してしない特権アクセスをエミュレートする
このオプションは、ユーザーアクセスルーチンによって一時的にのみ有効な値に設定される TTBR0_EL1 で、カーネルがユーザー空間のメモリに直接アクセスすることを防ぎます。
このオプションは、カーネルセルフプロテクションプロジェクト推奨設定
ユーザースペースでの実行時にカーネルをアンマップする
AL2023 カーネルは、ユーザースペース (CONFIG_UNMAP_KERNEL_AT_EL0) での実行時にカーネルをアンマップするように設定されています。このオプションは、カーネルセルフプロテクションプロジェクト推奨設定