В ядре Linux устранена следующая уязвимость: мм: Исправить hmm_range_fault() livelock / starvation проблема Если hmm_range_fault() провалив…
В ядре Linux устранена следующая уязвимость: мм: Исправить hmm_range_fault() livelock / starvation проблема Если hmm_range_fault() проваливает folio_trylock() in do_swap_page, пытаясь приобрести замок устройства-частного фолио для миграции, чтобы протаранить, функция будет вращаться, пока не удастся захватить замок. Однако, если процесс удержания замка зависит от работы пункт, подлежащий завершению, который запланирован на том же CPU, что и спиннинг hmm_range_fault(), этот рабочий элемент может быть голоден и мы в конечном итоге находимся в ситуации ливлок / голода, которая никогда не бывает Решено. Это может произойти, например, если процесс удерживает устройство-частный замок фолио застрял в migrate_device_unmap()->lru_add_drain_all() с тех пор lru_add_drain_all() требует короткого рабочего пункта быть запущенным на всех онлайн-контактах для завершения. Обязательным условием для этого является: a) Устройство зоны и фолиантная память системы рассматриваются в migrate_device_unmap(), чтобы был повод позвонить lru_add_drain_all() для фолиантной памяти системы во время Фолио замок удерживается на зональном устройстве фолио. b) Фолио устройства зоны имеет начальное количество карт > 1, которое вызывает по меньшей мере одна вставка для входа в Миграцию ПТЭ, которая должна быть отложена try_to_migrate(), что может произойти после звонка lru_add_drain_all(). в) Нет или добровольно только упреждение. Все это кажется маловероятным, но действительно поражено "xe_exec_system_system_allocator" его тест. Решите это, ожидая, когда фолио будет разблокировано, если folio_trylock() терпит неудачу в do_swap_page(). Переназовите миграцию_entry_wait_on_locked() на softleaf_entry_wait_unlock() и обновить свою документацию до Укажите новый футляр использования. Будущие улучшения кода могут рассмотреть вопрос о переезде lru_add_drain_all() вызов в migrate_device_unmap() быть Названные *after* все страницы имеют вставленные записи миграции. Это устранило бы и b) выше. v2: - Вместо cond_resched() в hmm_range_fault(), устранить проблему, ожидая, когда фолиант будет разблокирован в do_swap_page() (Алистер Поппл, Эндрю Мортон) v3: - Добавить заглушка Migration_entry_wait_on_locked() для !CONFIG_MIGRATION дело. (Робот-испытатель ядра) v4: - Переименовать migrate_entry_wait_on_locked() в softleaf_entry_wait_on_locked() и обновление docs (Алистиар Поппл) v5: - Добавить WARN_ONCE() для !CONFIG_MIGRATION версия softleaf_entry_wait_on_locked(). - Изменить формулировку вокруг имен функций в сообщении о совершении (Эндрю Мортон) (виша, выбранная из а69д1аб71а264c6f112cea61536569d579c3215)
Программный продукт не обеспечивает надлежащего захвата или освобождения блокировки ресурса, что приводит к непредвиденным изменениям состояния ресурса и нештатному поведению.
https://cwe.mitre.org/data/definitions/667.html →Открыть в коллекции CWE →Злоумышленник провоцирует и эксплуатирует состояние взаимоблокировки в целевом программном обеспечении, чтобы вызвать отказ в обслуживании. Взаимоблокировка может возникнуть, когда два или более конкурирующих действия ожидают завершения друг друга и в итоге ни одно из них не завершается. Состояния взаимоблокировки бывает сложно обнаружить.
https://capec.mitre.org/data/definitions/25.html →Открыть в коллекции CAPEC →Злоумышленник нацеливается на состояние гонки, возникающее когда несколько процессов одновременно обращаются к одному ресурсу и манипулируют им, а результат выполнения зависит от конкретного порядка этих обращений. Злоумышленник может эксплуатировать состояние гонки, «участвуя в гонке»: изменяя ресурс и нарушая нормальный порядок выполнения. Например, состояние гонки может возникнуть при обращении к файлу: злоумышленник может обмануть систему, подменив исходный файл своей версией и заставив систему прочитать вредоносный файл.
https://capec.mitre.org/data/definitions/26.html →Открыть в коллекции CAPEC →Данная атака эксплуатирует использование символических ссылок (Symlink) для записи в конфиденциальные файлы. Злоумышленник может создать символическую ссылку на целевой файл, к которому у него нет прямого доступа. Когда привилегированная программа пытается создать временный файл с тем же именем, что и символическая ссылка, она фактически записывает данные в целевой файл, на который указывает символическая ссылка злоумышленника. Если злоумышленник может поместить вредоносное содержимое во временный файл, он тем самым запишет его в конфиденциальный файл через символическую ссылку. Состояние гонки возникает потому, что система проверяет существование временного файла, а затем создаёт его. Злоумышленник, как правило, создаёт символическую ссылку в промежутке между проверкой и созданием временного файла.
https://capec.mitre.org/data/definitions/27.html →Открыть в коллекции CAPEC →| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux | Отслеживается | |
| linux_kernel | * | Отслеживается |
| kernel-doc-6.18 | Отслеживается | |
| kernel-doc-6.18 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-6.18 | Отслеживается | |
| kernel-headers-modules-6.18 | Отслеживается | |
| kernel-headers-modules-6.18 | Отслеживается | |
| kernel-headers-modules-pine | Отслеживается | |
| kernel-headers-modules-pine | Отслеживается | |
| kernel-headers-pine | Отслеживается | |
| kernel-headers-pine | Отслеживается | |
| kernel-image-6.18 | Отслеживается | |
| kernel-image-6.18 | Отслеживается | |
| kernel-image-6.18-checkinstall | Отслеживается | |
| kernel-image-6.18-checkinstall | Отслеживается | |
| kernel-image-pine | Отслеживается |