Информационная безопасность компьютерных систем и защита конфиденциальных данных
SecuRRity.Ru » Статьи » Список самых опасных ошибок программирования
Статьи

Список самых опасных ошибок программирования

автор: Administrator | 22 февраля 2010, 03:31 | Просмотров: 13510
теги: Статьи, список, уязвимости, опасные, ошибки, xss, SQL-Инъекция, программисты, программы



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

Этот список — результат сотрудничества между SANS Institute, MITRE и многих экспертов по информационной безопасности в США и Европе. Список использует опыт, полученный при составлении «Top 20 attack vectors» институтом SANS и «Common Weakness Enumeration (CWE)» корпорацией MITRE.

MITRE поддерживает сайт, посвященный CWE, при поддержке «Национального центра кибербезопасности США» предоставляющий детальные описания 25-ти главных ошибок программирования вместе с авторитетными рекомендациями, как их смягчить и избежать. Сайт CWE также содержит данные по более чем 700 другим ошибкам программирования, проектирования и архитектуры, которые могут привести к уязвимостям.

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

Потребители ПО могут пользоваться тем же списком, чтобы предъявлять более высокие требования к безопасности программного обеспечения. Наконец, менеджеры проектов и CIO (Chief Information Officer) могут использовать данный ТОП 25 для измерения успехов в обеспечении безопасности своих программ.

Как и в прошлом году, список самых опасных ошибок, возглавляют XSS-уязвимости (межсайтовый скриптинг), SQL-инъекции и проблемы связанные с переполнением буфера. Эти и другие ошибки ПО стали причиной взломов миллионов систем, включая недавнюю атаку на Google, поэтому приведённый контрольный список, всегда стоит держать под рукой не только новичкам:

#CWE Описание
CWE-79 Неспособность сохранения структуры web-страницы, что позволяет злоумышленнику внедрить на страницу свой скрипт или html-блок (XSS, Cross-site Scripting);

- частота атак: часто
- последствия: обход ограничений безопасности, выполнения кода
- простота обнаружения: легко
CWE-89 Неспособность сохранения целостной структуры SQL запроса, что может привести к подстановке злоумышленником SQL запроса (SQL Injection);

- частота атак: часто
- последствия: обход ограничений безопасности, потеря данных
- простота обнаружения: легко
CWE-120 Копирование содержимого буфера без предварительной проверки размера входных данных. Неспособность удержать действия в определенных жестких рамках или в пределах заданного буфера памяти, приводит к классическим уязвимостям вида выхода за допустимые границы и переполнению буфера;

- частота атак: часто
- последствия: выполнения кода, отказ в обслуживании, потеря данных
- простота обнаружения: легко
CWE-352 Cross-Site Request Forgery (CSRF), отсутствие проверки источника запроса, что может быть использовано злоумышленником для незаметного перенаправления авторизированного пользователя для выполнения определенных скрытых действий;

- частота атак: часто
- последствия: выполнения кода, потеря данных
- простота обнаружения: умеренно
CWE-285 Некорректный контроль доступа (авторизации);

- частота атак: часто
- последствия: выполнения кода
- простота обнаружения: умеренно
CWE-807 Доверие к непроверенному вводу при принятии решений, связанных с безопасностью. Например, излишнее доверие к содержимому cookie (кодирование прав доступа или уровня пользователя через cookie);

- частота атак: часто
- последствия: выполнения кода
- простота обнаружения: умеренно
CWE-22 Возможность внешнего переопределения путей или имен файлов, например, когда в качестве имени файла используется какой-то передаваемый параметр, используя "../" в котором можно выйти за пределы текущей директории;

- частота атак: часто
- последствия: выполнения кода, отказ в обслуживании, потеря данных
- простота обнаружения: легко
CWE-434 Неограниченная возможность загрузки файлов опасного типа, например, когда через форму загрузки картинки на сайт можно загрузить (и затем выполнить) ".php" скрипт;

- частота атак: иногда
- последствия: выполнения кода
- простота обнаружения: умеренно
CWE-78 Неспособность корректного формирования структуры запускаемого приложения, может привести к подставке кода злоумышленника при выполнении внешней команды, через определение некорректных значений, используемых в качестве параметров запускаемой программы (OS Command Injection);

- частота атак: часто
- последствия: выполнения кода
- простота обнаружения: легко
CWE-311 Отсутствие шифрования конфиденциальных данных, например, хранение номера кредитной карты в БД в открытом виде;

- частота атак: иногда
- последствия: потеря данных
- простота обнаружения: легко
CWE-798 Задание базового пароля прямо в коде скрипта или в общедоступных файлах конфигурации;

- частота атак: редко
- последствия: обход ограничений безопасности
- простота обнаружения: умеренно
CWE-805 Доступ к буферу без учета его размера, например, когда осуществляется копирование из одного буфера в другой без проверки, что во втором буфере хватит места;

