CVE-2024-57877 in Linux
要約
〜によって VulDB • 2026年07月30日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
arm64: ptrace: NT_ARM_POEに対するSETREGSETの部分的な処理を修正
現在、poe_set()は一時変数'ctrl'を初期化していません。そのため、長さが0のSETREGSET呼び出しを行うと、この変数が未初期定のままになります。その結果、target->thread.por_el0に対して任意の値が書き込まれ、カーネルスタックから最大64ビット分のメモリリークが発生する可能性があります。読み取りはスタック内の特定のスロットに限定されており、本問題は書き込みメカニズムを提供しません。
他のregset(例:NT_PRSTATUS, NT_PRFPREG, NT_ARM_SYSTEM_CALL)と同様に、ユーザー空間からregsetをコピーする前に一時値を初期化することでこれを修正します。ゼロ長さの書き込みの場合、POR_EL1の既存の内容が保持されます。
パッチ適用前:
| # ./poe-test | Attempting to write NT_ARM_POE::por_el0 = 0x900d900d900d900d | SETREGSET(nt=0x40f, len=8) wrote 8 bytes | | Attempting to read NT_ARM_POE::por_el0 | GETREGSET(nt=0x40f, len=8) read 8 bytes | Read NT_ARM_POE::por_el0 = 0x900d900d900d900d | | Attempting to write NT_ARM_POE (zero length) | SETREGSET(nt=0x40f, len=0) wrote 0 bytes | | Attempting to read NT_ARM_POE::por_el0 | GETREGSET(nt=0x40f, len=8) read 8 bytes | Read NT_ARM_POE::por_el0 = 0xffff8000839c3d50
パッチ適用後:
| # ./poe-test | Attempting to write NT_ARM_POE::por_el0 = 0x900d900d900d900d | SETREGSET(nt=0x40f, len=8) wrote 8 bytes | | Attempting to read NT_ARM_POE::por_el0 | GETREGSET(nt=0x40f, len=8) read 8 bytes | Read NT_ARM_POE::por_el0 = 0x900d900d900d900d | | Attempting to write NT_ARM_POE (zero length) | SETREGSET(nt=0x40f, len=0) wrote 0 bytes | | Attempting to read NT_ARM_POE::por_el0 | GETREGSET(nt=0x40f, len=8) read 8 bytes | Read NT_ARM_POE::por_el0 = 0x900d900d900d900d
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.