Кстати, лично мне интересно было бы послушать ПОЧЕМУ Вы чувствуете себя более безопасно. Без наездов — действительно интересно, как в принципе могут появиться подобные мысли.
Ибо сказано
The term “Unix security” is, almost by definition, an oxymoron because
the Unix operating system was not designed to be secure, except for the
vulnerable and ill-designed root/rootless distinction. Security measures to
thwart attack were an afterthought. Thus, when Unix is behaving as
expected, it is not secure, and making Unix run “securely” means forcing it
to do unnatural acts. It’s like the dancing dog at a circus, but not as funny—
especially when it is your files that are being eaten by the dog.
Всегда пожалуйста. У этой уязвимости весьма забавная история. Первое упоминание, которое я видел, описывается в UHH (рекомендую — весьма замечательное чтиво: несмотря на сознательный отказ от обратной совместимости, практически все проблемы двадцатилетней давности все еще актуальны, это просто невероятная «совместимость»: совместимость ТОЛЬКО со старыми проблемами).
From: Olin Shivers <shivers@bronto.soar.cs.cmu.edu>
Date: Wed, 30 Jan 91 23:49:46 EST
To: ian@ai.mit.edu
Cc: zvona@gang-of-four.stanford.edu, UNIX-HATERS
Subject: MIT-MAGIC-COOKIE-1
Hereabouts at CMU, I don’t know anyone that uses xauth. I know
several people who have stared at it long and hard. I know several
people who are fairly wizardly X hackers. For example, the guy that
posted the program showing how to capture keystrokes from an X
server (so you can, for example, watch him type in his password) is a
grad student here. None of these guys uses xauth. They just live dangerously,
or sort of nervously toggle the xhost authentication when
they need to crank up an X network connection.
…
It’s really sobering to think we live in a society that allows the people
who design systems like xauth to vote, drive cars, own firearms, and
reproduce.
Выделение мое. Речь идет о факте, свершившемся задолго до самого письма. Код на скриншоте — из средины 90-х. Ну и юникс-вей as is: проблему с кривой архитектурой как бы решили не менее кривой заплаткой (которую никто не хотел использовать из-за ее крайней кривости, даже полностью отдавая себе отчет в небезопасности такого подхода), но при этом избавились только от удаленного вектора атаки.
Если пример был неудачный, и нужно было указать другое название — прошу прощения, я в сортах… м-м-м… вирусни «не разбираюсь» вот уже лет 6 как.
Нет, Вы все таки постарайтесь меня удивить. Сламмер: патч выпущен за полгода до начала распространения червя Бластер: уязвимость запатчена за месяц до начала распространения Сассер: уязвимость запатчена почти месяцем ранее.
Ну и мой любимый. Абсолютный рекордсмен по скорости распространения. Встречайте, Майдум: использовал «уязвимость» в ДНК пользователей. До сих пор не запатчена (у линуксоидов и пользователей макос к тому же еще и активно культивируется).
Читаем внимательно: я с Вами ПОЛНОСТЬЮ согласился в вопросе разного уровня защищенности при одинаковой распространенности. Я лишь уточнил, что линукс безнадежно «сливает» технологически
Ну ОК, специально для Вас поясню мысль про Conficker, чтоб Вы впредь были осторожнее с суждениями в вопросах, в которых не разбираетесь.
Хронология:
23 октября 2008-го года Microsoft выпускает бюллетень MS08-067, закрывающий уязвимость.
21 ноября 2008-го года (через месяц) обнаружен первый штамм вируса.
Вирус попадает во все антивирусные базы и медленно распространяется еще два месяца.
С началом нового 2009-го года распространение приобретает характер эпидемии, пока в средине января не приобретает взырвной характер 6.5 миллионов заражений за 4 дня
Какие выводы? Пользователи не обновляющие ОС и антивирусные базы, не имеющие файрфолов и игнорирующие любые другие средства защиты. Да, действительно, если такие «страдальцы» пересядут на линукс там начнутся эпидемии похуже конфикера (просто потому, что линукс имеет крайне плохие средства обеспечения безопасности).
Да, кстати, расскажите мне еще как включить code integrity, где в линуксе искать Security Reference Monitor и когда же в конце концов пофиксят ту «небольшую» уязвимость, сводящую на нет все потуги линукса выглядеть безопасной системой?
Охчорт. Приведите мне аналог SAGE постоянно проводящий аудит кода линукса. Покажите мне в коде линукс (хотя бы в ядре) аннотации для статической верификации, покажите мне ХОТЯ БЫ тесты регресии с покрытием не менее 70% ХОТЯ БЫ одного только ядра.
Да, действительно, технологии имеют значение. Но здесь они явно не в пользу линукса.
Ну а то, что Вы привели в качестве примера Conficker лишь еще раз доказывает, что Вы совершенно не разбираетесь в вопросе.
Никто не говорил, что это панацея. Это очень серьезный mitigation factor. Без ASLR, как Вы уже упомянули, DEP не имеет смысла. С ASLR пока что «борются» heap spraying-ом, но как по мне и ему недолго осталось. На x64 системах достаточно повысить энтропию ASLR на 8 бит и «распрыскивать» придется не полминуты-минуту, как сейчас, а несколько часов (и пользователь конечно же будет терпеливо ждать).
Одной из основных проблем с ASLR остается несовместимый софт. По дефолту для всего софта, который не задекларировал совместимость с ASLR, эта технология отключается. Но довольно несложно сделать форсированный ASLR и для таких приложений.
Количество «вирусов» под платформу X прямо пропорционально её доли рынка.
Популярное заблуждение. Зависимость ОЧЕНЬ нелинейная.
Групповой иммунитет в отношении компьютерных вирусов никто не отменял. Вполне очевидно, что для любого отдельно взятого Mac-вируса как минимум 95% общей «популяции» компьютеров будут к нему «иммунны». Если же посмотреть на таблицу в вышеприведенной статье, даже для самых вирулентных переносчиков кори и коклюша ВЕРХНЯЯ оценка группового иммунитета составляет 94% (что означает, что если не менее 94 процентов популяции будут иммунны к данному заболеванию, то эпидемии не случится). Обычно же этот показатель не превышает 80%.
Таким образом написание вируса под мак (и тем более под линукс) неоправдано потому, что он не получит распространения. А если кто-то решает забить на этот факт и таки написать вирус, то этот вирус «как ни странно» не получает распространения.
> Главное, чтобы в sudoers был NOPASSWD
Это совершенно необязательно. Рут нужен не всегда, получить рута в линуксе при необходимости крайне просто (даже не используя zero-day LPE, открытые по шесть лет): можно просто использовать недостаток дизайна X.org (очередной, да), известный и не закрытый уже 20 лет: i.imgur.com/WCvhn.png
Кейлоггер, не требующий административных прав (и позволяющий в числе прочего снимать ввод в gksudo и терминалы). Попробуйте «прослушать» secure desktop в винде. А из-под непривилегированного юзера?
$ cat print \«pwned\» >~/test.py
$ chmod a-x ~/test.py #just in case
$ python ~/test.py
По поводу автозапуска — ну что ж еще остается, кроме как «бороться» с виндой десятилетней давности (да и там все отключали).
Ну а подпись пакетов — такое дело. Вон при взломе редхата добрались до хранилища сертификатов. Кстати, когда введут подписи исполняемых файлов/скриптов?
1. Не могу вспомнить ни одной Windows-specific части в COM. Более того, есть успешные реализации типа COMsource или даже так. Если смотреть на неполные реализации COM, то все становится еще интереснее. Под прицелом оказываются не только carbon/cocoa, но и I/O Kit (да, у некоторых даже драйверы ядра частично на COM).
2. Дык COM как таковой здесь ни при чем. Более того, «довольно плохо проработанные технологии для связывания разнородных систем» к этой претензии не относится ну совсем. То есть вообще. Более того, тот же XPCOM довольно точно повторяет собственно дизайн COM, но ABM требует, чтоб IUnknown был переименован в nsISupports. Ну а w3c «на полных парах» разрабатывает WebIDL. Глядишь лет через 10-15 (когда у всех уже будут собственные «нестандартные» реализации) и примут.
3. Вообще то, виндовое компонентное связывание используется на несколько порядков шире, чем plain-text пайпы. Хотя бы потому, что оно проникло далеко за пределы винды.
Windows script Host, Вы имели в виду? Отличная штука, да. До сих пор частенько пользуюсь — чисто по привычке.
В качестве отрицательных примеров можно вспомнить омгэшную CORBA и майкрософтовский COM — довольно плохо проработанные технологии для связывания разнородных систем.
Не скажу за CORBA, но есть ли у Вас конкретные претензии к COM?
А COM имеет довольно узкое применение для связи программ в среде MS Windows, хотя никто не мешал его с самого начала разработать более универсальным.
«Узкое применение»? Да он в Windows ВЕЗДЕ. То есть вообще везде. Что же до «универсальности» — прошу пояснить свою мысль. Это Вы о кроссплатформенности? Или о том, что какие то интерфейсы невыразимы на MIDL?
В мире Unix, для взаимодействия консольных программ есть технология каналов (pipe), о которой я уже писал раньше.
Вот как раз это следовало приводить в качестве отрицательного примера ВООБЩЕ не проработанной технологии для связывания разнородных систем. Ну то есть ее могло хватать для задач тридцатилетней давности, но сейчас — однозначно нет.
Майкрософт, например, в своей реализации пайпов в powershell добавила объектность, что потенциально должно было сделать их супергибкими. Но простые решения, как говорится, «рулят».
Что значит «потенциально»? Вообще то, если взять пример из Вашей первой статьи, то на PS все будет именно так, как я описал:
ps | where {$_.Name -match «powershel+»} | kill
Естественно есть сокращения для часто используемых вещей типа «kill -n powershe*», но это уже абстракция более высокого уровня, созданная исключительно для удобства (программист может и сам вводить эти абстракции, если они ему нужны)
И где сейчас этот powershell…
Что Вы хотите сказать? Даже если брать только Windows 7, в которой он по дефолту, то установлено уже почти 200 миллионов копий — в несколько раз больше, чем всех установок Linux, MacOSX, SUA/Windows и всяких древних коммерческих юниксов.
> Видимо работает только на Office 2007
К сожалению, на самом деле вряд ли. Ну то есть в 2010-м офисе скорее всего залатали полностью, а вот 2003-м не работает только данный конкретный PoC. Меня удивляет сам факт попытки загрузки pp7x32.dll, но если такая попытка была для одной dll, то вполне возможно будет и для какой нибудь другой.
Таки теперь я согласен с gribozavr: стоило совсем выбросить текущий каталог из дефолтного порядка загрузки, а для старых LoB приложений оставить галку на Compatibility табе.
Ну первый пост LeBlanc на эту тему датирован 2008-м, так что в 2006-м (когда был выпущен 2007-й офис) об этом могли и не задумываться, а в 2010-м уже запатчили. С другой стороны лично мне вообще ни хрена непонятно зачем пытаться грузить несуществующие dll-ки.
Win7 x64/Office 2007 (x86) подтверждаю калькуляторы. Доберусь до 2010-го — проверю там
Вот бы еще поменьше экспресии и разговоров про «ниасиливших». Тот PoC, который был приведен в «недавнем топике» не работал и принципиально не мог работать, ибо riched20.dll преспокойно лежит в System32 и загружается именно оттуда. pp7x32.dll же — похоже вообще нет в системе и лично для меня загадка на хрена на нее делается LoadLibrary.
Но факт остается фактом: похоже, я чего то не знаю и попытки загрузки несуществующих dll-ок — более распространенное явление, чем мне казалось.
Ибо сказано
Выделение мое. Речь идет о факте, свершившемся задолго до самого письма. Код на скриншоте — из средины 90-х. Ну и юникс-вей as is: проблему с кривой архитектурой как бы решили не менее кривой заплаткой (которую никто не хотел использовать из-за ее крайней кривости, даже полностью отдавая себе отчет в небезопасности такого подхода), но при этом избавились только от удаленного вектора атаки.
Нет, Вы все таки постарайтесь меня удивить.
Сламмер: патч выпущен за полгода до начала распространения червя
Бластер: уязвимость запатчена за месяц до начала распространения
Сассер: уязвимость запатчена почти месяцем ранее.
Ну и мой любимый. Абсолютный рекордсмен по скорости распространения. Встречайте, Майдум: использовал «уязвимость» в ДНК пользователей. До сих пор не запатчена (у линуксоидов и пользователей макос к тому же еще и активно культивируется).
Ну ОК, специально для Вас поясню мысль про Conficker, чтоб Вы впредь были осторожнее с суждениями в вопросах, в которых не разбираетесь.
Хронология:
23 октября 2008-го года Microsoft выпускает бюллетень MS08-067, закрывающий уязвимость.
21 ноября 2008-го года (через месяц) обнаружен первый штамм вируса.
Вирус попадает во все антивирусные базы и медленно распространяется еще два месяца.
С началом нового 2009-го года распространение приобретает характер эпидемии, пока в средине января не приобретает взырвной характер 6.5 миллионов заражений за 4 дня
Какие выводы? Пользователи не обновляющие ОС и антивирусные базы, не имеющие файрфолов и игнорирующие любые другие средства защиты. Да, действительно, если такие «страдальцы» пересядут на линукс там начнутся эпидемии похуже конфикера (просто потому, что линукс имеет крайне плохие средства обеспечения безопасности).
Для «писателей» повторю:
С «панацеей» в виде noexec на ~/
Да, действительно, технологии имеют значение. Но здесь они явно не в пользу линукса.
Ну а то, что Вы привели в качестве примера Conficker лишь еще раз доказывает, что Вы совершенно не разбираетесь в вопросе.
Одной из основных проблем с ASLR остается несовместимый софт. По дефолту для всего софта, который не задекларировал совместимость с ASLR, эта технология отключается. Но довольно несложно сделать форсированный ASLR и для таких приложений.
Популярное заблуждение. Зависимость ОЧЕНЬ нелинейная.
Групповой иммунитет в отношении компьютерных вирусов никто не отменял. Вполне очевидно, что для любого отдельно взятого Mac-вируса как минимум 95% общей «популяции» компьютеров будут к нему «иммунны». Если же посмотреть на таблицу в вышеприведенной статье, даже для самых вирулентных переносчиков кори и коклюша ВЕРХНЯЯ оценка группового иммунитета составляет 94% (что означает, что если не менее 94 процентов популяции будут иммунны к данному заболеванию, то эпидемии не случится). Обычно же этот показатель не превышает 80%.
Таким образом написание вируса под мак (и тем более под линукс) неоправдано потому, что он не получит распространения. А если кто-то решает забить на этот факт и таки написать вирус, то этот вирус «как ни странно» не получает распространения.
Это совершенно необязательно. Рут нужен не всегда, получить рута в линуксе при необходимости крайне просто (даже не используя zero-day LPE, открытые по шесть лет): можно просто использовать недостаток дизайна X.org (очередной, да), известный и не закрытый уже 20 лет: i.imgur.com/WCvhn.png
Кейлоггер, не требующий административных прав (и позволяющий в числе прочего снимать ввод в gksudo и терминалы). Попробуйте «прослушать» secure desktop в винде. А из-под непривилегированного юзера?
Следите за руками:
$ cat print \«pwned\» >~/test.py
$ chmod a-x ~/test.py #just in case
$ python ~/test.py
По поводу автозапуска — ну что ж еще остается, кроме как «бороться» с виндой десятилетней давности (да и там все отключали).
Ну а подпись пакетов — такое дело. Вон при взломе редхата добрались до хранилища сертификатов. Кстати, когда введут подписи исполняемых файлов/скриптов?
%SystemRoot% и %ProgramFiles%? Удачи.
2. Дык COM как таковой здесь ни при чем. Более того, «довольно плохо проработанные технологии для связывания разнородных систем» к этой претензии не относится ну совсем. То есть вообще. Более того, тот же XPCOM довольно точно повторяет собственно дизайн COM, но ABM требует, чтоб IUnknown был переименован в nsISupports. Ну а w3c «на полных парах» разрабатывает WebIDL. Глядишь лет через 10-15 (когда у всех уже будут собственные «нестандартные» реализации) и примут.
3. Вообще то, виндовое компонентное связывание используется на несколько порядков шире, чем plain-text пайпы. Хотя бы потому, что оно проникло далеко за пределы винды.
Windows script Host, Вы имели в виду? Отличная штука, да. До сих пор частенько пользуюсь — чисто по привычке.
Не скажу за CORBA, но есть ли у Вас конкретные претензии к COM?
«Узкое применение»? Да он в Windows ВЕЗДЕ. То есть вообще везде. Что же до «универсальности» — прошу пояснить свою мысль. Это Вы о кроссплатформенности? Или о том, что какие то интерфейсы невыразимы на MIDL?
Вот как раз это следовало приводить в качестве отрицательного примера ВООБЩЕ не проработанной технологии для связывания разнородных систем. Ну то есть ее могло хватать для задач тридцатилетней давности, но сейчас — однозначно нет.
Что значит «потенциально»? Вообще то, если взять пример из Вашей первой статьи, то на PS все будет именно так, как я описал:
ps | where {$_.Name -match «powershel+»} | kill
Естественно есть сокращения для часто используемых вещей типа «kill -n powershe*», но это уже абстракция более высокого уровня, созданная исключительно для удобства (программист может и сам вводить эти абстракции, если они ему нужны)
Что Вы хотите сказать? Даже если брать только Windows 7, в которой он по дефолту, то установлено уже почти 200 миллионов копий — в несколько раз больше, чем всех установок Linux, MacOSX, SUA/Windows и всяких древних коммерческих юниксов.
А вообще странная постановка вопроса: «Нравится разрабатывать? Так почему ты еще не маркетолог?»
К сожалению, на самом деле вряд ли. Ну то есть в 2010-м офисе скорее всего залатали полностью, а вот 2003-м не работает только данный конкретный PoC. Меня удивляет сам факт попытки загрузки pp7x32.dll, но если такая попытка была для одной dll, то вполне возможно будет и для какой нибудь другой.
Таки теперь я согласен с gribozavr: стоило совсем выбросить текущий каталог из дефолтного порядка загрузки, а для старых LoB приложений оставить галку на Compatibility табе.
Вот бы еще поменьше экспресии и разговоров про «ниасиливших». Тот PoC, который был приведен в «недавнем топике» не работал и принципиально не мог работать, ибо riched20.dll преспокойно лежит в System32 и загружается именно оттуда. pp7x32.dll же — похоже вообще нет в системе и лично для меня загадка на хрена на нее делается LoadLibrary.
Но факт остается фактом: похоже, я чего то не знаю и попытки загрузки несуществующих dll-ок — более распространенное явление, чем мне казалось.