Блог

Простая, но страшная уязвимость - значения по умолчанию

У меня на всех сайтах есть один и тот же файл, который рисует капчу и таким образом, гарантирует, что сообщения оставляются именно человеком, а не компьютером. Но я допустил одну маленькую ошибку, благодаря которой все мои усилия пошли прахом, а обойти защиту стало очень просто. Как все произошло? Банальная забывчивость сделать значение по умолчанию. Я прекрасно знаю о таких проблемах и тут сам попался на банальную ошибку. Ну ничего, это будет мне лишним уроком на будущее.

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

Microsoft поможет найти баги

Security команда из Microsoft будет помогать сторонним разработчикам искать баги в их продуктах и исправлять их. Это станет возможным благодаря программе Microsoft Vulnerability Research.

На самом деле, компания уже давно занимается подобными вещами и уже давно помогает сторонним разработчикам, в том числе и прямым конкурентам. В мае и июне компания работала вплотную с Apple исправляя ошибки, которые были найдены в Internet Explorer и помогая компании Apple исправить подобные ошибки в конкурирующем браузере Safari.

Microsoft поможет найти баги

Документирование решений по безопасности

Сейчас читаю книгу Ховарда и Лебланка - защищенный код и терерь понимаю, почему Виста провалилась. Конечно, это не главная причина, но одна из них. Как я понял, эти два человека являются главными по безопасности в Майкрософт и они очень сильно заблуждаются. Нет, не в безопасности, а в психологии.

В книге они рекомендуют по умолчанию запрещать все, что может нанести вред или содержит потенциальную угрозу. Если пользователь явно разрешит опасную возможность, значит, он отдает себе отчет в возможных проблемах. Это первая ошибка. Большинство пользователей сколько не предупреждай, они не осознают опасность, пока не грянет гром. А даже если и грянет, виноваты будут в люблю случае разработчики.

Под угрозой взлома

С того момента, как я ввел слева меню для выбора месяца, за который вы хотите просмотреть сообщения на блоге, сайт был уязвимым к SQL Injection. Дабы избежать проблем с безопасностью, все входные параметры проходят фильтрацию в централизованной функции, но именно дату и год я брал не из фильруемого массива $_GET, а из автоматом создаваемых переменных $y и $m. Без какой-либо фильтрации значения этих переменных вливалось в запрос со всеми вытекающими последствиями.

И вот тут возникает резонный вопрос - почему меня до сих пор не взломали? Если посмотреть по другим сайтам, то мой сайт с программамми сканируют и пытаются взломать по 10 человек в день минимум. Там у меня стоит система журналирования, по которой я всегда могу узнать, какие запросы отправлялись серверу и реистрируются все необычные попытки обращений. Один раз я так вычислил свою ошибку, которую почему-то не нашли хакеры, хотя были рядом. Там я тоже по случайности один параметр использовал в обход централизованного фильтра

О блоге

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

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне