The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

01.07.2011 15:33  Рейтинг самых опасных ошибок при создании программ

Институт SANS (SysAdmin, Audit, Network, Security), совместно с организацией MITRE и ведущими экспертами по компьютерной безопасности, подготовил новую редакцию рейтинга 25 самых опасных ошибок, приводящих к возникновению серьезных уязвимостей. Рейтинг построен на основе анализа уязвимостей, обнаруженных в течение 2010 года. Ошибки были отобраны с учетом их распространенности, трудоемкости обнаружения и простоты эксплуатации уязвимости. В опубликованном документе подробно разбирается каждый из 25 видов ошибок, приводятся примеры уязвимостей и рекомендации для разработчиков по предотвращению появления подобных ошибок.

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

Общий рейтинг:

  • 1. SQL Injection: Неспособность сохранения целостной структуры SQL запроса, что может привести к подстановке злоумышленником SQL запроса;
  • 2. OS Command Injection: Неспособность корректного формирования структуры запускаемого приложения, может привести к подстановке кода злоумышленника при выполнении внешней команды, через определение некорректных значений, используемых в качестве параметров запускаемой программы;
  • 3. Buffer Overflow: Копирование содержимого буфера без предварительной проверки размера входных данных. Неспособность удержать действия в определенных жестких рамках или в пределах заданного буфера памяти, приводит к классическим уязвимостям вида выхода за допустимые границы и переполнению буфера;
  • 4. XSS, Cross-site Scripting: Неспособность сохранения структуры web-страницы, что позволяет злоумышленнику внедрить на страницу свой скрипт или html-блок;
  • 5. Missing Authentication: Отсутствие аутентификации при выполнении критических действий (например, при смене пароля, отсутствует проверка старого пароля);
  • 6. Missing Authorization: Отсутствие должной проверки авторизации, что может привести к получению доступа к ресурсам или выполнения операций, не имея на это полномочий;
  • 7. Hard-coded Credentials: Задание базового пароля или параметров аутентификации прямо в коде скрипта или в общедоступных файлах конфигурации;
  • 8.: Отсутствие шифрования конфиденциальных данных, например, хранение номера кредитной карты в БД в открытом виде;
  • 9.: Неограниченная возможность загрузки файлов опасного типа, например, когда через форму загрузки картинки на сайт можно загрузить (и затем выполнить) ".php" скрипт;
  • 10.: Доверие к непроверенному вводу при принятии решений, связанных с безопасностью. Например, излишнее доверие к содержимому cookie (кодирование прав доступа или уровня пользователя через cookie);
  • 11.: Выполнение приложений с предоставлением излишних привилегий и без надлежащего сброса привилегий;
  • 12. Cross-Site Request Forgery (CSRF): Отсутствие проверки источника запроса, что может быть использовано злоумышленником для незаметного перенаправления авторизированного пользователя для выполнения определенных скрытых действий;
  • 13. Path Traversal: Возможность внешнего переопределения путей или имен файлов, например, когда в качестве имени файла используется какой-то передаваемый параметр, используя "../" в котором можно выйти за пределы текущей директории;
  • 14.: Загрузка исполняемого кода без проверки его целостности через сверку с цифровой подписью, например, в результате взлома сайта или подстановки неверной информации в DNS, злоумышленник может изменить содержимое пакета с программой;
  • 15.: Некорректная авторизация. При доступе к требующему определенных привилегий ресурсу проверка доступа осуществляется некорректно, давая возможность атакующему преодолеть ограничения, свойственные его уровню доступа;
  • 16.: Включение внешней функциональности из недоверительной области. Например, включение на страницу виджета со внешнего ресурса, который теоретически может быть подменен злоумышленником через взлом сторонней системы или некорректное использование директивы include в PHP, позволяющей атакующему совершить включение кода с внешнего сайта;
  • 17.: Небезопасное назначение прав доступа к критически важным ресурсам, например, возможность чтения или изменения другим пользователем конфигурационных или служебных файлов;
  • 18.: Использование потенциально опасных функций, которые при неосторожном использовании могут привести к появлению уязвимостей. Классический пример подобных функций - strcpy и sprintf;
  • 19.: Использование ненадежных или рискованных криптографических алгоритмов. Например, использование XOR или DES;
  • 20.: Некорректный расчет размера буфера;
  • 21.: Отсутствие ограничения излишних попыток авторизации. Например,отсутствие лимита на число неудачных попыток авторизации в единицу времени может привести к осуществлению атак, направленных на подбор паролей (brute force);
  • 22.: Перенаправление на вызывающий доверие сайт через некорректное использование средств переброса на другой URL в веб-приложениях (например, когда когда в скрипт локального переброса вместо "/redirect?url=form.php" передают "/redirect?url=http://example.com");
  • 23.: Неконтролируемое форматирование строк (ошибка форматирования строк в функциях подобных printf);
  • 24.: Проблемы, связанные с целочисленным переполнением;
  • 25.: Создание хэшей на основе входных данных (например, пароля) без задействования случайного salt, что позволяет атакующим при проведении словарной атаки использовать списки предгенерированных хэшей, например, rainbow-таблицы.

