Что такое OWASP Top 10 и зачем он нужен?

OWASP Top 10

В данной статье я постараюсь изложить свое собственное толкование всемирно известного проекта OWASP Top 10 — сборника рисков и кибер-угроз для веб-приложений. Я буду использовать простые и понятные каждому примеры для описания всех десяти пунктов этого ценного списка. Мои интересы: хочу объяснить всем своим коллегам, клиентам и читателям, почему этот список жизненно важен для вас и ваших сайтов.

Что такое OWASP?

Что такое OWASP Top 10 и зачем он нужен?

Open Web Application Security Project (OWASP) — это открытое независимое и некоммерческое сообщество IT-специалистов со всего мира, призванное обеспечить безопасность веб-приложений и улучшить кибернетическую безопасность в целом. Сообщество основано 9 сентября 2001 года. Главная особенность OWASP в том, что он не просто «проповедует» кибербезопасность на мировом уровне, устраивая конференции, семинары и треннинги, выпуская различные документации, презентации и отчеты, но и активно разрабатывает СТАНДАРТЫ. Одним из них как раз является OWASP Top 10.

Почему настолько важен список OWASP Top 10?

Это своего рода «Библия» кибербезопасности веб-приложений. От нее отталкиваются все: и веб-разработчики, и тестировщики, и cybersecurity. Раньше, было все хаотично. Разработчики писали и компилировали код, отправляли на продакшн и через некоторое время оказывалось, что их взломали. А миллионы учетных данных разбредались по хакерских форумах. Дорогая ошибка, не правда ли? Чтобы и впредь такого не случалось, специалисты объединились в комьюнити и создали проект «OWASP Top 10» — что-то похожее на факторы ранжирования поисковых систем в SEO, без соответствия которым сайт никогда не будет считаться оптимизированным. Так и в кибербезопасности — если не провести оптимизацию под требования OWASP Top 10, сайт не станет безопасным.

Первая редакция OWASP TOP10 опубликована в 2010 году. Вторая — в 2013-м году. И последняя, на сегодня, в 2017-м — посмотреть в оригинале можно здесь: https://owasp.org/www-project-top-ten/ В ближайшем времени ожидается выход IV редакции.

Что такое OWASP Top 10 и зачем он нужен?

OWASP TOP 10

Я попробую разобрать все 10 угроз по списку, каждую по отдельности. Опишу простым понятным, доступным каждому, языком, моделируя на примере среднестатического обладателя веб-сайта.

A1:2017-Injection

Речь идет об инъекциях — одном из наиболее опасных типов кибер-атаки. Что это такое? Инъекция (инжекция) — это внедрение вредоносного кода в код (тело, структуру) вашего сайта с помощью различных уязвимостей.

Существует несколько видов инъекций:

  • SQL инъекция — используется уязвимость в базе данных SQL (MySQL, MariaDB, PostgreSQL и т.д.);Что такое OWASP Top 10 и зачем он нужен?
  • PHP инъекция — используется уязвимость в веб-приложении, написанном на языке программирования PHP. Злоумышленник использует уязвимость разных версий PHP и выполняет посторонний код на вашем сервере;

SQL иньекция

Как защитить сайт от SQLi/PHPi? Настроить на сервере фильтрацию и проверку входных данных. Установить SSL-сертификат и перевести сайт на HTTPS-протокол c применением HTTP-заголовка Strict Transport Security (HSTS) — принудительное защищенное соединение.

A2:2017-Broken Authentication

Данная уязвимость связана с не качественной системой аутентификации на сайте. Аутентификация — это процедура проверки подлинности пользователя. Например, когда вы входите в админку своего сайта или в персональный кабинет какого-то сервиса, в онлайн-банкинг — происходит аутентификация путём сравнения введённого вами пароля (для указанного логина) с паролем, сохранённым в базе данных. Только не путайте аутентификацию с авторизацией (процедурой предоставления субъекту определённых прав) и идентификацией (процедурой распознавания субъекта по его идентификатору).

