Согласно статистике, которую ведетOpen Web Application Security Project (OWASP), можно выделить десять наиболее распространенных ошибок безопасности. На рисунке ниже показано, как часто veracode, организация, занимающееся исследованиями безопасности веб-приложений, обнаруживает эти уязвимости во время предварительной оценки риска.
Уровень обнаружения уязвимостей из списка OWASP Top 10 во время первоначальной оценки риска veracode. Источник: [Веракод]
Наиболее распространенными уязвимостями, упомянутыми выше в соответствии с OWASP, являются:
- Восприимчивость к введению ненадежных данных в интерпретатор кода как часть команды илизапроса (SQLi, OS, XXE, LDAP). Злоумышленник может перехитрить интерпретатор, чтобы выполнить незапланированные команды или получить доступ к данным без надлежащей авторизации.
- Неправильно реализованы механизмы аутентификации и управления сеансами. Это позволяет злоумышленнику скомпрометировать пароли, ключи, маркеры сеанса или захватить удостоверение другого пользователя приложения.
- Межсайтовые сценарии (XSS)— это атака, которая внедряет JavaScript в содержимое атакуемой страницы. Он может быть использован для захвата сеанса пользователя, перенаправления на опасный пользовательский сайт или атак социальной инженерии.
- Нарушены механизмы контроля доступа относительно того, к каким разрешениям и ресурсам имеет доступ системный пользователь. Злоумышленник может воспользоваться этой уязвимостью, чтобы получить доступ к несанкционированным функциям или конфиденциальным данным, а также получить доступ к учетным записям других пользователей.
- Неправильные настройки безопасности — для правильной защиты системы определяются и реализуются соответствующие настройки для приложения, фреймворка, сервера приложений, сервера баз данных, платформы и т.д. Кроме того, программное обеспечение должно регулярно обновляться.
- Обмен конфиденциальными данными — многие веб-приложения и API не защищают должным образом конфиденциальные данные, такие как финансовые, медицинские или личные данные. Злоумышленник может украсть или изменить такую плохо защищенную информацию и использовать ее для мошенничества на кредитной карте, кражи личных данных или совершения других преступлений. Конфиденциальные данные должны быть дополнительно защищены шифрованием во время передачи и хранения.
- Неадекватная защита от атак — многие системы не имеют базовой способности обнаруживать, предотвращать и реагировать как на ручные, так и на автоматизированные атаки. Следует реализовать механизмы, выходящие за рамки основных механизмов проверки вводимых данных, и включают автоматическое обнаружение, ведение журнала и даже блокирование попыток атаки. Кроме того, владельцы приложений должны иметь возможность легко загружать исправления безопасности.
- Межсайтовая подделка запросов (CSRF)– заключается в принуждении браузера пользователя отправлять запрос на сервер в контексте этого пользователя. Таким образом, это позволяет жертве совершить какое-то несанкционированное действие, например, изменить пароль, совершить перевод.
- Использование компонентов с известными уязвимостями — такие компоненты, как библиотеки, фреймворки и другие модули, используемые в программном обеспечении, работают под теми же разрешениями, что и само приложение. Если уязвимый компонент скомпрометирован, такая атака может представлять серьезную угрозу для данных или системы в целом. Приложения, использующие компоненты с известными уязвимостями, могут удалить слой, защищающий приложение, открыв его для различных типов атак.
- Незащищенные API — современные приложения часто предоставляют API для взаимодействия с ними в дополнение кбазовой функциональности (SOAP/XML, REST/JSON, RPC, GWT и т.д.). Эти интерфейсы часто небезопасны и содержат много уязвимостей.