LINUX.ORG.RU

В Linux исправлена уязвимость, приводящая к потере данных в пользовательском пространстве, которая существовала с 2023 года

 , ,


0

3

После вчерашнего выпуска Linux 7.3-rc3 в код было включено важное исправление, устраняющее скрытую ошибку, приводившую к потере данных в пользовательском пространстве, которая существовала в ядре на протяжении последних трёх лет.

В начале месяца была обнародована информация о данной ошибке, а также опубликована небольшая программа на языке C, позволяющая ее воспроизвести. Если ядро работает с включенной поддержкой «transparent hugepages» (THP) и с ограничениями через cgroup, то записи, выполняемые после вызова MADV_FREE, могут быть полностью потеряны.

Эта ошибка не является гипотетической, она проявилась в производственной среде. Для её проявления требуется определённое сочетание использования «transparent hugepages» (THP), вызова MADV_FREE и высокой нагрузки на механизм освобождения памяти. Этот патч исправляет ошибку и сводится к изменению всего одной строки кода.

Патч был включён в рамках слияния x86/urgent на этой неделе. Он также помечен для обратного портирования в текущие поддерживаемые стабильные версии ядра. Ошибка появилась ещё в июле 2023 года и присутствовала в выпусках ядра, начиная с Linux 6.6.

>>> Источник

★★★★★

Проверено: CrX ()
Последнее исправление: cetjs2 (всего исправлений: 2)
Ответ на: комментарий от sena

pmd_modify() masks the old value with (_HPAGE_CHG_MASK & ~_PAGE_DIRTY), silently discarding the hardware dirty bit. The subsequent pmd_mksaveddirty() call is supposed to transfer _PAGE_DIRTY into _PAGE_SAVED_DIRTY when write-protecting, but the dirty bit was already stripped from the value, so there is nothing left to transfer.

Contrast with pte_modify(), which keeps _PAGE_DIRTY_BITS in its mask, and pud_modify(), which keeps _HPAGE_CHG_MASK untouched: pmd_modify() is the odd one out.

Any pmd_modify() on a writable, dirty PMD loses the dirty state.

Хреновый перевод. Тут просто про потерю уже установленного флага «грязная страница» со страницы и далее потеря записанного (и помеченного этим флагом) на странице памяти вместо сброса.

DzenPython ★
()
Последнее исправление: DzenPython (всего исправлений: 1)

начиная с Linux 6.6

Как всегда, дебиан избавляет меня от половины багов. Задет только debian 13, который я ещё не успел нигде установить.

firkax ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.