что такое owasp top 10
OWASP TOP 10 Project: введение
Это первый материал из цикла статей про OWASP Top 10 Project — проекта, который начинался как задумка энтузиастов, а стал самым авторитетным источником классификации векторов атак и уязвимостей веб приложений.
В этой статье мы кратко разберем все основные уязвимости из перечня OWASP Top 10, а также посмотрим, почему так важно знать о типовых уязвимостях, чтобы разрабатывать безопасные приложения.
Лет 10 назад какой-то очень наблюдательный человек сформулировал новую мантру – HTTP is new TCP. Конечно же, не в смысле, что человек решил помесить HTTP на транспортный уровень. Ни в коем случае! Речь только о том, что для современных коммуникаций протокол HTTP выполняет ту же функцию, что и TCP на своём уровне – подавляющее большинство современных приложений, в том числе мобильных, используют HTTP в качестве транспорта. А с появлением HTTP 2.0 эта ситуация забронзовела и в ближайшее время, судя по всему не изменится. Протокол стал стандартом доставки контента де факто, и HTTP уже нельзя рассматривать как веб-протокол.
Может показаться что HTTP существовал всегда, и это почти правда, если учесть, что первая официальная спецификация в RFC появилась в 1997 году, хотя сам протокол начали использовать существенно раньше.
Потребовалось совсем немного времени, чтобы понять, что как только протокол станет популярен, его начнут использовать для доставки контента все желающие, зачастую не обладая должной квалификацией. А результатом станут сотни тысяч уязвимых систем по всему миру и туманные перспективы по исправлению ситуации.
В случае с решениями конкретных вендоров всегда можно обратиться к его материалам или спросить напрямую: “как лучше поступить?” – и получить квалифицированный ответ, ведь в конце концов только вендор отвечает за свой продукт. Когда же речь заходит об использовании открытых стандартов и инструментов для построения приложений, необходим непредвзятый источник информации о лучших практиках. Таким источником могут стать энтузиасты, а может быть и целое сообщество профессионалов в этой области.
Полёт осы
В сфере безопасности веб-приложений таким сообществом стал OWASP (Open Web Application Security Project). Само собой, OWASP является некоммерческой организацией, не аффилированной ни с одной технологической компанией. Такое положение позволяет давать беспристрастную практическую информацию о технологиях защиты веб-приложений для организаций, учебных заведений, правительственных служб, да и даже частных лиц, интересующихся вопросом.
Так чем же конкретно занимается OWASP? В рамках своей компетенции у OWASP две крупные задачи: выпускать документацию и предоставлять инструменты, причем абсолютно бесплатно.
В этом цикле статей мы разберем, пожалуй, самый популярный материал OWASP TOP 10 Project. Это документ, представляющий перечень наиболее значимых и критических рисков веб-приложений. Решение о включении уязвимостей в этот список базируется на экспертном мнении специалистов по ИБ со всего мира (куда же без него), и по большому счету, понимание этих уязвимостей является первым шагом для того, чтобы изменить культуру разработки программного обеспечения.
Нужно четко понимать, что в основе всех этих уязвимостей лежат, как правило, не ошибки конкретных программистов или уязвимости самих протоколов, а архитектурные проблемы проектирования программного обеспечения.А уж для начинающих пентестеров этот перечень является строго обязательным для изучения!
Десять смертельных заклятий
Перечень уязвимостей постоянно обновляется и на 2017 выглядит следующим образом:
• A1:2017 – Инъекции, они же “Внедрение кода”
Речь про все типы инъекций: SQL, NoSQL, LDAP – что угодно. Внедрение кода становится возможным, когда непроверенные данные отправляются интерпретатору как часть команды или запроса. Такой “злонамеренный” запрос благополучно выполняется и наносит свой ущерб. В 90% случаев, когда вы слышите, что был получен доступ к закрытой базе данных через веб, – это как раз наш A1.
• A2:2017 – Некорректная аутентификация
Функции приложений, которые отвечают за аутентификацию и управление сессиями, зачастую применяются неправильно, что влечет компрометацию паролей, ключей, сеансовых токенов, и даже возможность полностью перехватить сеанс пользователя. Когда вы сидите в публичном wifi и внезапно обнаруживаете, что от вашего имени совершаются какие-то действия на публичных веб-ресурсах – это A2.
• A3:2017 – Раскрытие чувствительной информации
Многие веб-приложения и API могут некорректно хранить и обрабатывать важную информацию, вроде персональных данных. Злоумышленники могут украсть или изменить такую информацию, что может стать основой для серьезных финансовых или репутационных потерь. Чувствительная информация должна храниться должным образом, а также должна быть защищена при передаче по каналам связи.
• A4:2017 – Внедрение внешних XML-сущностей (XXE)
Многие старые или криво сконфигурированные XML-процессоры могут использовать внешние данные из ссылок в XML-файлах. Такие внешние данные могут содержать зловредный код, который позволит выполнить на целевой машине практический любой посторонний код.
• A5:2017 – Нарушенный контроль доступа
Матрица доступа, которая была так хороша на бумаге, может быть некорректно примерена к конкретной системе, таким образом, что нелегитимные пользователи легко получают доступ закрытым областям сайтов или получают возможность менять права на ресурсы по своему усмотрению.
• A6:2017-Security Misconfiguration – Ошибки в конфигурировании
Здесь речь идет о несколько более глобальных вещах, таких как отсутствие своевременного обновления серверного и прикладного ПО, наличие важных сведений в сообщениях об ошибках или даже в HTTP-заголовках. Приложение может быть практически идеальным, но если веб-сервер, на котором оно запущено, имеет проблемы с базовой конфигурацией, то всё бесполезно.
• A7:2017 – Межсайтовый скриптинг (XSS)
XSS возникает тогда, когда приложение включает в себя недоверенные данные без должной проверки. Например, программный код рекламного баннера может содержать скрипт для перехвата пользовательских данных, дефейса сайта или даже прозрачное перенаправление на другие сайты.
• A8:2017 – Небезопасная десериализация
Небезопасная десериализация, как правило, ведет к удаленному выполнению кода. Суть в том, что недоверенные данные могут разрушить логику вашего приложения, как только будут десериализованы. Достаточно экзотическая на первый взгляд уязвимость, однако занимает своё почетное место в списке.
• A9:2017 – Использование компонентов с известными уязвимостями
• A10:2017 – Недостаточное логирование и мониторинг
Тут всё просто – вы построили замечательную систему, однако забыли прикрутить инструменты мониторинга. Речь даже не о подключенной SIEM-системе, а просто о банальном логировании основных событий сервера. К сожалению, не редкость, когда взлом системы замечают через полгода после собственно взлома, причем узнают об этом не из логов, а от внешних наблюдателей.
В следующих статьях мы начнем по порядку более подробно разбирать каждую из этих уязвимостей. Мы вооружимся необходимыми инструментами и посмотрим, как эти уязвимости реализуются на практике.
Introduction
Welcome to the latest installment of the OWASP Top 10! The OWASP Top 10 2021 is all-new, with a new graphic design and an available one-page infographic you can print or obtain from our home page.
A huge thank you to everyone that contributed their time and data for this iteration. Without you, this installment would not happen. THANK YOU!
What’s changed in the Top 10 for 2021
There are three new categories, four categories with naming and scoping changes, and some consolidation in the Top 10 for 2021. We’ve changed names when necessary to focus on the root cause over the symptom.
Methodology
This installment of the Top 10 is more data-driven than ever but not blindly data-driven. We selected eight of the ten categories from contributed data and two categories from the Top 10 community survey at a high level. We do this for a fundamental reason, looking at the contributed data is looking into the past. AppSec researchers take time to find new vulnerabilities and new ways to test for them. It takes time to integrate these tests into tools and processes. By the time we can reliably test a weakness at scale, years have likely passed. To balance that view, we use an community survey to ask application security and development experts on the front lines what they see as essential weaknesses that the data may not show yet.
There are a few critical changes that we adopted to continue to mature the Top 10.
How the categories are structured
A few categories have changed from the previous installment of the OWASP Top Ten. Here is a high-level summary of the category changes.
Previous data collection efforts were focused on a prescribed subset of approximately 30 CWEs with a field asking for additional findings. We learned that organizations would primarily focus on just those 30 CWEs and rarely add additional CWEs that they saw. In this iteration, we opened it up and just asked for data, with no restriction on CWEs. We asked for the number of applications tested for a given year (starting in 2017), and the number of applications with at least one instance of a CWE found in testing. This format allows us to track how prevalent each CWE is within the population of applications. We ignore frequency for our purposes; while it may be necessary for other situations, it only hides the actual prevalence in the application population. Whether an application has four instances of a CWE or 4,000 instances is not part of the calculation for the Top 10. We went from approximately 30 CWEs to almost 400 CWEs to analyze in the dataset. We plan to do additional data analysis as a supplement in the future. This significant increase in the number of CWEs necessitates changes to how the categories are structured.
We spent several months grouping and categorizing CWEs and could have continued for additional months. We had to stop at some point. There are both root cause and symptom types of CWEs, where root cause types are like «Cryptographic Failure» and «Misconfiguration» contrasted to symptom types like «Sensitive Data Exposure» and «Denial of Service.» We decided to focus on the root cause whenever possible as it’s more logical for providing identification and remediation guidance. Focusing on the root cause over the symptom isn’t a new concept; the Top Ten has been a mix of symptom and root cause. CWEs are also a mix of symptom and root cause; we are simply being more deliberate about it and calling it out. There is an average of 19.6 CWEs per category in this installment, with the lower bounds at 1 CWE for A10:2021-Server-Side Request Forgery (SSRF) to 40 CWEs in A04:2021-Insecure Design. This updated category structure offers additional training benefits as companies can focus on CWEs that make sense for a language/framework.
How the data is used for selecting categories
In 2017, we selected categories by incidence rate to determine likelihood, then ranked them by team discussion based on decades of experience for Exploitability, Detectability (also likelihood), and Technical Impact. For 2021, we want to use data for Exploitability and (Technical) Impact if possible.
We downloaded OWASP Dependency Check and extracted the CVSS Exploit, and Impact scores grouped by related CWEs. It took a fair bit of research and effort as all the CVEs have CVSSv2 scores, but there are flaws in CVSSv2 that CVSSv3 should address. After a certain point in time, all CVEs are assigned a CVSSv3 score as well. Additionally, the scoring ranges and formulas were updated between CVSSv2 and CVSSv3.
In CVSSv2, both Exploit and (Technical) Impact could be up to 10.0, but the formula would knock them down to 60% for Exploit and 40% for Impact. In CVSSv3, the theoretical max was limited to 6.0 for Exploit and 4.0 for Impact. With the weighting considered, the Impact scoring shifted higher, almost a point and a half on average in CVSSv3, and exploitability moved nearly half a point lower on average.
There are 125k records of a CVE mapped to a CWE in the National Vulnerability Database (NVD) data extracted from OWASP Dependency Check, and there are 241 unique CWEs mapped to a CVE. 62k CWE maps have a CVSSv3 score, which is approximately half of the population in the data set.
For the Top Ten 2021, we calculated average exploit and impact scores in the following manner. We grouped all the CVEs with CVSS scores by CWE and weighted both exploit and impact scored by the percentage of the population that had CVSSv3 + the remaining population of CVSSv2 scores to get an overall average. We mapped these averages to the CWEs in the dataset to use as Exploit and (Technical) Impact scoring for the other half of the risk equation.
Why not just pure statistical data?
The results in the data are primarily limited to what we can test for in an automated fashion. Talk to a seasoned AppSec professional, and they will tell you about stuff they find and trends they see that aren’t yet in the data. It takes time for people to develop testing methodologies for certain vulnerability types and then more time for those tests to be automated and run against a large population of applications. Everything we find is looking back in the past and might be missing trends from the last year, which are not present in the data.
Therefore, we only pick eight of ten categories from the data because it’s incomplete. The other two categories are from the Top 10 community survey. It allows the practitioners on the front lines to vote for what they see as the highest risks that might not be in the data (and may never be expressed in data).
Why incidence rate instead of frequency?
There are three primary sources of data. We identify them as Human-assisted Tooling (HaT), Tool-assisted Human (TaH), and raw Tooling.
Tooling and HaT are high-frequency finding generators. Tools will look for specific vulnerabilities and tirelessly attempt to find every instance of that vulnerability and will generate high finding counts for some vulnerability types. Look at Cross-Site Scripting, which is typically one of two flavors: it’s either a more minor, isolated mistake or a systemic issue. When it’s a systemic issue, the finding counts can be in the thousands for a single application. This high frequency drowns out most other vulnerabilities found in reports or data.
TaH, on the other hand, will find a broader range of vulnerability types but at a much lower frequency due to time constraints. When humans test an application and see something like Cross-Site Scripting, they will typically find three or four instances and stop. They can determine a systemic finding and write it up with a recommendation to fix on an application-wide scale. There is no need (or time) to find every instance.
Suppose we take these two distinct data sets and try to merge them on frequency. In that case, the Tooling and HaT data will drown the more accurate (but broad) TaH data and is a good part of why something like Cross-Site Scripting has been so highly ranked in many lists when the impact is generally low to moderate. It’s because of the sheer volume of findings. (Cross-Site Scripting is also reasonably easy to test for, so there are many more tests for it as well).
In 2017, we introduced using incidence rate instead to take a fresh look at the data and cleanly merge Tooling and HaT data with TaH data. The incidence rate asks what percentage of the application population had at least one instance of a vulnerability type. We don’t care if it was one-off or systemic. That’s irrelevant for our purposes; we just need to know how many applications had at least one instance, which helps provide a clearer view of the testing is findings across multiple testing types without drowning the data in high-frequency results. This corresponds to a risk related view as an attacker needs only one instance to attack an application successfully via the category.
What is your data collection and analysis process?
We formalized the OWASP Top 10 data collection process at the Open Security Summit in 2017. OWASP Top 10 leaders and the community spent two days working out formalizing a transparent data collection process. The 2021 edition is the second time we have used this methodology.
We publish a call for data through social media channels available to us, both project and OWASP. On the OWASP Project page, we list the data elements and structure we are looking for and how to submit them. In the GitHub project, we have example files that serve as templates. We work with organizations as needed to help figure out the structure and mapping to CWEs.
We get data from organizations that are testing vendors by trade, bug bounty vendors, and organizations that contribute internal testing data. Once we have the data, we load it together and run a fundamental analysis of what CWEs map to risk categories. There is overlap between some CWEs, and others are very closely related (ex. Cryptographic vulnerabilities). Any decisions related to the raw data submitted are documented and published to be open and transparent with how we normalized the data.
We look at the eight categories with the highest incidence rates for inclusion in the Top 10. We also look at the Top 10 community survey results to see which ones may already be present in the data. The top two votes that aren’t already present in the data will be selected for the other two places in the Top 10. Once all ten were selected, we applied generalized factors for exploitability and impact; to help rank the Top 10 2021 in a risk based order.
Data Factors
There are data factors that are listed for each of the Top 10 Categories, here is what they mean:
Thank you to our data contributors
The following organizations (along with some anonymous donors) kindly donated data for over 500,000 applications to make this the largest and most comprehensive application security data set. Without you, this would not be possible.
Thank you to our sponsors
The OWASP Top 10 2021 team gratefully acknowledge the financial support of Secure Code Warrior and Just Eat.
Что такое OWASP Top-10 и как использовать указанные риски и уязвимости
При управлении сайтом важно быть в курсе наиболее значимых уязвимостей и угроз безопасности. Рейтинг OWASP Top 10 — отличная отправная точка для ознакомления с самыми серьёзными угрозами для веб-приложений, существующими на данный момент.
Что такое OWASP?
OWASP (расшифровывается как Open Web Application Security Project) — это онлайн-сообщество, которое выпускает статьи на тему безопасности веб-приложений, а также документацию, различные инструменты и технологии.
Что такое OWASP Топ-10?
OWASP Топ-10 — это список из десяти самых распространённых на данный момент уязвимостей веб-приложений. Благодаря этому списку пользователи будут осведомлены о наиболее критичных рисках и угрозах, их последствиях и мерах противодействия. Обновляется список OWASP каждые три-четыре года (последний раз он был выпущен в 2018 году). Давайте познакомимся с ним поближе.
10 основных уязвимостей OWASP 2020 года:
Инъекционная атака
При инъекционной атаке злоумышленник внедряет недопустимые данные в веб-приложение с намерением заставить его сделать нечто, для чего приложение не было разработано/запрограммировано.
Возможно, наиболее распространённой разновидностью этой уязвимости системы безопасности является внедрение кода через SQL-запрос, использующий ненадёжные данные. Один из примеров от OWASP вы можете увидеть ниже:
String query = “SELECT * FROM accounts WHERE custID = ‘” + request.getParameter(“id”) + “‘”;
Главной причиной уязвимости, связанной с внедрением кода, является отсутствие проверки и очистки данных, используемых веб-приложением. Это означает, что подобная уязвимость может присутствовать практически в любом типе технологий.
Всё, что принимает параметры в качестве входных данных, потенциально может быть уязвимо для атаки путём внедрения кода.
Вот ещё один пример SQL-внедрения, затронувшего более полумиллиона сайтов, на которых был установлен плагин YITH WooCommerce Wishlist для WordPress:
Показанное выше SQL-внедрение может привести к серьёзной утечке конфиденциальных данных.
Как предотвратить внедрение кода?
Возможность предотвращения внедрения кода зависит от технологии, которую вы используете на своём сайте. Например, если вы используете WordPress, вы можете свести к минимуму возможные проблемы, ограничив количество установленных плагинов.
Если у вас есть специализированное веб-приложение и специальная команда разработчиков, вам остаётся лишь убедиться, что сформулированы требования к безопасности, которым ваши разработчики будут следовать при написании программного обеспечения. Это позволит им думать о безопасности на протяжении всего жизненного цикла проекта.
Вот технические рекомендации OWASP по предотвращению угрозы SQL-внедрения:
Из этих рекомендаций можно сделать два вывода:
Инъекционные атаки представляют собой серьёзный риск для владельцев сайтов, так как используют лазейки в системе безопасности для кражи конфиденциальной информации.
Нарушенная аутентификация
Некорректная аутентификация может позволить злоумышленнику использовать ручные и/или автоматические методы, чтобы попытаться получить контроль над любой учётной записью в системе или, что ещё хуже, полный контроль над системой.
Сайты с нарушенной аутентификацией очень распространены в сети. Нарушение аутентификации обычно связано с логическими проблемами, возникающими в механизме аутентификации приложения, такими как плохое управление сеансом, при котором происходит перечисление имён пользователей. В этом случае злоумышленник использует методы перебора, чтобы угадать данные пользователей системы.
Чтобы свести к минимуму риски, связанные с неработающей аутентификацией, не оставляйте общедоступной страницу входа администраторов:
Второй наиболее распространённой формой этой уязвимости является разрешение пользователям использовать подбор комбинации имени пользователя и пароля для этих страниц.
Типы некорректной аутентификации
Согласно OWASP Top-10, подобная уязвимость может проявляться во многих формах. Веб-приложение содержит неисправную аутентификацию, если оно:
Написание небезопасного программного обеспечения, содержащего подобные уязвимости, можно объяснить многими факторами, например отсутствием опыта у разработчиков, отсутствием требований к безопасности или спешка с выпуском программного обеспечения.
Как свести к минимуму уязвимости с нарушенной аутентификацией?
Чтобы избежать проблем, связанных с некорректной аутентификацией, убедитесь, что разработчики применяют передовые методы обеспечения безопасности сайтов. Поддержите их, предоставив доступ к внешним аудитам безопасности и достаточно времени для правильного тестирования кода перед развёртыванием приложения в рабочей среде.
Технические рекомендации OWASP заключаются в следующем:
Незащищённость критичных данных
Незащищённость критичных данных является одной из наиболее распространённых уязвимостей. Речь идёт в первую очередь о конфиденциальных данных, которые требуют особого внимания и защиты.
Примеры конфиденциальных данных
Некоторые конфиденциальные данные, требующие защиты:
Для любой организации жизненно важно понимать значимость защиты информации и конфиденциальности пользователей. Все компании должны соблюдать местные законы о конфиденциальности.
Ответственное отношение к сбору и обработке конфиденциальных данных стало более заметным после появления Общего регламента по защите данных (GDPR). Этот новый закон о конфиденциальности данных, вступивший в силу в 2018 году, определяет, как компании должны собирать, изменять, обрабатывать, хранить и удалять персональные данные.
Существует два типа данных:
Оба типа данных должны быть надёжно защищены.
Защита передаваемых данных
Один из способов защитить передаваемые данные на сайте — это наличие SSL сертификата.
SSL — это аббревиатура от Secure Sockets Layer. Это стандартная технология безопасности для установления зашифрованного соединения между сервером и браузером. Сертификаты SSL помогают защитить целостность данных, передаваемых между хостом (сервером или брандмауэром) и клиентом (браузером).
Каковы риски раскрытия конфиденциальных данных
Вот несколько примеров того, что может случиться при раскрытии конфиденциальных данных:
Почему раскрытие конфиденциальных данных так распространено?
За последние несколько лет раскрытие конфиденциальных данных стало одной из самых распространённых проблем во всём мире. Вот некоторые примеры утечек, которые привели к раскрытию конфиденциальных данных:
Отсутствие шифрования конфиденциальных данных — основная причина того, что эти атаки всё ещё происходят так часто. Даже зашифрованные данные могут быть взломаны из-за слабых:
Этой уязвимостью обычно очень сложно воспользоваться, однако последствия успешной атаки ужасны.
Как предотвратить раскрытие данных
Предотвратить раскрытие данных, согласно OWASP, можно, придерживаясь следующих правил:
Внешние объекты XML (XXE)
Как написано в Википедии, атака внешнего объекта XML — это тип атаки на приложение посредством анализа ввода XML. Эта атака происходит, когда ввод XML, содержащий ссылку на внешний объект, обрабатывается плохо настроенным синтаксическим анализатором XML.
Большинство синтаксических анализаторов XML по умолчанию уязвимы для XXE-атак. Ответственность за то, чтобы приложение не содержало этой уязвимости, лежит в основном на разработчике.
Каковы векторы атак на внешние объекты XML?
Согласно OWASP Top 10, основные направления атаки внешних объектов XML (XXE) включают использование:
Как предотвратить атаки внешних объектов XML
Для этого OWASP рекомендует:
Если эти способы контроля по каким-то причинам нереализуемы, рассмотрите возможность использования:
Нарушение контроля доступа
В области безопасности сайтов контроль доступа — это ограничение доступа посетителей к отдельным разделам или страницам.
Например, если у вас есть интернет-магазин, вам, вероятно, понадобится доступ к панели администратора, чтобы добавлять новые продукты или настраивать скидочные акции накануне праздников. Однако доступ к панели администратора вряд ли нужен кому-нибудь, кроме вас. Если остальные посетители вашего сайта будут иметь доступ к странице входа администратора, ваш интернет-магазин будет открыт для атак.
В наши дни это проблема почти всех основных систем управления содержимым (CMS). По умолчанию доступ к странице входа администратора предоставлен всем. В большинстве случаев не используется даже метод двухфакторной аутентификации (2FA).
Вышеизложенное должно заставить вас хорошо задуматься о безопасности разрабатываемого вами программного обеспечения.
Примеры нарушенного контроля доступа
Вот несколько примеров того, что мы включаем в понятие «доступ»:
Злоумышленники могут использовать недостатки авторизации в следующих целях:
Каковы риски нарушения контроля доступа?
Вот несколько примеров того, что, согласно OWASP, может случиться при нарушении контроля доступа:
pstmt.setString(1,request.getParameter(“acct”)); ResultSetresults =pstmt.executeQuery( );
Злоумышленник просто изменяет параметр «acct» в браузере, чтобы отправить любой номер учётной записи, который он хочет. В случае отсутствия надлежащей проверки злоумышленник может получить доступ к учётной записи любого пользователя:
Большинство разрабов знакомы с приведёнными выше сценариями, но помните, что уязвимости неработающего контроля доступа могут проявляться во многих формах и почти во всех существующих веб-технологиях.
Снижение рисков нарушения контроля доступа
Чтобы снизить риски, связанные с нарушением контроля доступа, вы можете сделать следующее:
Предотвращение нарушения контроля доступа
Чтобы избежать нарушения контроля доступа, необходимо при разработке и настройке программного обеспечения руководствоваться принципами безопасности. Вот почему важно контактировать с разработчиком и убеждаться в соблюдении им требований безопасности.
Технические рекомендации OWASP по предотвращению нарушения контроля доступа:
Небезопасная конфигурация
По своей сути перебор — это попытка ввода множества возможных комбинаций, но в принципе есть много вариантов этой атаки, что увеличивает её успешность. Самыми распространёнными ошибками, делающими возможной атаку на веб-приложение, являются:
Одна из наиболее распространённых ошибок веб-мастеров — сохранение настроек CMS по умолчанию.
Современные приложения CMS, будучи простыми в использовании, могут быть небезопасны для конечных пользователей. Большинство хакерских атак, безусловно, полностью автоматизированы, и злоумышленники полагаются на то, что у пользователей выставлены настройки по умолчанию. Это означает, что большое количество атак можно предотвратить, изменив при установке CMS настройки, выставленные по умолчанию.
Права доступа к файлам — ещё один пример настройки по умолчанию, которую можно и нужно усилить.
Где встречаются небезопасные конфигурации?
Неверные, с точки зрения безопасности, конфигурации могут быть на любом уровне стека приложения, включая:
Один из самых последних примеров неправильной конфигурации приложений — это серверы memcached, используемые для DDoS-атак на огромные сервисы в технологической индустрии.
Примеры сценариев атак, ставших возможными из-за небезопасной конфигурации
Как получить безопасные настройки
Чтобы предотвратить атаки, связанные с неправильными настройками безопасности, требуется:
Межсайтовый скриптинг (XSS)
Межсайтовый скриптинг (XSS) — широко распространённая уязвимость, которая затрагивает многие веб-приложения. XSS-атаки состоят из внедрения вредоносных клиентских скриптов на сайт с последующим использованием сайта в качестве распространителя.
Риски, связанные с XSS, заключаются в том, что он позволяет злоумышленнику внедрять контент на сайт и изменять способ его отображения, заставляя тем самым браузер жертвы выполнять при загрузке страницы код, предоставленный злоумышленником.
Уязвимость XSS присутствует примерно в двух третях всех приложений.
Как правило, уязвимости XSS требуют определённого типа взаимодействия со стороны пользователя, которое должно быть инициировано либо с помощью социальной инженерии, либо через посещение определённой страницы. Если уязвимость XSS не исправлена, она может быть очень опасной для любого сайта.
Примеры уязвимостей XSS
Представьте, что вы, находясь на своей панели администратора WordPress, добавляете новый пост. Если вы используете плагин с сохранённой уязвимостью XSS, хакер сможет заставить ваш браузер создать нового пользователя-администратора, пока вы находитесь в панели wp-admin. Кроме того, он может редактировать ваше сообщение и выполнять другие подобные действия.
Уязвимость XSS даёт злоумышленнику почти полный контроль над самым важным в настоящее время программным обеспечением компьютеров — браузерами.
Типы XSS
Согласно OWASP Top 10, существует три типа межсайтового скриптинга:
Снижение рисков XSS
Типичные XSS-атаки включают в себя кражу сеанса, захват учётной записи, обход MFA, замену DOM-узла, атаки на браузер пользователя, включая загрузку вредоносного программного обеспечения, кейлоггинг и другие атаки на стороне клиента.
Как предотвратить проблемы, вызванные XSS-уязвимостями
Превентивные меры по снижению вероятности XSS-атак должны включать отделение ненадёжных данных от активного содержимого браузера. OWASP даёт несколько практических советов о том, как этого добиться:
Небезопасная десериализация
В OWASP Top-10 отмечается, что эта уязвимость была добавлена в список на основании результатов отраслевого опроса, а не на основании исследования данных, поддающихся количественной оценке.
Каждому веб-разработчику следует смириться с тем фактом, что злоумышленники будут пытаться «играть» со всем, что взаимодействует с его приложением, — от URL-адресов до сериализованных объектов.
Чтобы упростить понимание некоторых ключевых понятий, познакомим вас с принятой терминологией:
Примеры сценариев десериализационной атаки
Злоумышленник изменяет сериализованный объект, чтобы получить права администратора:
Одним из векторов атаки, как вы видите, является суперфайл cookie, содержащий сериализованную информацию о вошедшем в систему пользователе. В этом файле cookie указана роль пользователя.
Если злоумышленник успешно десериализует данный объект, он затем изменит пользовательские права, предоставив себе роль администратора, и снова сериализует объект. Этот набор действий может поставить под угрозу всё веб-приложение.
Как предотвратить небезопасную десериализацию
Лучший способ защитить ваше веб-приложение от риска такого типа — не принимать сериализованные объекты из ненадёжных источников.
Если вы не можете этого сделать, OWASP Security предоставляет дополнительные технические рекомендации, которые вы можете попытаться реализовать:
Использование компонентов с известными уязвимостями
В наши дни даже простые сайты, такие как личные блоги, имеют множество зависимостей.
Мы все понимаем, что неспособность обновить каждую часть программного обеспечения на серверной и клиентской стороне сайта, без сомнения, рано или поздно создаст серьёзные риски для безопасности.
Например, в 2019 году 56% всех приложений CMS на момент их заражения были устаревшими.
Почему мы не обновляем наше программное обеспечение вовремя? Почему сегодня это всё ещё такая огромная проблема?
Есть несколько вариантов ответа на этот вопрос, например:
Это может звучать слишком драматично, но каждый раз, когда вы игнорируете предупреждение об обновлении, вы позволяете уже известной уязвимости выжить в вашей системе. Поверьте, киберпреступники быстро исследуют программное обеспечение и списки изменений.
Какой бы ни была причина использования устаревшего программного обеспечения в вашем веб-приложении, вы не можете оставить его незащищённым. И Sucuri, и OWASP рекомендуют виртуальные патчи в случаях, когда внесение исправлений невозможно.
Виртуальные патчи позволяют защитить устаревшие (или имеющие известные уязвимости) сайты от атак, предотвращая использование этих уязвимостей на лету. Обычно это делается с помощью брандмауэра и системы обнаружения вторжений.
Уязвимые приложения
В соответствии с рекомендациями OWASP приложения можно считать потенциально уязвимыми, если:
Как избежать использования компонентов с известными уязвимостями
Вот некоторые из способов избежать использования уязвимых компонентов:
Неэффективный мониторинг
Важность обеспечения безопасности сайта нельзя недооценивать. Хотя 100-процентная безопасность не является достижимой целью, есть способы держать ваш сайт под постоянным контролем, чтобы вы могли немедленно принять меры, когда что-то случится.
Отсутствие эффективного мониторинга может привести к увеличению ущерба от взлома сайта.
Примеры атак, ставших возможными из-за неэффективного мониторинга
Вот несколько примеров сценариев атак, причиной которых можно считать недостаточный мониторинг:
Как обеспечить эффективный мониторинг сайта
Ведение журналов аудита позволяет быть в курсе любых подозрительных изменений на вашем сайте. Журнал аудита — это документ, в котором регистрируются все события на сайте. Он позволяет обнаружить любые аномалии, чтобы вы могли вовремя обратиться к специалисту, который подтвердит или опровергнет взлом учётной записи.