CVE-2024-57877 in Linux
Сводка
по VulDB • 15.07.2026
В ядре Linux устранена следующая уязвимость:
arm64: ptrace: исправление частичного SETREGSET для NT_ARM_POE
В настоящее время функция poe_set() не инициализирует временную переменную 'ctrl', и вызов SETREGSET с длиной, равной нулю, оставляет эту переменную неинициализированной. В результате в target->thread.por_el0 может быть записано произвольное значение, что потенциально приводит к утечке до 64 бит памяти из стека ядра. Чтение ограничено конкретным слотом в стеке, и проблема не предоставляет механизма записи (write mechanism).
Исправление заключается в инициализации временного значения перед копированием regset из пользовательского пространства, как это делается для других регистровых наборов (например, NT_PRSTATUS, NT_PRFPREG, NT_ARM_SYSTEM_CALL). В случае записи нулевой длины существующее содержимое 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.