Что такое OWASP Top 10 и зачем он нужен?
Что такое OWASP Top 10 и зачем он нужен?

Что такое OWASP Top 10 и зачем он нужен?

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

Как быть? При разработке сложных корпоративных систем, веб-приложений и сервисов внимательно относится к процедуре аутентификации. Не допускать регистрацию пользователей с применением «слабых» паролей — они должны быть определенной длины (не менее 7-8 символов, максимум 20), сочетая верхний и нижний регистр. Запретить логины типа: admin, root, guest, test, sudo. Запретить «пустые» пароли, невидимые пробелы и т.д. Предложить пользователям автоматическую генерацию надежных логинов и паролей. Применять технологию CAPTCHA в любых формах и полях для авторизации, а также другие антибрутфорс схемы (Limit Login Attempts). ЧЕТКО регламентировать Политику восстановления/сброса пароля. И конечно же — интегрировать в свой сервис OTP (one time password) и 2FA/MFA авторизацию.

Вот список вопросов, над которыми стоит подумать (почерпнуто у Святослава Логина):

  1. Какие символы разрешено и запрещено использовать в пароле?
  2. Как часто пользователь может менять свой пароль?
  3. Когда пользователь должен изменить свой пароль?
  4. Как часто пользователь может повторно использовать пароль?
  5. Насколько следующий пароль должен отличаться от последнего пароля?
  6. Какова минимальная и максимальная длина пароля?
  7. Запрещается ли пользователю использовать свое имя в качестве пароля?

A3:2017-Sensitive Data Exposure

Разглашение конфиденциальной информации, утечки данных. Многие веб-приложения грешат с этим, раздавая важные пользовательские данные «на право» и «на лево». Что самое худшее, сами пользователи никогда не узнают об этом. К примеру, вы установили себе на мобильное устройство веб-приложение. Попользовались им и успешно удалили. Но ваши конфиденциальные данные, учетные записи остались. Дальнейшую их судьбу никто не знает. Из-за плохой безопасности, злоумышленники могут запросто «достать» их из базы данных и ваши данные вмиг станут общедоступными. А если вы используете еще и один пароль для ВСЕХ своих приложений и аккаунтов? Догадайтесь, что произойдет.

Что такое OWASP Top 10 и зачем он нужен?

Поэтому, разработчикам веб-приложений рекомендуется использовать ШИФРОВАНИЕ данных, а также применять различные SIEM (мониторинг событий) и DLP (предотвращение утечек) системы. Они помогут обнаружить атаки вида Man-in-the-Middle («человек посередине», MITM) — когда злоумышленник перехватывает канал связи между двумя системами и получает доступ ко всей передаваемой информации.

Что такое OWASP Top 10 и зачем он нужен?

 

Что такое OWASP Top 10 и зачем он нужен?

A4:2017-XML External Entities (XXE)

Атака на XML-документы, и другие атаки с использованием уязвимостей в XML-разметке. Можно выделить несколько типов этой угрозы:

  • XXE инъекция (eXternal Entity XML) —  использование уязвимости XML-разметки, внедрение вредоносного кода на сайте;
  • XMLRPC атака — доступ к сайту с помощью протокола XML RPC, который позволяет удаленно управлять сайтов. Защититься можно отключив эту службу на сайте/сервере, заблокировать доступ к файлу xmlrpc.php, который лежит в корневой директории или вообще его удалить. XMLRPC атаки часто используются для DDOS’а сайтов. Проверить свой WordPress на уязвимость к XMLRPC пингованию можно в WordPress XML-RPC Validation Service;
  • X-Path инъекция —  уязвимость в XML-документах. Злоумышленник с помощью xPath-запросов пролазит в структуру XML и ломает сайт.

XXE атаки

Что такое OWASP Top 10 и зачем он нужен?

