На странице cwe.mitre.org/top25 появился обновленный список из 25 наиболее опасных ошибок в программах. Новый рейтинг был составлен в самом конце июня. Первый десяток типичных ошибок, которые могут привести к самым печальным последствиям: 1. Неправильная интерпретация пользовательских данных в SQL-запросе. Ошибка приводит к возможности использования SQL-инъекций (SQL Injection). 2. Неправильная интерпретация пользовательских данных, передаваемых в команды операционной системы. Ошибка приводит к возможности выполнять произвольные команды на уязвимой системе (OS Command Injection). 3. Копирование буфера без проверки его размера. Это классическое переполнение буфера (Classic Buffer Overflow). 4. Неправильная интерпретация пользовательских данных при генерации веб-страницы. Ошибка приводит к возможности разместить на веб-странице не только текст, но и исполняемый скрипт (Cross-site Scripting, XSS). 5. Пренебрежение проверкой аутентификации при выполнении критических действий (Missing Authentication for Critical Function). Например, для смены пароля обычно нужно вводить старый пароль или отвечать на секретный вопрос. В случае, если этой защитой пренебрегают, злоумышленник может сменить пароль не зная старого пароля. 6. Пренебрежение проверкой авторизации (Missing Authorization). Типичный пример - вконтакте. Даже если фотография находится в закрытом альбоме, но у вас есть прямая ссылка на неё, то вы сможете её увидеть, вконтакт не проверяет, имеете ли вы право на доступ. 7. Открытое указание паролей и других критически важных для безопасности данных прямо в коде программы или в скрипте (Use of Hard-coded Credentials). Ошибка позволяет прочитать логин и пароль администратора базы данных сайта просто просмотрев код страницы или скачав с уязвимого сайта любой php-скрипт, который работает с базой. К этому же пункту относится ситуация, когда забывают закрыть доступ к файлам конфигурации и их можно получить просто обратившись по пути, где такие файлы обычно лежат. 8. Хранение важных данных в незашифрованном виде (Missing Encryption of Sensitive Data). Яркий пример - взлом серверов Сони - пароли пользователей хранились в незашифрованном виде. 9. Отсутствие ограничений на загрузку файлов только определенного типа (Unrestricted Upload of File with Dangerous Type). Классический пример - загрузка скрипта, вместо картинки. При обращении к скрипту он выполнится на сервере. 10. Излишнее доверие к данным, передаваемым от пользователя (Reliance on Untrusted Inputs in a Security Decision). Чем-то похоже на пункты 5 и 6 - например, если злоумышленник украдет куки, с хранящейся в них сессией, то при наличии этой ошибки он сможет получить полный доступ к учетной записи. Прекрасная подборка. Особенно актуальна для всевозможных интернет-сервисов. Такие ошибки должны обязательно рассматриваться при обучении специалистов соответствующего профиля. Ну и конечно нельзя не отметить, что SQL Injection на первом месте означает, что программисты продолжают изобретать велосипеды, вместо того, чтобы использовать готовые и протестированные фреймворки, в которых эти проблемы давно решены. [Блог пользователя krasylnikov] 02.07.2011 http://av-school.ru/blogs/comment/mp/3459
Встретил я один раз программу. Патчер для чего то, уже и не помню. Фишка в том что ей нужно указать путь к файлу. Но если путь указан "криво" или "не туда" она начинала рекурсивно сносить все на диске. Такие дела.