Все новости от 2 июня 2006 г. Vista играет в прятки с хакерами
Вышедшая на прошлой неделе версия Windows Vista Beta 2 содержит новое средство защиты от эксплойтов, основанных на переполнении буфера.
Каждый раз при включении ПК функция Address Space Layout Randomization (ASLR) загружает важные системные файлы в разные области памяти, что, по мнению Microsoft, затрудняет исполнение вредоносного года.
«Это не панацея, и это не исключает необходимости писать безопасный код, — пишет старший менеджер программы безопасности Microsoft Майкл Говард в блоге, в котором рассказывает о новой функции. — Но в сочетании с другими технологиями… это полезное средство защиты, так как оно позволяет Windows-систеам выглядеть незнакомыми для вредоносного ПО, что затрудняет автоматические атаки».
Эксплойты переполнения буфера это вредоносный код, который пытается использовать типичную ошибку в программировании, называемую переполнением буфера. При атаках этого типа записываемые в память данные выходят за пределы выделенного буфера и занимают смежные с ним ячейки. Это может привести к сбою процесса или допустить выполнение подготовленного злоумышленником кода.
ASLR изобрела не Microsoft. Эта функция уже используется в нескольких операционных системах open source, включая OpenBSD, а также в патчах для Linux PaX и Exec Shield.
При определенных видах атак злоумышленники пытаются заставить системные функции Windows, такие как socket() в wsock32.dll, открыть сетевой сокет. Новая функция перемещает эти системные файлы, делая их местонахождение непредсказуемым. В Windows Vista Beta 2 файл DLL или EXE может находиться по любому из 256 адресов.
«У злоумышленника один шанс из 256 угадать правильный адрес», — пишет Говард.
В системах open source рандомизация, похоже, работает хорошо, констатирует старший специалист Cybertrust Расс Купер. Вопрос в том, как именно Microsoft реализовала ASLR и является ли эта рандомизация в принципе предсказуемой.
«Я подозреваю, что в первую очередь станут искать именно это — что-нибудь, что указывает на выбор местонахождения или может служить подсказкой».
Можно попытаться опробовать и все 256 ячеек памяти. Однако это, скорее, приведет к сбою в работе ПК, чем позволит взломать его, считает Купер. «Такая защита хороша, когда главное — не допустить исполнения вредоносного ПО, а не гарантировать бесперебойную работу системы».
Отзывы об ASLR
В мире безопасности Microsoft заслужила одобрение за работу по ASLR для Vista. «Дистанционное использование переполнений значительно усложнилось, — пишет в сообщении в списке почтовой рассылки BugTraq исследователь из Next Generation Security Software Дэвид Личфилд (David Litchfield).
Но и скептики тоже есть. Некто под псевдонимом c0ntex в ответе Личфилду уверяет, что ASLR «уже много лет элементарно обходится в Linux».
Тот факт, что Microsoft добавила ASLR лишь в последнюю опытную версию Windows Vista, еще один признак неготовности последователя Windows ХР к широкому применению. «Мы довольно поздно ввели в игру функцию ASLR, но решили, что добавить ее в бета-2 и сделать разрешенной по умолчанию важно для понимания того, как это будет работать в реальности», — пишет Говард.
По утверждению Microsoft, ASLR вместе с другими усовершенствованиями Vista поднимает планку безопасности будущей ОС. Компания называет Vista, которая должна поступить в продажу в январе, самой безопасной версией Windows на сегодняшний день.
Кроме ASLR, Говард указывает на опцию для обнаружения переполнения буфера в Visual C++; средство проверки исключений (exception checker) в Vista; функцию сокрытия указателя (pointer obfuscation) и поддержку функции NX (No-Execute) процессора, которая не позволяет исполнять данные как программы.
«В свете всего этого ASLR рассматривается всего лишь как одна из многих мер защиты», — пишет Говард.
|
|
| умник 2 Jun 2006 2:30 PM |
Эксплойты переполнения буффера в принципе невозможны были бы если бы Майкрософт использовала для стека и кода разные сегменты/дескрипторы с разными правами на исполнение. В Линуксе были подобные попытки, но почему то тоже не стали популярными. |
|
| Mike 2 Jun 2006 3:01 PM |
Ага, и если бы еще производители процессоров для ПК заранее предусмотрели лучшую степень изоляции данных от кода. |
|
| dimav 2 Jun 2006 3:25 PM |
только 90% переполнение буфера это банальный срыв стека. те для локальных данных и данных относящися к передаче управления нужны разные адресные пространства и разне стеки. банальным вынесением код стека и данных в разные сегменты не обойдешься.... А это по большому счету требует переделки ублюдочной x86 архитектуры... чего в ближашие XX лет не будет. 2 "Mike Ага, и если бы еще производители процессоров для ПК заранее предусмотрели лучшую степень изоляции данных от кода." так были такие процессоры. все пожрал проклятый хомяк x86 |
|
| Anti-MS 2 Jun 2006 5:45 PM |
2dimav я что-то путаю или в амд64 все таки это есть в проце? |
|
| M&M's 2 Jun 2006 8:04 PM |
Бля, опять изобрели велосипед. Но не в том фишка, что велосипед, а в том, что элементарно сперли, и как обычно громко выдают за свое. Мудаки нах. |
|
| Ender 2 Jun 2006 8:09 PM |
2M&M's: "Но не в том фишка, что велосипед, а в том, что элементарно сперли, и как обычно громко выдают за свое." Угу. Ни в коем случае нельзя использовать то что есть в недоделанном линуксе или бздях. А то ведь поднимется толпа крикунов, будет кричать что сперли. Спать будет плохо и беспокойно. Да и вообще в виндовс ничего своего нет, все спиженое. На этом уже пора успокоиться. |
|
| Spectr 2 Jun 2006 8:34 PM |
2Ender: "На этом уже пора успокоиться." RIP, дорогой друг. |
|
| M&M's 2 Jun 2006 8:41 PM |
Ендер, ты не представляешь, как хорошо спится после того, как покричал на форуме "МС - гавно, суксь и ацтой", просто чувствуешь себя человеком со спокойной совестью, выполнившим свой дневной долг перед прогрессивным человечеством. Ведь МС - казлы, но не только казлы, а самодовольные казлы с громадным самомнением, ипи их за ихний си шарп. В России такие теперь в Читинской колонии срок мотают, в Китае их дальше родной деревни не выпускают иначе как на поводке. В Америке эти дядисэмы развернулись по полной. Почему в морду торт лепили не Джобсу, не Торвальдсу, а именно Гейцу? Это о чем-то да говорит. |
|
| Ender 3 Jun 2006 8:49 AM |
2M&Ms: "ты не представляешь, как хорошо спится после того, как покричал на форуме "МС - гавно, суксь и ацтой", просто чувствуешь себя человеком со спокойной совестью, выполнившим свой дневной долг перед прогрессивным человечеством." Гы-гы-гы... это мелочь. Я даже знаю настолько больных людей которым чтобы начать продуктивно работать или сосредоточиться на чем-то, обязательно нужно с кем-то поругаться, вымотать тому человеку нервы. В чем они совершенно честно признаются когда извиняются... позже. "Почему в морду торт лепили не Джобсу, не Торвальдсу, а именно Гейцу? Это о чем-то да говорит." На сколько мне известно влеплял какой-то больной мужик, у которого мания забросать тортами какую-нить знаменитость. |
|
| M&M's 3 Jun 2006 12:40 PM |
2 Ender: > Я даже знаю настолько больных людей которым чтобы начать продуктивно работать или сосредоточиться на чем-то, обязательно нужно с кем-то поругаться Эт бывает :-))) Лечится двухнедельным отдыхом в Турции. Если, конечно, время для этого находится :-) |
|
| Alexander S. Kharitonov 3 Jun 2006 1:48 PM |
2 Ender: > в недоделанном линуксе или бздях. Пора в Турцию? :-) |
|
| tstone - saldomail.ru 4 Jun 2006 2:06 PM |
2dimav: в том-то и дело, что даже в х86 есть аппаратные средства, позволяющие полностью исключить возможность "исполнения данных", или выхода за пределы сегмента, причем любого, не только стека, или смешивания сегмента данных и исполняемого сегмента. Это у них все было еще в 486 проце! Только чтобы это использовать надо ж думать! А кому оно охота?
|
|
| умник 5 Jun 2006 3:35 AM |
to tstone Я об этом и говорю, просто в наше время изучать архитектуру процессоров считается западло... |
|
| Barklett 5 Jun 2006 6:48 AM |
дескрипторы/сегменты в IA32 давно отошли на второй план, ввиду рулезности плоской модели памяти, т.е. технически сегменты остались, но для приложений их как бы не существует, адресация только линейная, 4 гб адресного пространства (на сам деле программе доступны два или три при спецключе в boot.ini) кто сейчас в современных ОС пользует сегментную модель памяти? почему претензия именно к МС, когда все дружно забили на сегменты... а Intel виновата, что не предусмотрела для элементов таблиц страниц столько же флажков настройки, как для дескрипторов сегментов (т.е. нельзя сказать, что это не данные, а стек; нельзя сказать, что это код, а не данные read-only; нельзя указать уровни привилегий кроме пользователь/супервизор, тогда как для сегментов их четыре) Itanium вообще не имеет сегментов, только страничная модель и не только amd, но также intel пару лет уже поддерживает NX - что задействует WinXP SP2 и продолжит пользовать Vista кроме NX и ASLR, будет еще ряд механизмов защиты - UAC например (сами читайте, что это). а также /GS опция компилятора в Visual C++, включена по дефолту, добавляет обнаружение переполнения буфера на базе стека, а также переставляет местами некоторые аргументы функций, и становится намного сложнее атаковать стек функции. На данный момент все исходники Vista скомпилированы с использованием /GS. /SafeSEH опция компоновщика, который пишет адреса задач в PE заголовок исполняемого файла и когда задача выполнена, ОС повторно проверяет адрес в заголовке PE, и если адрес отсутствует, значит что-то нарушило процесс выполнения задачи и ОС убивает процесс. Function Pointer Obfuscation (путаница указания функций) Долговечные указатели функций подвержены атаки, потому что они долговечны и указывают на функции, временами запрашиваемые кодом. В Vista кодируется ряд долговечных указателей, и раскодируется лишь когда они необходимы + прикладные защитные программы (Windows Defender, улучшенный файрвол, IE в restricted mode с антифишинговым фильтром) т.е. явно заметно, что МС взялась за безопасность висты по полной программы, SP2 для XP был только прологом P.S. касательно будущего Longhorn сервер - "опция установки Server Core позволяет клиентам Longhorn Server устанавливать лишь ядро сервера без графического интерфейса, с поддержкой основных служб, таких как DHCP и DNS". Ну прямо сбылись мечты линуксойдов о виндах без графики |
|
| Угрюмый anonymous 5 Jun 2006 11:25 AM |
2 Barklett Ты глядика, видать прокрались в мекросовт пара умных программистов! |
|
| Alex 5 Jun 2006 11:44 AM |
2 Barklett Всё, что ты перечислил элементарно обходится. И отсечёт только начинающих чайников/хацкеров, от которых и так ущерб мизерный. Зато создаёт ложное(и опасное) чувство защищённости. Видишь ли , если хаккер получил возможность выполнить код в привелегированном режиме, то уже поздняк метаться. Просто теперь эксплойты будут писать более грамотно и аккуратно, с полным заметанием следов атаки. |
|
| Barklett 5 Jun 2006 11:49 AM |
вот сначала получи "возможность выполнять код в привилегированном режиме" если не совсем понятно - часть фишек безопасности висты не дают сделать именно это |
|
| Угрюмый anonymous 5 Jun 2006 1:01 PM |
2 Barklett "часть фишек безопасности висты не дают сделать именно это" А другая часть соломку подкладывает. То есть на первую часть надежды нет даже у разработчиков. |
|
| Masonok 5 Jun 2006 1:11 PM |
2 Alex > Зато создаёт ложное(и опасное) чувство защищённости. Значит система должна быть специально дырява и глючна чтобы у пользователя не создавалось ложного чувства защищенности?! Тогда вам на Виндовс 9х. Это ваш идеал? Новичков - тысячи, профи - единицы! Чем сложнее новичкам вкусить радость побед тем меньше из них захочет стать профи. |
|
| dimav 5 Jun 2006 1:14 PM |
2 tstone и умник: "dimav: в том-то и дело, что даже в х86 есть аппаратные средства, позволяющие полностью исключить возможность "исполнения данных", или выхода за пределы сегмента, причем любого, не только стека, или смешивания сегмента данных и исполняемого сегмента. Это у них все было еще в 486 проце!" от срыва стека они не спасают. Они спасают от модификации кода в процессе исполнения програмы. А вот в Amd вроде что-то действительно появилось интересное... точнее "перепоявилось" давно известное. |
|
| sa10 5 Jun 2006 2:33 PM |
Маздайка будет безопасной тогда, когда это будет выгодно производителю, а этого не будет. Даже если они случайно по оплошности это сделают, то сразу выгонят виноватого программера и выпустят новую мегаверсию :) |
|
| Megapyle3 5 Jun 2006 5:03 PM |
А я слышал что MS делает новую Windows под названием Singularity - так там исполняемый код загружается только если к нему есть подпись! Я думаю, это будет 100% стабильная система без дыр. |
|
| Barklett 6 Jun 2006 12:08 AM |
> другая часть соломку подкладывает чесслово... может лучше почитать подробнее обо всех фишках, в комплексе? что за что отвечает, как обеспечивает секьюрити... уж поверьте, в МС программеры не глупее вас работают |
|
| iZEN - izenmail.ru 6 Jun 2006 12:19 AM |
Переполнение буфера — типичная проблема языка программирования. В данном случае язык программирования Си, на котором пишутся операционные системы, и столь любимый хакерами (как высокоуровневый ассемблер) по своей идеологии небезопасен. Системы, написанные на таких типобезопасных языках, как ADA и Oberon, полностью исключают проблему переполнения буферов и исполнения кода на стэке. Подумать только, что для таких вот систем в принципе не нужен NX-бит! |
|
| Угрюмый anonymous 6 Jun 2006 10:56 AM |
> в МС программеры не глупее вас работают Ага, но что-то им всё время мешает. Мне действительно интересно, как самая большая софтверная фирма, столько денег тратящая на разработку нового ПО может так лажаться (пусть не очень часто, зато регулярно) Вот стоит у меня на работе MSSQL2005 (лицензионный) и там в Server Management Studio в интерфейсе иногда кнопочки не работают, и сервис пак их не лечит. Это сколько нужно потратить усилий на разработку, сколько будет такой продукт стоить, когда в нём ВСЁ будет работать? Это при использовании свободного софта не так замечается (а что вы хотели за 5 копеек), а в случае мекросовт каждый раз глаз режет. Вот и получается - сколько денег не плати, а софт всё равно глючный. |
|
| Alex 6 Jun 2006 2:31 PM |
2 Barklett >> вот сначала получи "возможность выполнять код в >> привилегированном режиме" >> если не совсем понятно - часть фишек безопасности >> висты не дают сделать именно это Если ты не понял, то АБСОЛЮТНО ВСЁ, что ты перечислил - борьба с последствиями. Причём даже не атак, а так... случайными ошибками выполнения. Если ты не согласен - ну что-ж , назови пример, разберём. :-))) |
|
| Alex 6 Jun 2006 2:35 PM |
2 Masonok Иногда лучше жевать, чем говорить. Всем давно известно, что новички пользуются уже готовыми эксплойтами, написанными специалистами... _по_безопасности_ :-))) А уж они-то , небось радостно потирают руки, предвкушая как будут обливать грязью "защиту" от M$.
|
|
| Alex 6 Jun 2006 2:40 PM |
2 iZEN Нет, это обычная проблема больших проектов. И язык тут - дело десятое. Тут скорее нужна действительно аппаратная платформа, что-то вроде "Эльбруса". Есть примеры слёта программ и на Ада. Причём с катастрофическими последствиями. |
|
| Monstro 6 Jun 2006 5:51 PM |
> Системы, написанные на таких типобезопасных > языках, как ADA и Oberon, полностью исключают > проблему переполнения буферов и исполнения кода > на стэке. Подумать только, что для таких вот > систем в принципе не нужен NX-бит! Еще со времен i386 можно было ставить тип страницы памяти (тем самым задавая права доступа к ней). см формат дескриптора сегмента. Почему MerZko$oft это не заюзало - непонятно. бит NX - бесполезная маркетинговая безделушка |
|
| Barklett 7 Jun 2006 2:11 AM |
> может так лажаться а лажаются все периодически... и малые и большие... да и клиентов у МСа, и софта стороннего понаписано столько, что нереально предугадать как будут вести себя все возможные hard & soft конфигурации, включая возможные нестыковки разных 3rd-party software между собой... реально проверить/оттестировать только часть кнопочки в интерфейсе, говорите? :) ну все, безопасность идет лесом, UAC работать точно не будет :) мух от котлет отделяем? > софт всё равно глючный. софт весь глючный, хоть проприетарный, хоть опенсорс... тока есть разная степень глючности, и не зря абсолютное большинство корпоративных клиентов делают выбор в пользу коммерческого софта и готовых решений > АБСОЛЮТНО ВСЁ, что ты перечислил - борьба с последствиями. и что хочешь сказать? всем отказаться от аппаратной платформы Intel/AMD, и от C/C++ для разработки ОС? нереально... МС тут чем провинился, они делают что могут, чтобы при данных условиях висту сделать безопасной насколько возможно... в таких же условиях и Редхат с Новеллом - вынуждены бороться с последствиями > новички пользуются уже готовыми эксплойтами, написанными специалистами... _по_безопасности_ угу, известный эксплойт для Sql сервера тоже был написан известным секурити-экспертом Дэвидом Литчфилдом (он и нашел баг), выложен в публичный доступ, взят скрипткиддисом, немножко изменен и выпущен в сеть как slammer > А уж они-то , небось радостно потирают руки, предвкушая как будут обливать грязью вы статью-то читали? Литчфилд как раз положительно высказывается про нововведения безопасности в Vista P.S. см. доку с сайта МСа, там более-менее технически расписано, что будет в висте (комплексная защита на разных уровнях, т.е. одни фишки не мешают другим, а дополняют их, повышают общую защищенность системы) http://download.microsoft.com/download/c/2/9/c2935f83-1a10- 4e4a-a137-c1db829637f5/WindowsVistaSecurityWP.doc P.P.S. "Еще со времен i386 можно было ставить тип страницы памяти (тем самым задавая права доступа к ней). см формат дескриптора сегмента" - сегменты и страницы разные вещи... МС раньше юзал и сегменты, пока не случился переход на flat-model памяти... сегменты остались и при плоской модели, тока база 0 и предел 4 гб, т.е. их программы уже не пользуют... в общем, мануалы читать надо с Интела |
|
|