Как защититься? Использовать валидный и безопасный XML-код в своих приложениях. Включать фильтрацию и проверку входящих данных и HTTP-запросов с использованием XML. Использовать HSTS и SSL. Использовать шифрование XML-данных (XML signatures and encryption, XML key management (XKMS), Security Assertion Markup Language (SAML), XML access control markup language (XACML)).

A5:2017-Broken Access Control

Недостатки контроля доступа. К атаке приводят не корректно настроенные уровни и права доступа в системе. Расскажу одну поучительную историю.  Админ В. вел проект и однажды нанял себе помощников О. и М., которые должны были регулярно выполнять определенные задачи на уровне пользователей системы. По какой-то ошибке они получили некоторые привилегии Администратора. Сотрудники ничего не знали об этом и информационной безопасностью никогда не интересовались — тупо выполняли свою работу. Позднее где-то засветили свои учетные данные, скорее всего в разных приложениях и соцсетях. Потом уволились. Через некоторое время в самый неожиданный момент аккаунты О. и М. были взломаны хакерской APT-группировкой, а вся инфраструктура захвачена и скомпрометирована. Все данные были зашифрованы программой-вымогателем (Ransomware). Владельцу предложили 2 варианта: или заплатить выкуп в несколько миллионов долларов, или его проект будет навсегда и немедленно уничтожен. У владельца не оставалось выбора как залезть в страшные долги и выкупить собственный проект, в который вложил душу и сердце, над которым работал 10 лет. Вывод: в любой IT-системе должно быть СТРОГОЕ разграничение прав доступа, регламентированы пользовательские роли и их регулярная проверка администратором. Плюс — сотрудникам обязательно должен быть проведен инструктаж по кибербезопасности, а также озвучены все возможные риски. Безопасность должна стать фундаментом, после чего идет все остальное.

Что такое OWASP Top 10 и зачем он нужен?

На сегодняшний день существует несколько Политик контроля доступа, которые применяются в разных проектах и системах. Приведу самые популярные:

  • In Role-Based Access Control (RBAC) — управление доступом на основе ролей. Формирование ролей призвано определить четкие и понятные для пользователей компьютерной системы правила разграничения;Что такое OWASP Top 10 и зачем он нужен?
  • Discretionary Access Control (DAC) — выборочное (контролированное) управление доступом. Формируется на основе списка (ACL), который определяет, кто или что может получать доступ к объекту (программе, процессу или файлу), и какие именно операции разрешено или запрещено выполнять субъекту (пользователю, группе пользователей).Что такое OWASP Top 10 и зачем он нужен?
  • Mandatory Access Control (MAC) — управлением доступом на основе четких разрешений (допуска, мандата). Такая система запрещает пользователю или процессу, обладающему определённым уровнем доверия, получать доступ к информации, процессам или устройствам более защищённого уровня.Что такое OWASP Top 10 и зачем он нужен?

В CMS WordPress, к примеру, используется ролевая система доступа, которая состоит из 5 ролей:

  1. Administrator
  2. Editor
  3. Author
  4. Contributor
  5. Subscriber

Ниже представлена таблица с полным описанием прав доступа для этих ролей:

Что такое OWASP Top 10 и зачем он нужен?

A6:2017-Security Misconfiguration

Некорректная или специфическая конфигурация системы безопасности на сервере. Сюда входит:

  • Некорректно или неполно настроенный файл конфигурации сервера, например .htaccess;
  • Некорректные или отсутствующие HTTP-заголовки безопасности;
  • Не обновленный backend: ОС, служебные утилиты и программы, фреймворки, библиотеки на сервере. Все это может содержать критические уязвимости, а поэтому требует регулярного обновления, учета и контроля;
  • Открытые сетевые порты (особенно 3306 и 21/22), доступность служебных сервисов из внешнего интернета (например, доступ к системным журналам из интернета, доступ к phpmyadmin, доступ к сетевым, облачным хранилищам и т.д.);
  • Некорректно настроена DNS-зона, ошибки в записях и настройке субдоменов, отсутствие SPF, DMARC, DKIM записей безопасности сервера и т.д.;