Проблемы в рейтинге разделены на три категории:

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


  1. Главная ссылка к новости (http://cwe.mitre.org/top25/ind...)
  2. OpenNews: Рейтинг самых опасных ошибок, зафиксированных в 2009 году
  3. OpenNews: 25 самых опасных ошибок при создании программ в 2008 году
  4. OpenNews: 20 самых значительных уязвимостей 2007 года
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: security, bug
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, VoDA, 15:53, 01/07/2011 [ответить] [смотреть все]
  • –11 +/
    Вроде как бОльшая часть этих ошибок - чисто PHP или близкие к нему Пишите люди ... весь текст скрыт [показать]
     
     
  • 2.3, XPEH, 15:59, 01/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    > Пишите люди на Java и не будет SQL injection

    Ну да конечно.

     
  • 2.6, Аноним, 16:04, 01/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +12 +/
    Жабистов сразу видно: они полагают что умный фреймворк почему-то заменяет программеру мозг. В результате - самое ламерское шифрование, идиотские ошибки авторизации, тотальное доверие вводу пользователя и прочие классические баги - у жабистов просто дуром прут. А что, за них же фреймворк подумает.
     
     
  • 3.12, VoDA, 16:52, 01/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    Шифрование, ЭЦП по ГОСТ-у Может С или PHP делает не ГОСТ шифрование, но это д... весь текст скрыт [показать]
     
     
  • 4.20, Карбофос, 23:47, 01/07/2011 [^] [ответить] [смотреть все]  
  • +/
    конечно совершают, ибо только лицемер может заявить, что он не делает ошибок, ил... весь текст скрыт [показать]
     
  • 4.27, AHAHAC, 02:37, 03/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Проснулся openssl engine gost -t -c -vvvv gost Reference implementation of ... весь текст скрыт [показать]
     
  • 2.8, klalafuda, 16:31, 01/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Почему то автоматически вспоминается боян про дурака и стеклянный хер ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.10, VoDA, 16:45, 01/07/2011 [^] [ответить] [смотреть все]  
  • +1 +/
    почему то в 2011 году еще существуют ошибки типа SQL injection я сильно удивл... весь текст скрыт [показать]
     
     
  • 4.13, klalafuda, 16:54, 01/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Элементарно, Ватсон Вот когда уберут вот эту ф-ю http ru2 php net manual en f... весь текст скрыт [показать]
     
     
  • 5.15, pro100master, 18:57, 01/07/2011 [^] [ответить] [смотреть все]  
  • +/
    А при чем тут она Данные надо проверять Аксиома родилась на следующий день, ко... весь текст скрыт [показать]
     
  • 5.21, Щекн Итрч, 00:23, 02/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Пока программист НЕ СТАНЕТ чистить запросы - будут инъекции При чем там пхп в... весь текст скрыт [показать]
     
     
  • 6.22, PereresusNeVlezaetBuggy, 00:56, 02/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Притом, что PHP и другие языки фреймворки, среды , которые позволяют легко о... весь текст скрыт [показать]
     
  • 5.25, Sw00p aka Jerom, 15:16, 02/07/2011 [^] [ответить] [смотреть все]  
  • +/
    идём по ссылке и видим Formulate Query This is the best way to perform an ... весь текст скрыт [показать]
     
  • 2.9, Аноним, 16:44, 01/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Девятки десятых производительности вы лишитесь И не буду про магический float н... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.11, VoDA, 16:49, 01/07/2011 [^] [ответить] [смотреть все]  
  • +/
    0,9 производительности я могу потратить за удобство разработки много лет з... весь текст скрыт [показать]
     
     
  • 4.14, Andrew Kolchoogin, 17:20, 01/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Откройте для себя GNU GMP Там есть Arbitrary Precision и для int, и для float ... весь текст скрыт [показать]
     
  • 3.29, cerberus, 14:26, 04/07/2011 [^] [ответить] [смотреть все]  
  • +/
    А вы уверены, кто вам такие сказки рассказал PHP каждый божий раз компилирует с... весь текст скрыт [показать]
     
     
  • 4.33, Guest, 17:28, 04/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Ага, видимо кое кто не слышал про кэширование Откройте для себя eaccelerator, к... весь текст скрыт [показать]
     
  • 1.4, qwerty, 16:00, 01/07/2011 [ответить] [смотреть все]  
  • +/
    а чем отличаются п. 20 и п. 3?
     
     
  • 2.7, letsmac, 16:04, 01/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    3 - не проверяем размер и корректность данных.
    20 - забываем выделить память.
     
  • 1.5, Аноним, 16:02, 01/07/2011 [ответить] [смотреть все]  
  • +/
    Вроде все честно относительно Ошибки наиболее типичные и хорошо наблюдаемые на ... весь текст скрыт [показать]
     
     
  • 2.16, pro100master, 18:59, 01/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Более того - все они сводятся к одной единственной - отсутствие должной проверки... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.17, PereresusNeVlezaetBuggy, 21:27, 01/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Не все 17, например, имеет отношение скорее к 171 выходу 187 , чем ко входу ... весь текст скрыт [показать]
     
     
  • 4.18, pro100master, 22:05, 01/07/2011 [^] [ответить] [смотреть все]  
  • +/
    Согласен - двояко, но спорно. Проверка прав, локально, это тоже входящие :)
     
     
  • 5.19, PereresusNeVlezaetBuggy, 22:41, 01/07/2011 [^] [ответить] [смотреть все]  
  • +/
    > Согласен - двояко, но спорно. Проверка прав, локально, это тоже входящие :)

    Сама проверка — т.е., авторизация — идёт отдельным пунктом. Здесь же речь о кривости рук админа, которые к данным от юзера-хакера не относятся. :) Ну да не суть, это я так, по привычке придираюсь... :)

     
  • 1.23, ZloySergant, 14:16, 02/07/2011 [ответить] [смотреть все]  
  • +2 +/
    Хм. Штук пять из этого списка лечится умением (не учебой, епт) программирования на асме. В жестких рамках синтаксиса AT&T.

    З.Ы. Я не призываю писать код на асме. Просто умение им пользоваться налагает определенный отпечаток на мышление программиста.

     
     
  • 2.24, Sw00p aka Jerom, 15:13, 02/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >>Просто умение им пользоваться налагает определенный отпечаток на мышление программиста.

    умеющие им пользоваться ваще пишут свои языки и свои оси ))

     
  • 2.26, Ytch, 02:24, 03/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > ...лечится умением (не учебой, епт) программирования на асме.
    > Просто умение им пользоваться налагает определенный отпечаток на мышление программиста.

    Точно! Это как прививка - если есть, то срабатывает автоматически. ))

     
     
  • 3.28, AHAHAC, 02:46, 03/07/2011 [^] [ответить] [смотреть все]  
  • +2 +/
    >> ...лечится умением (не учебой, епт) программирования на асме.
    >> Просто умение им пользоваться налагает определенный отпечаток на мышление программиста.
    > Точно! Это как прививка - если есть, то срабатывает автоматически. ))

    Также и автоматически отключается, когда руководитель проекта дышит в затылок,
    со словами "Харош х...й заниматься, давай код генерируй!"

     
     
  • 4.31, десептикон, 15:34, 04/07/2011 [^] [ответить] [смотреть все]  
  • +/
    не в бровь, а в глаз :)
     
  • 2.34, Карбофос, 10:02, 05/07/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    минимизация объёма кода и/или повышение его эффективности, знание "подводных камней" архитектуры и фреймворков...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor