OWASP TOP TEN. Безопасность web-приложений в современном мире
Egor OrshletДрузья, всем доброго январского утра. Хочу всех вас поздравить с наступившим 2024 годом! Крепкого вам здоровья, достижения целей, а тем, кто стоит на страже информации хочу пожелать поменьше атак хакеров, а если вы пентестер, то побольше интересных уязвимостей , которые вы успешно найдете и поможете заказчику их нейтрализовать. Спасибо всем за 2023 год. Время неумолимо летит! Успевайте проводить время с теми, кого вы любите. Пусть беда обходит вас стороной, а проблемы закаляют вас и делают сильнее. Жизнь не перестанет нас проверять. Все это нужно. Маленькими шагами к большому успеху!
Вот вам веселая пикча)

Сегодня мы с вами окунемся в мир веб-приложений , а точнее некоторых типовых уязвимостей , которые частенько эксплуатируются злоумышленниками
Безопасность веб-приложений
Современный мир несет в себе тысячи угроз и потенциальных опасностей буквально на каждом шагу и в каждый момент времени. Всемирная сеть, ставшая неотъемлемой частью нашей жизни, не является исключением.
Киберпреступность сейчас развита как никогда – ведь почти каждая компания имеет свой сайт в интернете, а злоумышленник в сети может легко оставаться абсолютно анонимным.
При этом все компании, имеющие сайт в интернете, делятся на три типа:
- Те, чей сайт уже сломали;
- Те, чей сайт еще не ломали;
- Те, кто знаком с основными векторами атак и защитил приложения.
Если ваша компания относится к третей группе, то это замечательно! Это значит у вас работают компетентные безопасники , которые знают свое дело
Поэтому всем нужно стремиться к обеспечению "базовой безопасности" в области WEB'а . В этом нам поможет Open Web Application Security Project(OWASP)
Open Web Application Security Project (OWASP)
Это международная некоммерческая организация, сосредоточенная на анализе и улучшении безопасности программного обеспечения.
Open Web Application Security Project (OWASP) давно стало стандартом обеспечения безопасности веб-приложений.
OWASP создал список из 10-и самых опасных векторов атак на Web-приложения, этот список получил название OWASP TOP-10 и в нем сосредоточены самые опасные уязвимости, которые могут стоить некоторым людям больших денег, или подрыва деловой репутации, вплоть до потери бизнеса.
Рейтинг угроз OWASP Top 10 обновляется каждые 3-4 года.

В последний список угроз OWASP вошли:
А01:2021 Нарушение контроля доступа (англ. Broken Access Control).
А02:2021 Сбои криптографии (англ. Cryptographic Failures).
А03:2021 Внедрение кода (англ. Injection).
А04:2021 Небезопасный дизайн (англ. Insecure Design).
А05:2021 Неправильная конфигурация (англ. Security Misconfiguration).
А06:2021 Уязвимые и устаревшие компоненты (англ. Vulnerable and Outdated Components).
А07:2021 Ошибки идентификации и аутентификации (англ. Identification and Authentication Failures).
А08:2021 Нарушения целостности программного обеспечения и данных (англ. Software and Data Integrity Failures).
А09:2021 Сбои регистрации и мониторинга безопасности (англ. Security Logging and Monitoring Failures).
А10:2021 Подделка запросов на стороне сервера (англ. Server-Side Request Forgery).
Нарушение контроля доступа
Контроль доступа обеспечивает соблюдение политики, согласно которой пользователи не могут действовать за пределами своих разрешений. Сбои обычно приводят к несанкционированному раскрытию информации, изменению или уничтожению всех данных или выполнению бизнес-функции за пределами возможностей пользователя. К распространенным уязвимостям контроля доступа относятся: Нарушение принципа минимальных привилегий или запрета по умолчанию, согласно которому доступ должен предоставляться только для определенных возможностей, ролей или пользователей, но доступен всем. Обход проверок контроля доступа путем изменения URL-адреса (подделка параметров или принудительный просмотр), внутреннего состояния приложения или страницы HTML либо с помощью инструмента атаки, изменяющего запросы API. Разрешение просмотра или редактирования чужой учетной записи путем предоставления ее уникального идентификатора (небезопасные прямые ссылки на объекты) Доступ к API с отсутствующими элементами управления доступом для POST, PUT и DELETE. Повышение привилегий. Действовать как пользователь без входа в систему или действовать как администратор при входе в систему как пользователь. Манипулирование метаданными, например воспроизведение или подделка токена управления доступом JSON Web Token (JWT), файлов cookie или скрытых полей, манипулируемых для повышения привилегий или злоупотребления аннулированием JWT. Неправильная конфигурация CORS обеспечивает доступ к API из неавторизованных/ненадежных источников. Принудительно просматривать аутентифицированные страницы в качестве неаутентифицированного пользователя или привилегированные страницы в качестве обычного пользователя.
Сбои криптографии
Прежде всего необходимо определить потребности в защите данных при передаче и хранении. Например, пароли, номера кредитных карт, медицинские записи, личная информация и коммерческая тайна требуют дополнительной защиты, особенно если эти данные подпадают под действие законов о конфиденциальности, например,Федеральный закон от 27.07.2006 N 152-ФЗ (ред. от 06.02.2023) "О персональных данных"(Подробнее про 152-ФЗ вы можете ознакомиться у меня в статье про основных ИБ-регуляторов) Стоит честно ответить себе на следующие вопросы: Передаются ли какие-либо данные в виде открытого текста? Это касается таких протоколов, как HTTP, SMTP, FTP, которые также используют обновления TLS, такие как STARTTLS. Используются ли по умолчанию или в старом коде какие-либо старые или слабые криптографические алгоритмы или протоколы? Используются ли криптоключи по умолчанию, генерируются или повторно используются слабые криптоключи, или отсутствует надлежащее управление ключами или их ротация? Проверяются ли криптоключи в репозитории исходного кода? Не применяется ли шифрование, например, отсутствуют ли какие-либо директивы или заголовки безопасности HTTP-заголовков (браузера)? Правильно ли проверены полученный сертификат сервера и цепочка доверия? Векторы инициализации игнорируются, используются повторно или не генерируются достаточно безопасно для криптографического режима работы? Используется ли небезопасный режим работы, такой как ECB? Используется ли шифрование, когда более подходящим является аутентифицированное шифрование? Используются ли пароли в качестве криптографических ключей при отсутствии функции получения ключа базы паролей? Используется ли случайность в криптографических целях, которая не была разработана для удовлетворения криптографических требований? Даже если выбрана правильная функция, должен ли разработчик заполнять ее, а если нет, перезаписал ли разработчик встроенную в нее надежную функцию заполнения начальным числом, которому не хватает достаточной энтропии/непредсказуемости? Используются ли устаревшие хэш-функции, такие как MD5 или SHA1, или используются ли некриптографические хэш-функции, когда необходимы криптографические хеш-функции? Ответив на эти вопросы в можете предостеречь свою организацию от данной угрозы
Внедрение кода
Все данные, как правило, хранятся в специальных базах данных, доступ к которым строится в виде запросов, чаще всего написанных на специальном языке запросов SQL (Structured Query Language). Приложения используют SQL-запросы для получения, добавления, изменения или удаления данных, например, когда пользователь редактирует свои личные данные или заполняет анкету на веб-сайте. Если данные пользователя недостаточно проверены, злоумышленник может вставить в форму веб-интерфейса приложения специальный код, содержащий фрагмент SQL-запроса. Этот тип атаки называется инъекцией, в данном случае наиболее распространенной является SQL-инъекция. Это опасная уязвимость, позволяющая злоумышленнику получить доступ к базе данных и возможность читать/изменять/удалять информацию, не предназначенную для него. Например, изменить баланс своего счета вместе со своим именем и фамилией, посмотреть баланс чужого счета или украсть конфиденциальные персональные данные. Эта уязвимость связана с недостаточной проверкой вводимых пользователем данных. Это для того, чтобы злоумышленник «подсунул», например, в веб-формы специально подготовленные запросы, которые «обманут» приложение и лучше всего прочитают или запишут нелегитимные данные.
Небезопасный дизайн
Новая категория, появившаяся в рейтинге в 2021 году, посвящена рискам, связанным с ошибками в дизайне и архитектуре приложения. Появление этой угрозы можно считать призывом к использованию моделирования угроз, шаблонов безопасного проектирования и эталонных архитектур. Одним из факторов, способствующих небезопасному проектированию, является отсутствие профилирования бизнес-рисков. Признаки небезопасной конструкции 1. Восстановление аккаунта путем подтверждения вашей личности с помощью вопросов и ответов. Этот метод не используется, поскольку ответы могут быть даны более чем одному человеку. 2. Бронирование групповых билетов без дополнительной предоплаты. Эта возможность может быть использована злоумышленниками для выкупа мест по всей сети. Это женщина к проблеме. 3. Отсутствие защиты от ботов на торговых площадках. С помощью таких ботов злоумышленники могут покупать дорогостоящее оборудование и перепродавать его. на аукционах, что отразится на репутации компании.
Неправильная конфигурация
Он встречается в веб-приложениях, которые анализируют входные данные XML (расширяемый язык разметки). Это происходит, когда плохо настроенные процессоры XML оценивают ссылки на внешние объекты в документах XML и отправляют конфиденциальные данные неавторизованному внешнему объекту (устройству хранения). По умолчанию большинство парсеров XML уязвимы для атак этого типа.
Уязвимые и устаревшие компоненты
Существует множество программных компонентов с открытым исходным кодом, а также библиотек и фреймворков, доступных разработчикам. Если в приложении используется компонент, имеющий уже известную уязвимость, он становится слабым звеном, которое может отражать безопасность всей системы. Разработчики часто не включаются, некоторые компоненты уже присутствуют в их приложениях от опытных специалистов. Это затрудняет обнаружение и устранение ошибок при обнаружении уязвимостей в приложениях, а также их обновлении. Именно поэтому Open-source не всегда хорошо. В открытом коде может копаться кто угодно, а расскажет ли человек про найденную уязвимость или будет её эксплуатировать это уже другой вопрос. В качестве примераможно привести Free Open-Source VPN(Virtual Privacy Network)OpenVPN. Наши регуляторы относятся к нему скептически , они не одобряют его для использования в коммерческих организациях , а уж тем более в ГОСах. ФСТЭК отдает предпочтения другим вендорам , у которых нет опен-сурса(VipNet от Infotecs, Код безопасности 4 и т.д)
Ошибки идентификации и аутентификации
Проблемы аутентификации позволяют злоумышленнику использовать различные методы для получения контроля над любой учетной записью в системе. В худшем случае злоумышленники получают полный контроль над системой. Эта уязвимость опасна еще и тем, что веб-сайты с проблемами аутентификации очень распространены. Проблема возникает из-за ошибок в управлении сессиями, что позволяет злоумышленникам взламывать пароли, ключи безопасности и т. д.
Ошибки целостности программного обеспечения и данных
Небезопасная десериализация (небезопасная десериализация) позволяет злоумышленнику удаленно выполнять код в приложении и подделывать или удалять сериализованные (записанные на диск) объекты, продолжая путь. Эта проблема безопасности приложений очень серьезна и, к сожалению, затрагивает большинство современных систем.
Сбои регистрации и мониторинга безопасности
Время от обнаружения до обнаружения может занимать до 200 дней, а иногда и больше. Тем временем злоумышленники могут вмешиваться в работу серверов, повреждать базы данных и красть конфиденциальную информацию. Неверное ведение журнала безопасности и неэффективная интеграция систем безопасности являются «открытой дверью» для злоумышленников и их манипуляций. Здесь стоит уделить отдельное внимание компетентности сторудников SOC. Если вы не располагаете ресурсами , чтобы грамотно устроить отдел мониторинга , то отдайте эту задачу на аутсорс. Именитые компании в области ИБ по типу SOLAR, Jet с удовольствием помогут вам в этом.
Подделка запросов на стороне сервера
Ошибки SSRF (подделка запроса на стороне сервера — программный код, который может использоваться уязвимым приложением для выполнения запроса по предоставленному URL-адресу) возникают, когда веб-приложение получает удаленный ресурс без проверки URL-адреса, предоставленного пользователем. Это дает злоумышленнику возможность перенаправить созданный запрос в неожиданное место, минуя брандмауэр, VPN или другие средства контроля доступа к сети. Поскольку современные веб-приложения предоставляют конечным пользователям различные функции, получение URL-адреса стало распространенным сценарием. Частота ошибок SSRF увеличивается из-за распространения облачных сервисов и сложности архитектуры.
Пример уязвимости
Чтобы лучше понять SSRF, приведу следующий пример:
void ServerSideRequestForgery()
{
var url = Request.QueryString["url"];
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
....
}
}
response.Close();
}
В коде от пользователя приходит URL, при этом происходит обращение к соответствующему ресурсу.
Приведу пример запроса сервера к удалению пользователя:
http://сайт/admin/delete?username=testSSRF
Предполагается, что сервер выполняет аналогичный запрос только от себя или от доверенных устройств. Если злоумышленник попробует отправить запрос на удаление пользователя напрямую (в виде, представленном выше), сервер не будет его обрабатывать.
Однако злоумышленник может поступить иначе:
http://localhost/admin/delete?username=testSSRF
Отправляет адрес переданного сервера, адрес отправляет запрос себе же. В таком случае будет выполнен запрос и произойдёт удаление пользователя.
Заключение:
В этой статье мы рассмотрели рейтинг угроз Open Web Application Security Project (OWASP).
Ранжирование основывается на частоте дефектов, серьезности уязвимостей и их потенциального воздействия. Это позволяет разработчикам и специалистам по безопасности понимать наиболее серьезные риски и минимизировать возможные последствия эксплуатации уязвимостей злоумышленниками.
Мир кибербеза постоянно развивается , каждый день появляются новые уязвимости. Помните про правила кибергигиены и поменьше следите в интернете. Всем хороших праздников , отдохните как следует.