Что такое OWASP Top 10 и зачем он нужен?

Что делать? Правильно настраивать сервер. Если у вас shared-хостинг — долбить в прямом смысле слова техподдержку, чтобы они все правильно настроили по OWASP Top 10 (часто ленивые админы дешевых хостингов оставляют куча дыр  — в итоге страдает сайт и пользователь). Или переходить на свой собственный VPS/VDS и нанимать сисадмина для комплексной настройки.

A7:2017-Cross-Site Scripting XSS

Одна из самых популярных атак на веб-сайты. Впервые зарегистрирована в 1990 году. XSS (Cross Site Scripting) — это межсайтовый скриптинг, другими словами злоумышленники с помощью Java Script сценариев могут отправлять вредоносный код, внедрять его на сайте и перехватывать данные по направлению «клиент-сервер». В XSS используется так-называемый фаззинг (fuzzing) — метод тестирования, с помощью которого перебираются и применяются на вход различные случайные, неожиданные для системы данные, таким образом, чтобы вызвать сбой или найти «дыру» (точку входа).

Что такое OWASP Top 10 и зачем он нужен?

Таким образом с помощью межсайтового скриптинга внедряют различные вредоносные скрипты (malware), проставляют спамные гиперссылки (links) на сайт («черное SEO»), устанавливают агрессивные рекламные баннеры и настраивают редиректы — перенаправление пользователей сайта на другую страницу или сайт. В итоге злоумышленники используют ваш сайт как свою площадку в собственных мошеннических целях. Поисковые системы такие сайты банят и выкидывают из ТОПа поисковой выдачи.

Что такое OWASP Top 10 и зачем он нужен?

Как бороться? В первую очередь, устанавливать SSL-сертификат на сервере, отключать устаревшие TLS 1.0/1.1, активировать HSTS, устанавливать все требуемые заголовки безопасности, особенно Content Security Policy (CSP), в котором будет регламентирована политика внешних соединений с сайтом, подключение разных js-скриптов, css-стилей, изображений. Эти базовые способы защитят сайт от XSS-атак.

A8:2017-Insecure Deserialization

Восьмое место в ТОПе OWASP занимает — Небезопасная десериализация (CWE-502). Возникает через удаленный доступ к серверу, например по протоколам RPC/IPC, FTP/SSH или по API. Приложение десериализует данные из недоверенного источника без достаточной их валидации, в результате хакер несанкционированно подключается к вашему серверу и удаленно выполняет скрипты и команды. Сериализация — это по-сути структурирование пользовательских данных. Часто для этого применяется JSON-формат. Раньше это делалось на Java, но после RCE-атаки (Remote Code Execution), отказались и перешли на JSON.

Что такое OWASP Top 10 и зачем он нужен?

Что с этим делать? Закрыть все «лишние» TCP/UDP порты на сервере. Изменить номера стандартных, часто используемых, TCP-портов (к примеру, переименовать 22 для SSH). Установить многофакторную авторизацию (MFA, 2FA). Позволять отправку и получение данных только при наличии цифровых подписей и сертификатов (SSL/TLS). Использовать ключи аутентификации «клиент-сервер» с RSA-шифрованием длиной 1024, а лучше 2048-бит.

A9:2017-Using Components with Known Vulnerabilities

Что такое OWASP Top 10 и зачем он нужен?

Суть заключается в том, чтобы НЕ ИСПОЛЬЗОВАТЬ устаревшие компоненты, модули или плагины и другой софт на сайте, так как он имеет уязвимости. Например, вы используете версию CMS WordPress 5.6, но не спешите обновляться на 5.8, так как думаете, что ничего нового там нет и обновление никак не повлияет на работу сайта. Но это не правда. На самом деле, если внимательно вчитаетесь в документацию и хронологию всех изменений, то увидите, что устаревшие версии WordPress содержат критические баги и уязвимости в безопасности, и с каждым разом разработчики фиксили их и выпускали новые версии. Поэтому, игнорируя обновления — вы игнорируете собственную безопасность, что не является умным выбором. Это не только касается WordPress сайтов, но и в целом всех веб-приложений и их компонентов.

