Tag: безопасность

  • Опубликован Browser Security Handbook

    Компания Google в лице известного эксперта по веб-безопасности Michal Zalewski опубликовала 60-страничный документ, описывающий все тонкости современных браузеров с точки зрения их безопасности. Вся информация очень удобно скомпанована в виде наглядных таблиц, в которых отражены характеристики браузеров по тому или иному критерию. Помимо специалистов по веб-безопасности работа также представляет интерес для веб-разработчиков, которым постоянно приходится подстраиваться под множество браузеров.
    Книга на английском, ссылка ниже.
    Browser Security Handbook.

    P.S. обновил wordpress до 2.7, радуюсь новой фишке “Опубликовать это!”, реализованной в виде букмарклета. Очень удобно публиковать свеженайденный интересный контент, не покидая сайт.

  • Защита от Clickjacking в Opera

    Пользователи браузера FireFox имеют возможность получить высокую безопасность, работая в Сети, благодаря плагину NoScript, который способен защитить от множества атак, включая Clickjacking. К сожалению, кроме XSSFilter в IE8 для других браузеров аналогов NoScript не существует. Учитывая тот факт, что огромное число пользователей предпочитает браузер Opera, проблема защиты от Clickjacking в этом браузере является довольно актуальной. Opera предоставляет большие возможности по кофигурированию, поэтому даже без использования сторонних плагинов пользователь имеет возможность настроить свой браузер для эффективной защиты от Clickjacking.

    (more…)

  • Опубликованы подробности атаки Clickjacking

    Последние две недели в среде специалистов по веб-безопасности не утихали разговоры по поводу готовящейся публикации деталей новой атаки, позволяющей незаметно для пользователя “украсть” его клики. Первоначально предполагалось, что Robert Hansen, известный под ником “RSnake” и Jeremiah Grossman опубликуют доклад о найденной ими новой уязвимости, получившей название Clickjacking, на конференции OWASP в Нью-Йорке 24 сентября 2008 года, однако их выступление было отменено по просьбе компании Adobe, которая была крайне заинтересована в этой атаке, так как основной ее продукт, а именно Adobe Flash, был уязвим перед Clickjacking. Свою просьбу Adobe мотивировал желанием устранить уязвимость еще перед тем, как ее только начнут применять, тем самым обезопасив пользователей Flash. Разглашение подробностей произошло лишь недавно, после того, как на обозрение широкому кругу лиц был выставлен первый PoC от третьих лиц, которые самостоятельно провели собственное исследование, опираясь на ту небольшую информацию, которая все-таки просочилась в публичные блоги и сайты. Честно говоря, я ожидал большего и вся шумиха, которая была поднята по поводу Clickjacking, не сопоставима со значимостью угрозы самой атаки. Тем не менее, определенная степень опасности все же существует и исключать возможность проведения Clickjaсking разработчикам не стоит.

    (more…)

  • Методы обхода httpOnly

    httpOnly – это дополнительный флаг для HTTP-заголовка Set-Cookie, который указывает на запрет чтения/записи данных Cookie посредством JavaScript, отсюда и название: Cookie доступны только через протокол HTTP. Использование httpOnly позволяет веб-разработчикам установить собственную политику безопасности в отношении доступа к Cookie из среды браузера, что по замыслу разработчиков из Microsoft должно помочь в борьбе против XSS-уязвимостей. Однако обойти ограничения httpOnly довольно просто…

    (more…)

  • Защита от CSRF

    csrfCSRF является одной из самых распространенных уязвимостей в современных веб-приложениях. Это связано с недооценкой разработчиками степени угрозы CSRF-атак, что выражается в недостаточных мерах защиты против CSRF или вообще в полном их отсутствии. На самом деле, эффективно обезопасить свое веб-приложение от CSRF совсем не сложно: уже достаточно давно практикуется универсальный способ, о котором я хотел бы рассказать в этом посте. Кроме того, будут затронуты уже готовые реализации этого приема: CSRFx и csrf-magic.

    (more…)

  • Магия случайных чисел (часть 2)

    Этот пост является продолжением прошлой статьи, в которой шла речь о проблемах генераторов случайных чисел в PHP с примером эксплоита для WordPress через уязвимость в phpBB2. В этот раз рассмотрим интересную особенность случайных чисел, сгенерированных с помощью функции rand(), а также способы защиты от подобного рода атак в своих веб-приложениях.

    (more…)

  • Предсказываем случайные числа в PHP

    Стефан Эссер не перестает меня удивлять: в этот раз в своем блоге он рассказал об особенностях генерации случайных чисел в PHP, которые при особых условиях позволяют предугадывать случайные значения. Его находки открывают возможность для реализации совершенно новых атак – Cross Application Attacks, в основе которых лежит неправильное использование веб-приложениями функций для генерации случайных чисел. При этом одно веб-приложение, не имея полноценных уязвимостей, но обладающее погрешностью в вычислении случайных чисел, открывает дверь для реализации атаки на совершенно другое веб-приложение, находящееся на том же сервере. В качестве примера Стефан описал алгоритм проведения атаки на WordPress через дыру в phpBB2. Так как подтверждение его концепции в виде эксплоита отсутствует, я решил провести собственное исследование и написать рабочий PoC. После нескольких дней тестирования на локальном веб-сервере, я пришел к выводу, что уязвимость действительно имеет место, и ее эксплуатация вполне реальна. В результате мной был написан эксплоит для WordPress <= 2.6.1 посредством phpBB2, позволяющий сменить пароль администратора, не имея доступа к его почтовому ящику.

    (more…)

  • К чему может привести усечение данных в SQL

    Совсем недавно известный эксперт по безопасности Стефан Эссер (Stefan Esser) опубликовал в своем блоге статью, посвященную новой уязвимости, связанной с особенностями сравнения строк и автоматического усечения данных в MySQL. Именно Стефан обнаружил знаменитую дыру zend_hash_del_key_or_index, после чего в Сети появилось множество эксплоитов для популярных веб-приложений. Похоже в этот раз дело грозит обернуться теми же последствиями.

    (more…)

  • Еще раз о правильной фильтрации

    Я уже не раз излагал свои мысли по поводу принципов грамотной фильтрации входящих данных, этот пост будет своеобразным дополнением, подкрепленным живым примером.

    Недавно столкнулся с интересной SQL-инъекцией на одном популярном ресурсе, посвященному взлому и хакингу. С одной стороны, признаки успешно внедренного SQL-кода были явными, однако поведение уязвимого веб-приложения при особых запросах говорило о наличии некой фильтрации на определенные ключевые слова. Например запрос ‘ OR 1=1/* успешно проходил, но, подставив AND вместо OR, я постоянно получал пустую страницу – это, очевидно, следствие возникшей ошибки синтаксиса SQL-запроса. Проанализировав ответы скрипта, я убедился, что, во-первых, проверка на ключевые слова действительно имела место, и, во-вторых, производилась не просто проверка, а вырезание из строки запроса всех совпадений со списком ключевых слов. На PHP это выглядело бы примерно так:

    <?php
    $badwords = array("AND","UNION","SELECT","WHERE","INSERT","UPDATE","DELETE");
    str_replace($badwords,"",$GET['id']);
    ?>

    Обойти такую проверку сущий пустяк.

    (more…)

  • Хранимые процедуры – панацея от SQL-инъекций?

    У многих разработчиков сложилось мнение, что хранимые процедуры могут спасти от любой SQL-инъекции. Напомню, что хранимые процедуры (stored procedures, SP), это функции, написанные на языке SQL, с помощью которых выполнются заранее подготовленные запросы к базе данных. Хранимая процедура, как и функция в любом другом языке программирования, имеет входные и возвращаемые данные, позволяет оперировать переменными и, самое главное, облегчает жизнь разработчику, избавляя его от однотипных рутинных работ. Немаловажным является тот факт, что хранимые процедуры позволяют динамически составлять запросы, при этом входящие в хранимую процедуру данные поступают как параметры, обладающие определенным типом и длиной, что исключает возможность SQL-инъекций. Тем не менее внедрить SQL-код можно! Рассмотрим, при каких обстоятельствах возможны SQL-инъекции в хранимых процедурах на примере MySQL.

    (more…)