Опубликован очередной документ CWE/SANS Top 25 наиболее опасных ошибок программирования, допускаемых разработчиками программного обеспечения, в том числе, и при разработке Web-приложений. Первая тройка распространенных ошибок выглядит следующим образом:
1. Недостаточная проверка поступающих данных в структуру Web-приложения.
Класс уязвимости - "Межсайтовое выполнение сценариев". Вектор атаки направлен на эксплуатацию на стороне клиента (client-side attack).
CWE-79, OWASP A1, WASC-8, WHID: XSS
"Межсайтовое выполнение сценариев" (Cross-Site Scripting (en.), сокр. XSS) связано с возможностью внедрения HTML-кода в уязвимую страницу. Внедрение кода осуществляется через все доступные способы ввода информации. Успешная эксплуатация уязвимости может позволить атакующему использовать значения различных переменных, доступных в контексте сайта, записывать информацию, перехватывать сессии пользователей и т.д.
2. Недостаточная проверка поступающих данных в SQL-запрос.
Класс уязвимости - "Внедрение операторов SQL". Вектор атаки направлен на эксплуатацию на стороне сервера (server-side attack).
CWE-89, OWASP A2, WASC-19, WHID: SQL Injection
"Внедрение операторов SQL" (SQL injection (en.), сокр. SQLi) — способ нападения на базу данных в обход межсетевой защиты. В этом методе, параметры, передаваемые к базе данных через приложения, изменяются таким образом, чтобы повлиять на выполняемый в приложении SQL запрос. Инъекция осуществляется через все доступные способы взаимодействия с приложением.
Уязвимость "Внедрение операторов SQL" возникает в тех случаях, когда приложение динамически формирует SQL-запросы на основе поступающих данных со стороны не доверенного источника без их адекватной проверки. Под приложением нужно понимать любую программу, взаимодействующую с базой данных.
3. Недостаточная проверка размеров передаваемого буфера.
Класс уязвимости - "Переполнение буфера". Атака может осуществляться, как в отношении клиентского приложения (local attack), так и серверного (remote attack).
CWE-120, WHID: Buffer Overflow
"Переполнение буфера" (Buffer Overflow (en.), или Buffer Overrun) возникает в момент копирования некоторых данных из одного участка памяти в другой без достаточной проверки размера передаваемых в него данных, что позволяет записать данные за пределами выделенного в памяти буфера. Зачастую уязвимость может использоваться для выполнения произвольного кода в системе с привилегиями уязвимого приложения или с целью проведения атаки "Denial of Service" (DoS).
Примечательно, что на четвертой позиции рейтинга CWE/SANS Top 25 содержится уязвимость "Подделка HTTP-запросов" (Cross-Site Request Forgery (en.), сокр. CSRF) [1,2], которая до 2001 года уязвимостью особо и не считалась [3].
Полный перечень уязвимостей CWE/SANS Top 25 в формате pdf можно загрузить здесь.
Сопоставление уязвимостей, характерных для Web-приложений (CWE/SANS, OWASP Top 10, WASC Threat Classification, WASC WHID), приведено в блоге Ryan Barnett.
Обобщенная таблица сопоставления уязвимостей в Web-приложениях (WASC Threat Classification, CWE ID, CAPEC ID, SANS/CWE Top 25 2009, OWASP Top Ten 2010, OWASP Top Ten 2007, OWASP Top Ten 2004) приведена здесь.
Теперь и анализтор PVS-Studio смотрит в сторону CWE: https://www.viva64.com/ru/b/0486/
ОтветитьУдалить