Что такое OWASP Top 10 и зачем он нужен?

Хакеры постоянно сканируют сервера в интернете в поиске устаревших версий софта, находят новые пути и лазейки, используют «Уязвимости Нулевого Дня» или 0-Zero-Day Vulnerabilities — баги безопасности, о которых не знают еще сами разработчики. Чтобы их регулярно устранять и не бояться взломов, многие компании открывают целые «Bug Bounty» программы — они позволяют каждому желающему самостоятельно протестировать, обнаружить и прислать описание бага разработчикам, за что получит хорошее вознаграждение. Так что вывод такой — всегда обновляйтесь!

A10:2017-Insufficient Logging & Monitoring

Что такое OWASP Top 10 и зачем он нужен?

Ну и последний, 10-й пункт в ТОПе OWASP. Недостатки журналирования и мониторинга. Данную уязвимость можно описать так: «…сайт себе работает, ну и пусть работает — я не хочу вникать в подробности, у меня нет времени». На самом деле ваш сайт может годами «работать» как ни в чем не бывало, рассылая спам по всему миру от вашего имени и участвуя в хакерских ботнетах. Или другой случай — «отключу-ка я логи, а то они много места занимают — у меня на сервере не осталось места…». Тем самым вы вообще позбавляете себя шансов разобраться что случилось, если попадете в какой-то киберинцидент. Всегда включайте логирование, регулируйте доступ к системным журналам на уровне Суперадминистратора (root), подключайте централизированные системы мониторинга (Zabbix, Grafana) и регулярно анализируйте нагрузку на сервер. Как? Читайте мои статьи: Goaccess — консольный анализатор логов и Screaming SEO Log file Analyser — панацея для админов и SEOшников.

Выводы

Как видим ничего сложного, в принципе, тут нет. Список OWASP Top 10 абсолютно прозрачен и понятен, хотя в дальнейшем будет еще дорабатываться и обновляться. Я потратил на анализ всего лишь 15 минут своего времени, но его важность и пользу сложно переоценить — чек-лист поможет сохранить и защитить сотни тысяч сайтов и приложений по всему миру. Стоит практиковать? Однозначно. И лучше этим заняться сейчас, не откладывая в долгий ящик. А чтобы у вас не возникало никаких проблем, я хочу помочь: многие знают, что я всегда «ЗА» БЕЗОПАСНОСТЬ И КОНФИДЕНЦИАЛЬНОСТЬ в интернете, а поэтому БЕСПЛАТНО проведу аудит вашего сайта по списку OWASP Top 10. Условия простые — нужно быть подписанным на мой блог. Отправляйте заявки на электронную почту: vitaly.krasheninin@owasp.org

Оценка:
( 1 оценка, среднее 5 из 5 )
Подписка на KRASHENININ.TECH

Получайте регулярные обновления на почту!


Author
Виталий Крашенинин/ автор статьи
Digital-жрец блога Krasheninin.tech, публицист, исследователь веб-технологий. С 2011 года в IT. Сфокусирован на кибербезопасности, системном администрировании, создании сайтов и SEO. Подробнее>>
Не забудьте поделиться материалом в соцсетях:
KRASHENININ.TECH - блог о веб-технологиях, и не только
Подписаться
Уведомление о
guest
0 Комментарий
Встроенные отзывы
Просмотреть все комментарии
0
Есть мысли? Прокомментируй!x
()
x
Читайте ранее:
Как провести IT аудит кибербезопасности сайта
15 инструментов для проверки кибербезопасности сайта

В прошлых материалах я уже писал как проверить сайт на малварь и вирусы. В сегодняшнем посте речь пойдет немного о...

Закрыть