Как стать автором
Обновить

Исследователь рассказал об уязвимости в 7-Zip, позволяющей повысить привилегии до уровня SYSTEM в Windows 10

Время на прочтение1 мин
Количество просмотров18K
Всего голосов 16: ↑11 и ↓5+6
Комментарии41

Комментарии 41

Они же изначально настаивали, что уязвимость относится к работе процесса Microsoft HTML Helper
Если бы это была уязвимость HH, то дочерний процесс бы имел родителем HH.

image

И я так понимаю, что ещё и должна быть возможность писать в папку 7-zip. То есть, только администратор может таким образом повысить свои права до системы. Но если у злоумышленника есть права администратора, то уже пофиг — система скомпрометирована.

7-zip может быть установлен в произвольную папку (не так уж редко бывает, что утилиты ставятся не в папку Program files и/или не на диск C:), в которой у пользователя может быть больше прав.

Тут пользователь сам себе злобный буратино, раз устанавливает софт куда попало, а не в предусмотренное разработчиками системы место. Следование этой рекомендации, как видим, может уберечь от проблем.

Если юзер не администратор, то он сможет установить софт только в свою папку AppData, к которой он имеет доступ, а не в C:\Program Files, разве не так?

Да, осталось понять, в этом варианте уязвимость сработает или нет?

Не хочу вам грубить, поэтому прошу отнестись с долей юмора к пикрилу.

Картинка смешная, ситуация - страшная.

Если бы это была уязвимость HH, то дочерний процесс бы имел родителем HH.

HH это не только исполняемый файл, но и динамическая библиотека. 7zFM дёргает оттуда функции. И вот в ней уже происходит XXE (как я понял, аналогично тому, что было с WinRAR; возможно, сам XXE происходит дальше, в mshtml).

См. скриншот.

Я не специалист во внутренностях Windows, поэтому буду благодарен, если найдется кто-то, кто опишет, как дальше происходит повышение (через недостаточный контроль привилегий в COM или еще как). Потому как то, что написано в README репозиторя на гитхабе - ну, оно такое...

А вы проверьте есть ли там процесс HH вообще. Сдаётся мне что они просто открывают внутренние терминал невидимый, а в нём вызывают hh процесс. А потом уже в этот процесс перетягивается заражённый файл

Хм, а откуда там вообще системные права? Какой механизм EOP вызывается? Ну и как по мне, mshtml такая дырища, что проще его отключить или выкусить из системы, чтобы прибить этот и многие другие возможные векторы атаки через прикладное ПО, чем маяться с вероятностью повышения привилегий из-за использования встроенной справки не полностью корректным (ц) образом. Хотя баг сам по себе стоит того, чтобы его пофиксить — переполнение буфера само по себе приглашение к реализации RCE.


Вот интересно, пробовал ли автор эксплойта использовать hh напрямую, минуя 7zip, и через него ломануть систему?

Кто-то может пояснить что значит «ограничить для всех пользователей использование приложения 7-zip: дать ему разрешения только на чтение и запуск» (в оригинале: «The 7-zip program should only have read and run permissions. (For all users)»)?

Надо думать, имеется в виду не "приложение" вообще, а файл 7-zip.exe.

Вот к сожалению здесь можно думать всё что угодно потому что сформулировано не грамотно. Если имеется в виду каталог куда программа установлена (а равно и сам файл 7-zip.exe), то если установлено по дефолтному пути, то пользователи и так не имеют прав на запись.

Разве 7zip работает с правами системы?

Ничего не понял. Хорошо, пусть ошибки переполнения, права записи. Но права доступа же контролируются операционной системой, а не программой! Любое зловредное приложение может воспроизвести эти особенности преднамеренно — и поднимет свой уровень до SYSTEM. А виноват 7-zip? Правильно разработчики сказали, это никак не может быть их проблемой. То есть, переполнение буфера, конечно, поправить надо, но гораздо важнее починить ту часть системы, что даёт повышение привилегий.
Я так понимаю, что именно сочетание ошибок и делает описанное возможным. Зловредное приложение ещё нужно в систему доставить как-то и умудриться запустить. А 7-zip в атакуемой системе может уже присутствовать.

Зловредное приложение ещё нужно в систему доставить как-то и умудриться запустить.

Если у злоумышленника есть доступ к системе с правом на запись, то это не составит труда.
Проблема уязвимостей с повышением привилегий всегда лежит в том компоненте системы, где это повышение происходит.
Само по себе переполнение кучи в 7zFM - это не уязвимость, это баг. Надеюсь, CVE не примут.
А с hh.exe, в котором реализуется повышение за счет XXE, надо что-то делать.

а че, переполнение кучи разьве не вызовет наружение доступа? Может там все-таки в стеке переполнение?

Никакие действия кода не должны приводить к повышению уровня доступа. Это основополагающий принцип защищённой операционной системы. Если система полагается на «хорошее» поведение программ для обеспечения защиты, то это уже не защита. В своём уровне привилегий программа может сделать что угодно, и стек переполнять, и кучу, и кривые процессорные инструкции вызывать, да хоть термоядерную бомбу взрывать. Но ни одно её действие не должно приводить к неавторизованному выполнению привилегированного кода. Если приводит, это называется уязвимостью, и является проблемой не того кода, который смог вылезти из своего ящика, а проблемой системы защиты, которая не смогла обеспечить должной изоляции.

И это типа ОС Винда виновата, получается? То есть вины софта/кода в 7z нету?

Я всегда думал, что изоляция не тока на уровне ядра ОС должна быть, но и со стороны аплика/софта на уровне кода. Не про песочницу речь, а про некоторые лучшие практики секьюра...

Если бы уязвимость позволяла получить те же права, с которыми работает 7z и в его процессе исполнить что угодно — да, это проблема 7z и они должны её исправлять.
Но если мы получили права SYSTEM, то это уже дыра в безопасности самой ОС, чинить её в прикладном ПО — это как заклеивать пластырем мелкие дырки в корабле, который уже затонул.

Да, так то яснее и понятнее стало. Логично и аргументировано вполне. Без претензий. )))

Хотя если запускать 7z с правами админа, то как бы это дает повышать права/привелегии уже за счет 7z...

То есть не надо давать админ прав для работы и ограничивать тока на чтение... Это как мнение сисадмина уже высказал. И это логично как бы всем. Но тем не менее, фулл права зло..

Если запустить 7z с правами админа, там и уязвимости искать не надо: заходишь в диалог «Открыть файл», ставишь маску *.exe, ищешь файл cmd.exe и нажимаешь на него правой кнопкой мыши — запустить.

Это не даст права NT AUTHORITY\SYSTEM

До них с правами админа и доступом к его интерактивной сессии (чтобы подтвердить UAC Elevation) один маленький шаг.

Эм. Ну, получите вы из ограниченой записи админа — менее ограниченную, это понятно.
А дальше-то как? at?

С повышением UAC можно много интересного делать: писать в сектора логических и физических дисков, загружать драйвера, читать/писать память системных процессов. Если интересует практическая сторона, и без программирования, то вот она: запускаем Process Hacker, кликаем правой кнопкой на любой процесс запущенный от SYSTEM (wininit.exe) и выбираем опцию Misc->Run as this user->cmd.exe

Прикольно. И я правильно понимаю, что описанный прием сработает только если исходный пользователь - уже администратор? Тогда это, как и предполагалось некоторыми участниками, никакая не уязвимость в 7zip. Расходимся.

P.S. Хотя хорошо бы это на форуме SourceForge написать.

Да, Process Hacker может клонировать юзера от другого процесса, только будучи запущенным от администратора, да ещё с повышением привилегий UAC.

А вот что происходит в 7z — тайна, покрытая мраком. Якобы 7z, запущенный от простого юзера, позволяет запустить cmd от системы. Но это тогда огромная дырень в самой Windows, 7z тут не виноват, можно же и свою прогу специально собрать с такой «особенностью».

Якобы 7z, запущенный от простого юзера, позволяет запустить cmd от системы.

Ни на форуме SourceForge, ни на github.com я не вижу, чтобы автор CVE это продемонстрировал или хотя бы подтвердил, хотя его и спрашивали. Exe-файл, как я понял, он никому не дает, даже автору 7zip.

чтобы автор CVE это продемонстрировал или хотя бы подтвердил
Так в видео-ролике он ясно показывает, что текущий юзер не имеет прав локального админа (выполняя команду net localgroup Administrators). Если конечно ролик не фейк.
Видео в этой статье

Ага, и откуда оно? Источник?

Thx.

Так в видео-ролике он ясно показывает, что текущий юзер не имеет прав локального админа (выполняя команду net localgroup Administrators).

Не, там только показано, что он не входит в группу локальных администраторов. А вот может ли он иметь нужные права, чтобы elevation сработало) не входя в эту группу, чтобы я понимал.

Можно заранее подломать систему, выдав разрешение everyone-у на нужные для взлома объекты (на системные файлы, ветки реестра или даже на токены системных процессов, типа lsass, winlogon и т.п., чтобы юзер мог открыть эти объекты для любых действий с ними). Можно дать точечно SeDebugPrivilege. Но зачем так заморачиваться для видеоролика, подлог можно сделать и обычным монтажом.

Однако… спасибо.

Это обман почти со 100% вероятностью. Зато шумиха то какия поднялась! Автор не очень адекватен, посмотрите на его ответы на sourceforge: https://sourceforge.net/p/sevenzip/bugs/2337. Там он прямо заявляет "продаю за деньги".

Heap overflow в чистом виде(без баги в OS) никак не может привести к повышению привелегий.

А права system он получает с помощью "psexec -s cmd.exe". Link: https://github.com/kagancapar/CVE-2022-29072

" I'm being honest with you. Actually, I'm trying to find another vulnerability on 7-zip software, and it's happening again with heap-overflow. If I tell you which file is in the source code and on which line, you will close the vulnerability. I am a hacker. I'm evaluating and I don't want to say because I make money from this business. I won and I'm just telling you how to turn it off from the interface. If there is no access to hh.exe from the interface, there is nowhere to trigger anyway. I don't intend to reveal the details of the vulnerability because that's the way I am selling it."

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости