Хронограф
18152229
29162330
310172431
4111825
5121926
6132027
7142128

<декабрь>

Путеводители

Персональный стимул к образованию

Пользуясь Интернетом, надо или постоянно учиться, или приготовиться к неприятностям

Комплекс программных и/или аппаратных средств, защищающих пользовательский компьютер от несанкционированного доступа, получил название «файервол» — firewall, что в дословном переводе с английского означает «огненная стена». Фото (Creative Commons license): Dominic Alves

(Окончание. Начало читайте здесь)
В качестве гипотетической жертвы хакеров рассмотрим обычного, ничем не примечательного пользователя. За ним персонально никто не охотится, просиживая сутками у монитора и дожидаясь его выхода в сеть. Ему, как и миллионам других потенциальных жертв, программный робот присылает письма с опасными вложениями. Он сам открывает эксплойт и подхватывает какую-нибудь гадость. Тут все ясно.

Более тонкая ситуация складывается, когда он самостоятельно забредает на какой-нибудь злокозненный сайт. Тут возможны два сценария. Первый разворачивается, когда пользовательский компьютер недостаточно защищен. Второй — когда атакующий эксплойт использует ошибки, имеющиеся в операционной системе пользователя.

Политика закрытых дверей

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

Данная неприятность возможна в том случае, если пользователь не следит за состоянием своего брандмауэра. При этом надо иметь в виду, что штатный микрософтовский брандмауэр — продукт не самый совершенный. Опытные люди предпочитают Symantec, Tiny Personal Firewall, ZoneAlarm или Kerio. Правда, если до конца закрутить все гайки (установить предельную степень защиты), то пользование браузером превратится в сущую муку. А некоторые действия станут принципиально невозможны. Так, например, сайты электронной торговли для идентификации клиента и прочих вполне естественных целей записывают на его компьютере так называемые «куки» (cookies) — символьную информацию, не способную причинить вреда. Доведенный же до высшей степени бдительности брандмауэр куки не пропустит, и ничего купить в Интернете пользователю не удастся.

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

Ошибку в исходном программном коде принято называть багом (от английского bug — жучок). Так что увидев неприятное насекомое на экране, стоит задуматься, с какой стороны стекла оно находится. Фото (Creative Commons license): Hashir Milhan

Опасный хвост

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

Наиболее типичным и распространенным способом хакерской атаки на «дырявую» ОС или на её наиболее уязвимое (по причине интенсивности использования) приложение — браузер — является искусственное переполнение буфера. Его суть такова. Исходные коды программы пишутся на языке С++, в котором нет контроля размера строковых переменных и массивов. Этот недостаток может быть скомпенсирован, но не все программисты обращают внимание на такую «мелочь». После транслирования исходной программы ошибка, естественно, наличествует и в исполнительном коде. Производители ПО предпочитают называть такие ошибки программными уязвимостями, поскольку без вмешательства злых сил программа работает нормально. Разве что крайне редко по причине случайных факторов она может зависнуть, что неприятно, но не влечет за собой роковых последствий.

Хакеры же используют данный тип уязвимости следующим образом. При обращении на сайт злоумышленника браузер пользователя запрашивает данные, которые имеют фиксированную длину — скажем, 16 байт. Эти данные принимаются в буфер, который может размещаться как в стеке («хвост» оперативной памяти, работающий по магазинному принципу), так и в «куче» (область памяти, расположенная за областью загруженных программ). Атакующая программа выдает не 16 байт, а 24, что браузер «не замечает». В результате 8 лишних байт попадут туда, куда они попасть не должны, затерев имеющуюся в захваченных адресах информацию-то есть подменив её. Это может быть адрес возврата из подпрограммы. И в этом случае процессор пользовательского компьютера не вернется к исполнению программы, обратившейся к подпрограмме, а перепрыгнет на тот адрес, который был навязан ему хакером. И тут возможны самые неожиданные результаты — от зависания ОС (что называется DoS-атакой, «отказ обслуживания») до вполне осмысленных действий, способных привести к внедрению деструктивной программы. Это может быть и вообще исполнительный код, и в данном случае он будет заменен на код хакера.

И тут уместно сравнение работы компьютера с анекдотической ошибкой особо тупого сотрудника Макдоналдса, каждое действие которого, как известно, описано в 750-страничной корпоративной инструкции. Каждого клиента он обслуживает, заглядывая в блокнотик, где на каждой странице записана инструкция — от «здравствуйте» до «приятного аппетита». Если какой-нибудь шутник подменит страничку в середине блокнота, сотрудник-недотепа может неожиданно вылить кофе на голову клиента либо отдать ему выручку. Абсолютно так же действует и подвергшийся атаке компьютер.

Вполне понятно, что разработчики ПО, включая, естественно, и Microsoft, борются с этой проблемой не только при помощи беспрерывного латания программных дыр. В подавляющем большинстве современных ОС описанная выше лобовая атака невозможна, поскольку в процессе получения данных в буфер от внешнего источника происходит их анализ на наличие последовательностей исполнительных кодов. Однако и хакеры не дремлют, используя хитроумные приемы противодействия типа самомодифицирующихся и полиморфных кодов, шифрованных оболочек и т.д.и т.п.

Помимо атак на переполнение буферов используются и другие приемы. Например, SQL-инъекции, представляющие собой некорректное обращение к базам данных на языке запросов SQL, или PHP-инъекции, использующие уязвимости языка автоматического формирования HTML-страниц. Фото (SXC license): Rodolfo Clix

Что делать?

Существует ряд приемов, позволяющих не то чтобы полностью обезопасить себя от взломов и инфицирования, но существенно повысить свою «обороноспособность».

Вполне понятно, что на данном этапе развития интернет-коммуникаций невозможно обходиться без антивирусного пакета, в котором есть не только сканер, но и сторож. Точно так же нельзя обходиться и без брандмауэра (он же фарвойл, он же межсетевой экран). При этом настройки данного инструмента должны быть достаточно жесткими. Но не настолько, чтобы отрубать ПК от внешнего мира. Необходим разумный компромисс между безопасностью и функциональностью.

Полезно установить какую-либо антишпионскую программу. Однако в обозримом будущем необходимость в этом отпадет, поскольку производители антивирусного софта начали вводить в свои продукты функцию антиSpyware.

Работая под управлением любой ОС и используя приложения любых производителей ПО, необходимо не только устанавливать присылаемые разработчиками патчи, но и записаться на рассылку, оповещающую об обнаруженных уязвимостях. Поскольку уязвимости выявляются гораздо чаще, чем раз в месяц, что соответствует графику поставок патчей клиентам компанией Microsoft. Но, к сожалению, и это не панацея от всех возможных бед. Известны случаи, когда интернет-общественность сообщает об обнаруженных уязвимостях MS-продуктов, но компания не считает нужным латать дыры, если они не являются критическими уязвимостями. Так, например, найденная летом 2007 года проблема отработки на MS-браузере написанных на Javascript сценариев, приводящая к манипулированию состоянием адресной строкой браузера, не устранена до сих пор. В чем можно убедиться, на страничке с безопасной демонстрацией эффекта.

Наибольшее количество уязвимостей обнаруживается в микрософтовских продуктах. Потому что именно они подвергаются наиболее массированному хакерскому обстрелу. И не потому, что «весь мир» ненавидит Билла Гейтса. Просто 95% компьютеров используют продукцию «врага рода человеческого», и, следовательно, при помощи обнаружения какой-либо «дыры», скажем, в MS-браузере или в MS-офисе, можно «отхачить» громадное количество «юзеров».

Можно предположить, что браузеры других компаний таят в себе не меньшее число уязвимостей. Но за счет малого интереса к ним злоумышленников, они обнаруживаются гораздо реже. Поэтому есть резон установить на свой компьютер какой-то иной браузер. Например, Opera, Mozilla Firefox или Safari (которые, кстати, не поддерживают «стремную» функцию ActiveX).

Ещё более действенная защита — замена и операционной системы менее притягательной для хакеров, однако на такой радикальный шаг способны немногие.

Если же вы являетесь патриотом Microsoft, то и это поправимо. Просто необходимо почитать соответствующую литературу по компьютерной безопасности с конкретными рекомендациями и привести ОС в надлежащий вид. (Существующие установки по умолчанию хороши для опытного пользователя, но способны доставить немало бед рядовому юзеру с некомпьютерным образованием.) Например, необходимо отключить функцию DCOM, которая позволяет использовать компьютер в составе распределенной вычислительной сети. Понизить уровень пользователя с «администратора» до «юзера». Защищать все свои файлы паролем. В Outlook Express запретить в получаемых письмах автоматическое исполнение макросов, сценариев и чего бы то ни было, что может сулить угрозу. Не мешает подписаться и на какую-либо рассылку, информирующую о состоянии сетевой безопасности. Например, на «Russian Security Newsline». В общем, чем больше мы знаем о повадках врагов и методах их подлой деятельности, тем эффективнее способны противостоять их козням.

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

Безопасность всегда предполагает добровольный отказ от множества весьма соблазнительных возможностей. Фото (Creative Commons license): Jamie Moore

Один пароль на всех

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

Процедура идентификации предполагает обращение к сайту провайдера OpenID и считывание хранящихся на нем идентификационных данных. Вполне естественно, что когда в процессе обмена данных вместо двух участвуют три стороны — пользователь, OpenID-ориентированный сайт и провайдер данной услуги — вероятность утечки приватной информации увеличивается.

Поэтому необходимо быть готовым к тому, что в результате противоправных действий злоумышленников, некий «чужой дядя» сможет выдавать себя за тебя на всем множестве сайтов, которые поддерживают технологию OpenID. Это крайне неприятно, когда твоим именем кто-то подписывает какую-либо мерзость в близком тебе блоггерском сообществе. Печально, когда кто-то начнет пользоваться твоим электронным кошельком. Грустно, когда хранящиеся у провайдера OpenID персональные сведения — имя, электронный адрес и прочая приватность — будут похищены. И такие случаи уже зарегистрированы. Например, у BestPersons сравнительно недавно была взломана клиентская база, которая тут же была использована для массированной рассылки спама.

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

Владимир Тучков, 10.11.2008

 

Новости партнёров