- частота атак: часто
- последствия: выполнения кода, отказ в обслуживании, потеря данных
- простота обнаружения: легко
CWE-98 Некорректная обработки имени файла перед его использованием в PHP директивах Include/Require. Типичный пример: "$dir = $_GET['module_name']; include($dir . "/function.php");", если в передачей "module_name=http://сайт_злоумышленника";

- частота атак: часто
- последствия: выполнения кода, потеря данных
- простота обнаружения: легко
CWE-129 Некорректная проверка индекса массива, например, обращение к -23 или 978 элементам массива, когда общий размер всего 100 элементов;

- частота атак: иногда
- последствия: выполнения кода, отказ в обслуживании, потеря данных
- простота обнаружения: легко
CWE-754 Отсутствие проверки на необычные ситуации, например, при невыполнении проверки результата выполнения функции malloc (разработчик подразумевает, что она никогда не вернет NULL) злоумышленник может инициировать переход на нулевой указатель. Или при выполнении "fgets(buf, 10, stdin); strcpy(cp_buf, buf);" разработчик уверен, что после fgets строка всегда терминирована, но при ошибке ввода/вывода это не так;

- частота атак: часто
- последствия: выполнения кода, отказ в обслуживании, потеря данных, обход ограничений безопасности
- простота обнаружения: легко
CWE-209 Утечка сведений о системе при выводе сообщения об ошибке, например, часто в сообщении об ошибке можно видеть текущие пути или имя базы, что может быть использовано злоумышленником.

- частота атак: часто
- последствия: потеря данных
- простота обнаружения: легко
CWE-190 Проблемы, связанные с целочисленным переполнением;

- частота атак: иногда
- последствия: выполнения кода, отказ в обслуживании, потеря данных
- простота обнаружения: легко
CWE-131 Некорректный расчет размера буфера;

- частота атак: часто
- последствия: выполнения кода, отказ в обслуживании, потеря данных
- простота обнаружения: легко до умеренно
CWE-306 Отсутствие аутентификации при выполнении критических действий (например, при смене пароля, отсутствует проверка старого пароля);

- частота атак: иногда
- последствия: обход ограничений безопасности
- простота обнаружения: умеренно
CWE-494 Отсутствие аутентификации при выполнении критических действий (например, при смене пароля, отсутствует проверка старого пароля);

- частота атак: редко
- последствия: выполнения кода
- простота обнаружения: умеренно
CWE-732 Небезопасное назначение прав доступа к критически важным ресурсам, например, возможность чтения или изменения другим пользователем конфигурационных или служебных файлов;

- частота атак: часто
- последствия: выполнения кода
- простота обнаружения: умеренно
CWE-770 Выделение ресурсов без задания максимальных ограничений, например, классическая fork-бомба или забивание всего свободного места на диске;

- частота атак: редко
- последствия: отказ в обслуживании
- простота обнаружения: умеренно
CWE-601 Выделение ресурсов без задания максимальных ограничений, например, классическая fork-бомба или забивание всего свободного места на диске;

- частота атак: иногда
- последствия: выполнения кода, отказ в обслуживании, потеря данных
- простота обнаружения: легко
CWE-327 Использование ненадежных или рискованных криптографических алгоритмов;

- частота атак: редко
- последствия: потеря данных, обход ограничений безопасности
- простота обнаружения: умеренно
CWE-362 "Эффект гонки" (Race Condition), проблемы вызванные возможностью одновременного использования одного ресурса несколькими обработчиками, отсутствием атомарных операций или ненадлежащими блокировками;

- частота атак: иногда
- последствия: выполнения кода, отказ в обслуживании, потеря данных
- простота обнаружения: умеренно


В заключение можно отметить интересную статистику, опубликованную в блоге Марка Кокса (Mark Cox), возглавляющего подразделение Red Hat, занимающееся выявлением и исправлением проблем безопасности. Марк проанализировал число устраненных в Red Hat уязвимостей по каждой из позиций вышепредставленного рейтинга Top25.

Особый акцент сделан на уязвимостях, которые удалось предотвратить благодаря использованию таких технологий, как SELinux, ExecShield, защищенных вариантов malloc/free и активации FORTIFY_SOURCE опции glibc (дополнительная внутренняя проверка выхода за пределы буфера для функций, таких как strcpy). Например, дистрибутив оказался заведомо невосприимчив к серии уязвимостей, связанных с разыменованием NULL указателя.

источник:
opennet.ru
habrahabr.ru


Оригинал:
cwe.mitre.org
@ Ua-life
24 февраля 2010, 13:36 | |  
Аватар пользователя Ua-life
карма: +66.738
комментариев: 67
новостей: 0
группа: Посетители
:) познавательно
@ admlls
24 февраля 2010, 19:25 | |  
Аватар пользователя admlls
карма: 0
комментариев: 2
новостей: 0
группа: Посетители
Отлично))
То что нужно))) Молодцы)
Очень интересный материал!
Обратная связь

Информация


Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.