последствия ядерной войны КРИС КАСПЕРСКИ АКА МЫЩЪХ Спецвыпуск: Хакер, номер #072, стр. 072-062-7 К тому же рандомизация не затрагивает стек, а лишь частично воздействует на кучу, оставляя атакующему достаточно предсказуемой информации для успешной реализации атаки, неизбежность которой очевидна всем, кроме парней из Microsoft. В частности, пакет PaX, созданный для UNIX и успешно перенесенный на NT (где он известен под именем Wehnus), рандомизует все, что только можно рандомизовать, успешно работая от w2k до Server 2003 с минимальными издержками производительности. Подробнее о «настоящей» рандомизации можно прочитать на en.wikipedia.org/wiki/Address_Space_Layout_Randomization. Другим шагом вперед стало помещение списка обработчиков структурных исключений (SEH) в специальную секцию PE-файла (.pdata), доступную только для чтения. До этого список обработчиков располагался в стеке и был свободно доступен для модификации. На самом деле, это не имеет никакого отношения к операционной системе и обуславливается исключительно одной лишь политикой компилятора. Никто не запрещает вытворять подобные трюки даже на 9x, не говоря уже про w2k или XP. Вот только подходящих компиляторов пока что нет. Ах да, маленькая деталь. Даже если приложение не устанавливает никаких своих обработчиков, то за обработку исключений отвечает обработчик, назначаемый операционной системой и вплоть до Server 2003 SP1 размещающийся в стеке. Теперь же, с приходом Висты к власти, его там нет. Препятствует ли это удаленным атакам? Сомневаюсь. Обработчики структурных исключений очень широко распространены в приплюснутом Си, где они устанавливаются компилятором неявно, не говоря уже о специальных средствах вроде секций try/except. До тех пор, пока разработчики не перекомпилируют все свои приложения новыми версиями компиляторов (поддерживающих эту фишку), в стеке по-прежнему будет болтаться куча SEH'ов, спасающих хакеров от голодной смерти. Но даже после перекомпиляции в секцию .pdata попадут лишь статические обработчики (адрес которых известен еще на стадии трансляции), а с учетом активного внедрения парадигм метапрограммирования таковых окажется не так уж и много. Конечно, если засунуть указатели на динамически назначаемые обработчики в секцию .data (или локальную память потока), это существенно усложнит хакерам жизнь, но опять все упирается в вопрос: «Когда появятся соответствующие компиляторы?». [понижение привилегий служб и фоновых процессоров.] Наконец-то, до Microsoft дошел тот факт, что запускать службы с привилегиями system нельзя, особенно если эти службы написаны кое-как и порождают многочисленные зависимости, которые нельзя отключить без ущерба для функциональности системы. Штатные службы Висты работают на минимально возможном уровне привилегий. Естественно, «минимально возможном» в представлении парней из Рэймонда. При желании этот уровень можно было бы существенно понизить, разбив службы на несколько частей, каждая из которых работает на том уровне привилегий, который ей реально необходим. Это сокращает долю привилегированного кода, упрощая его проверку и сокращая количество возможных дыр. |