Hulumtuesit nga Instituti Politeknik i Worcester (SHBA) prezantuan një lloj të ri sulmi të quajtur Mayhem, që përdor metodën e deformimit të bitëve në memorien dinamike të operativit Rowhammer për të ndryshuar vlerat e variablave në grumbull, që përdoren në program si flamuj për të vendosur nëse autentifikimi ka qenë i suksesshëm dhe për të kaluar kontrollët e sigurisë. Shembuj praktikë të zbatimit të sulmit u demonstruan për të anashkaluar autentifikimin në SUDO, OpenSSH dhe MySQL, si dhe për të ndryshuar rezultatet e kontrollëve të sigurisë në bibliotekën OpenSSL.
Атака может быть применена к приложениям, в которых при проверках используется сравнение отличий значений от нуля. Пример уязвимого кода: int auth = 0; … // код проверки, меняющий значение auth в случае успешной аутентификации if(auth != 0) return AUTH_SUCCESS; else return AUTH_FAILURE;
Në kontekstin e këtij shembulli, për një sulm të suksesshëm është e mjaftueshme të arrihet deformimi i çdo biti në memorie, që i përket një variabli 32-bit auth në stack. Me deformimin e çdo biti në variablin, vlera nuk do të jetë më e barabartë me zero dhe operatori kusht do të përcaktojë kalimin e suksesshëm të autentikimit. Këto modele verifikimi janë mjaft të zakonshme në aplikacione dhe shfaqen, për shembull, në SUDO, OpenSSH, MySQL dhe OpenSSL.

Атака может быть применена и на сравнения вида «if(auth == 1)», но в этом случае её проведение усложняется, так как нужно исказить не любой бит из 32, а последний бит. Метод также может использоваться для влияния на значения переменных в процессорных регистрах, так как содержимое регистров может быть на время сброшено в стек при переключении контекста, вызове функций или срабатывании обработчика сигнала. В промежуток времени, пока регистровые значения находятся в памяти, в эту память можно внести искажения и в регистр будет восстановлено изменённое значение.

Për të manipuluar bitët përdoret një nga modifikimet e sulmit të klasës RowHammer. Për shkak se memoria DRAM përbëhet nga një mori dy-dimensionale e qelizave, secila prej të cilave përbëhet nga një kondensator dhe një transistor, përfundimi i vazhdueshëm i leximeve në të njëjtën zonë të memories çon në fluktuacione të tensionit dhe anomali që shkaktojnë humbje të vogël të ngarkesës së qelizave fqinje. Nëse intensiteti i leximit është i lartë, atëherë një qelizë fqinje mund të humbasë një sasi të madhe ngarkese dhe cikli i ardhshëm i rinovimit nuk do të arrijë të rikthejë gjendjen fillestare, që do të çojë në ndryshimin e vlerës së të dhënave të ruajtura në qelizë. Për të mbrojtur nga RowHammer, prodhuesit e çipëve shtuan mekanizmin TRR (Target Row Refresh), i cili bllokon manipulimin e qelizave në raste të veçanta, por nuk mbron nga të gjitha variantet e mundshme të sulmit.
Для защиты от атаки Mayhem рекомендуется использовать в сравнениях не оценку отличий от нуля или совпадения с единицей, а проверку совпадений, используя случайное значение затравки c ненулевыми октетами. В этом случае для выставления нужного значения переменной необходимо точно исказить существенное число битов, что нереалистично, в отличие от искажения одного бита. Пример не подверженного атаке кода: int auth = 0xbe406d1a; … // код проверки, выставляющий значение auth в 0x23ab8701 в случае успешной аутентификации if(auth == 0x23ab8701) return AUTH_SUCCESS; else return AUTH_FAILURE;
Metoda e mbrojtjes së përmendur tashmë është aplikuar nga zhvilluesit e sudo dhe është përfshirë në lëshimin 1.9.15 si një rregullim për dobësinë CVE-2023-42465. Prototipi i kodit për kryerjen e sulmit planifikohet të publikohet pas zbatimit të korrigjimeve në projektet kryesore të dobësive.
Burimi: opennet.ru
