Уразлівасць у cryptsetup, якая дазваляе адключыць шыфраванне ў LUKS2-частках

У пакеце Cryptsetup, ужывальным для шыфравання дыскавых частак у Linux, выяўленая ўразлівасць (CVE-2021-4122), якая дазваляе праз мадыфікацыю метададзеных дамагчыся адключэнні шыфравання ў частках у фармаце LUKS2 (Linux Unified Key Setup). Для эксплуатацыі ўразлівасці атакавалы павінен мець фізічны доступ да зашыфраванага носьбіта, г.зн. метад мае сэнс у асноўным для нападу на зашыфраваныя вонкавыя назапашвальнікі, такія як Flash-дыскі, да якіх зламыснік мае доступ, але не ведае пароля для расшыфроўкі дадзеных.

Атака дастасавальная толькі для фармату LUKS2 і злучана з маніпуляцыяй метададзенымі, якія адказваюць за актывацыю пашырэння «online reencryption», які дазваляе пры неабходнасці змены ключа доступу ініцыяваць працэс перашыфравання дадзеных на лета без прыпынку працы з часткай. Так як працэс расшыфроўкі і шыфроўкі з новым ключом займае шмат часу, "online reencryption" дае магчымасць не перарываць працу з падзелам і выконваць перашыфраванне ў фоне, паступова перашыфроўваючы дадзеных з аднаго ключа на іншы. У тым ліку ёсць магчымасць выбару пустога мэтавага ключа, што дазваляе перавесці падзел у расшыфраваны выгляд.

Атакуючы можа занесці ў метададзеныя LUKS2 змены, якія сімулююць аварыйнае перапыненне выканання аперацыі расшыфроўкі ў выніку збою і дамагчыся расшыфроўкі часткі часткі пасля актывацыі і выкарыстанні мадыфікаванага назапашвальніка ўладальнікам. Пры гэтым карыстач, які падлучыў мадыфікаваны назапашвальнік і разблакаваўшы яго карэктным паролем, не атрымлівае які-небудзь папярэджанні аб выкананні працэсу ўзнаўлення перапыненай аперацыі перашыфравання і можа пазнаць аб ходзе дадзенай аперацыі толькі пры дапамозе каманды «luks Dump». Аб'ём дадзеных, расшыфроўкі якіх можа дамагчыся атакавалы, залежыць ад памеру загалоўка LUKS2, але пры памеры па змаўчанні (16 MiB) можа перавышаць 3 ГБ.

Праблема выклікана тым, што нягледзячы на ​​тое, што перашыфраванне патрабуе разліку і праверкі хэшаў новага і старога ключоў, для пачатку расшыфроўкі хэш не патрабуецца, калі новы стан мае на ўвазе адсутнасць ключа для шыфравання (plaintext). Акрамя таго, метададзеныя LUKS2, у якіх задаецца алгарытм шыфравання, не абаронены ад мадыфікацыі ў выпадку траплення ў рукі зламысніка. Для блакавання ўразлівасці распрацоўнікі дадалі ў LUKS2 дадатковую абарону метададзеных, для якіх зараз правяраецца дадатковы хэш, які вылічаецца на аснове вядомых ключоў і змесціва метададзеных, г.зн. атакавалы зараз не можа неўзаметку змяніць метададзеныя, не ведаючы пароля для расшыфроўкі.

Тыпавы сцэнар нападу патрабуе, каб у зламысніка была магчымасць некалькі разоў атрымаць назапашвальнік у свае рукі. Спачатку атакавалы, які не ведае пароля доступу, уносіць у вобласць метададзеных змены, якія ініцыююць расшыфроўку часткі дадзеных пры наступнай актывацыі назапашвальніка. Затым назапашвальнік вяртаецца на месца і атакавалы чакае, пакуль карыстач не падлучыць яго, увёўшы пароль. Падчас актывацыі прылады карыстачом запускаецца фонавы працэс перашыфравання, падчас якога частка зашыфраваных дадзеных замяняецца на расшыфраваныя дадзеныя. Далей, калі атакавалы зможа атрымаць у свае рукі прылада яшчэ раз, частка дадзеных на назапашвальніку будзе знаходзіцца ў расшыфраваным выглядзе.

Праблема выяўлена мэйнтэйнерам праекта cryptsetup і ўхілена ў абнаўленнях cryptsetup 2.4.3 і 2.3.7. Стан фармавання абнаўленняў з ухіленнем праблемы ў дыстрыбутывах можна адсачыць на дадзеных старонках: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Уразлівасць выяўляецца толькі пачынальна з выпуску cryptsetup 2.2.0, у якім з'явілася падтрымка аперацыі "online reencryption". У якасці абыходнага шляху абароны можа выкарыстоўвацца запуск з опцыяй "-disable-luks2-reencryption".

Крыніца: opennet.ru

Дадаць каментар