Данная публикация содержит обзорную статистику уязвимостей Web-приложений, полученную в ходе работ по тестированиям на проникновение, аудитов безопасности и других работ, проводимых Компаниями, входящими в консорциум WASC в 2008 году.
Консорциум Web Application Security Consortium (WASC) представляет статистику уязвимостей Web-приложений за 2008 год (WASC Web Application Security Statistics Project 2008) и выражает благодарность следующим экспертам и компаниям, внесшим свой вклад в развитие проекта:
Sergey Gordeychik* (POSITIVE TECHNOLOGIES)
Jeremiah Grossman (WHITEHAT SECURITY)
Mandeep Khera (CENZIC)
Matt Latinga (HP APPLICATION SECURITY CENTER)
Chris Wysopal (VERACODE)
Shreeraj Shah (BLUEINFY)
Lawson Lee (dns)
Campbell Murray (ENCRIPTION LIMITED)
Dmitry Evteev (POSITIVE TECHNOLOGIES)
*Project Leader
Данная публикация содержит обзорную статистику уязвимостей Web-приложений, полученную в ходе работ по тестированиям на проникновение, аудитов безопасности и других работ, проводимых Компаниями, входящими в консорциум WASC в 2008 году. Всего статистика содержит данные о 12186 сайтах, в которых было обнаружено 97554 уязвимости различной степени риска.
В результате собранных данных было получено 4 набора данных:
Данные автоматического сканирования содержат информацию по полностью автоматизированному сканированию без предварительной настройки (со стандартным профилем) сайтов хостинг-провайдера. При анализе этой информации следует учитывать, что далеко не все сайты используют интерактивные элементы. Кроме того, дополнительная экспертная настройка сканера под конкретное Web-приложение позволяет существенно повысить эффективность обнаружения уязвимостей.
Статистика по оценке защищенности методом черного ящика содержит результаты работ по ручному и автоматизированному анализу Web-приложений, без предварительного получения какой либо информации об исследуемом приложении. Как правило, такие работы включают сканирование с предварительными настройками и ручной поиск уязвимостей недоступных автоматическим сканерам.
Статистика по оценке защищенности методом белого ящика содержит результаты работ по наиболее глубокому анализу Web-приложений. Такие работы включают в себя анализ приложения от имени авторизованного пользователя и анализ исходных кодов, помимо всех тех проверок, которые выполняются при обследовании приложения методом черного ящика.
Обнаруженные уязвимости классифицировались согласно Web Application Security Consortium Web Security Threat Classification (WASC WSTCv2). Критичность уязвимости, оценивалась согласно CVSSv2 (Common Vulnerability Scoring System version 2) с дальнейшим приведением к степеням риска стандарта по защите информации в индустрии платежных карт PCI DSS (Payment Card Industry Data Security Standard) согласно методике (Приложение 1).
Около 49% Web-приложений содержат уязвимости высокой степеней риска (Urgent и Critical), обнаруженные при автоматическом сканировании систем (Т.1). Однако при детальной ручной и автоматизированной оценке методом белого ящика вероятность обнаружения таких уязвимостей высокой степени риска достигает 80-96%. Вероятность же обнаружения уязвимостей степени риска выше среднего (критерий соответствия требованиям PCI DSS) составляет более 86% при любом методе работ. В то же время при проведении более глубокого анализа 99% Web-приложений не удовлетворяет требованиям стандарта по защите информации в индустрии платежных карт (T.6, Рис.13).
На основании проведенного анализа можно сделать следующие выводы:
Всего в представленную статистику вошли данные по 12186 Web-приложениям, в которых было обнаружено 97554 уязвимости различной степени риска.
В Т.1 и на Рис.1 представлены данные по вероятности обнаружения уязвимостей различной степени риска, выявленные в ходе аудитов и путем автоматизированного сканирования.
Так, при проведении автоматических сканирований было выявлено до 86% сайтов, содержащих от одной до нескольких уязвимостей не ниже среднего уровня риска (Urgent-High). При оценке Web-приложений методами черного и белого ящика, аналогичный показатель увеличился до 92-98% соответственно.
В значительной степени полученные результаты связанны с тем, что при детальном анализе оценка риска более адекватна и учитывает не только тип уязвимости, но и реальные последствия её эксплуатации с учетом архитектуры и реализации приложения. Кроме того, важным фактором является то, что при автоматическом сканировании участвовали сайты хостинг-провайдера, в некоторых случаях не содержащие активного контента, в то время как работы по оценке защищенности, как правило, проводятся для приложений содержащих сложную бизнес-логику. То есть результаты автоматизированных сканирований можно интерпретировать как данные для среднестатистического Интернет-сайта, в то время как работы проводимые методами BlackBox и WhiteBox больше относятся к интерактивным корпоративным Web-приложениям.
Рисунок 1. Вероятность обнаружения уязвимостей различной степени риска
T. 1 Вероятность обнаружения уязвимостей различной степени риска
|
ALL |
Scans |
BlackBox |
WhiteBox |
Urgent |
18,77% |
16,70% |
19,69% |
50,00% |
Critical |
45,22% |
39,25% |
74,76% |
92,00% |
High |
72,27% |
73,09% |
58,51% |
62,00% |
Medium |
36,56% |
40,19% |
12,05% |
24,00% |
Low |
29,69% |
34,45% |
0,10% |
4,00% |
U+C |
55,50% |
49,40% |
79,73% |
96,00% |
U+C+H |
87,66% |
86,38% |
91,59% |
98,48% |
Наиболее распространенными уязвимостями являются Cross-Site Scripting, Information Leakage, SQL Injection, Insufficient Transport Layer Protection, Fingerprinting и HTTP Response Splitting (Рис. 2). Как правило, уязвимости типа Cross-Site Scripting, SQL Injection и HTTP Response Splitting возникают по причине ошибок в разработке систем, в то время как Information Leakage, Insufficient Transport Layer Protection и Fingerprinting зачастую связаны с недостаточно эффективным администрированием (например, разграничением доступа) в системах.
Рисунок 2. Наиболее распространенные уязвимости в Web-приложениях (% Vulns ALL)
Рисунок 3. Вероятность обнаружения наиболее распространенных уязвимостей Web-приложений (% Sites ALL)
Рисунок 4. Процент уязвимостей от общего числа (% Vulns ALL)
Рассматривая природу возникновения уязвимостей в целом (в соответствии с классификацией в Приложении 2), получим, что на 20% чаще встречаются уязвимости, связанные с недостаточно эффективным администрированием (Рис. 5). В тоже время, на один сайт приходиться до четырех проблем связанных с недостатками администрирования и до восьми уязвимостей, связанных с ошибками в разработке систем (Т.2).
T. 2 Вероятность обнаружения уязвимостей по природе возникновения
|
No. of Vulns |
No. of Sites |
% Vulns |
% Sites |
No. Vulns on Site |
Vulnerability in administration |
41859 |
10347 |
42,91% |
84,91% |
4,05 |
Vulnerability in code |
55695 |
7023 |
57,09% |
57,63% |
7,93 |
Рисунок 5. Вероятность обнаружения уязвимостей по природе возникновения
При детальном анализе Web-приложений методами BlackBox и WhiteBox ощутимый процент сайтов оказались уязвимы также для Content Spoofing и Path Traversal (Рис. 6). Причем вероятность обнаружения уязвимостей типа SQL Injection при таком подходе к анализу защищенности достигает 19% (Рис. 7).
Рисунок 6. Наиболее распространенные уязвимости в Web-приложениях (% Vulns BlackBox & WhiteBox)
Рисунок 7. Вероятность обнаружения наиболее распространенных уязвимостей Web-приложений (% Sites BlackBox & WhiteBox)
Рисунок 8. Процент уязвимостей от общего числа (% Vulns BlackBox & WhiteBox)
Если анализировать распространенность уязвимостей высокого степени риска при детальном обследовании Web-приложения (Рис. 9), то здесь наиболее часто встречаются ошибки типа «Предсказуемое значение идентификатора сессии» (Credential/Session Prediction). Также широко распространены ошибки «Внедрение операторов SQL» (SQL Injection), «Чтение произвольных файлов» (Path Traversal) и ошибки в реализации и настройке систем авторизации и аутентификации.
Рисунок 9. Вероятность обнаружения наиболее кричных уязвимостей Web-приложений (% Sites BlackBox & WhiteBox)
Если рассматривать вероятность обнаружения уязвимости с точки зрения воздействия на посетителей Web-ресурса и воздействия на Web-сервер (в соответствии с классификацией в Приложении 2), то наиболее распространенны уязвимости на стороне Web-сервера (Рис. 10). В тоже время, распределение уязвимостей по типу воздействия на один сайт не равномерно и во многом зависит от используемого способа поиска уязвимостей (Рис.11).
Рисунок 10. Вероятность обнаружения уязвимости по типу воздействия
Рисунок 11. Распределение уязвимостей на один сайт при использовании различных методов их поиска (No. Vulns on Site)
T. 3 Уязвимости по типу воздействия
|
No. of Vulns |
No. of Sites |
% Vulns |
% Sites |
No. Vulns on Site |
ALL Stat (Server-Side) |
50856 |
10125 |
52,13% |
83,09% |
5,02 |
ALL Stat (Client-Side) |
46698 |
7580 |
47,87% |
62,20% |
6,16 |
Scans (Server-Side) |
19746 |
8922 |
55,60% |
85,40% |
2,21 |
Scans (Client-Side) |
15767 |
6607 |
44,40% |
63,24% |
2,39 |
BlackBox (Server-Side) |
4260 |
804 |
23,77% |
76,86% |
5,30 |
BlackBox (Client-Side) |
13665 |
747 |
76,23% |
71,41% |
18,29 |
WhiteBox (Server-Side) |
17700 |
145 |
63,73% |
96,67% |
122,07 |
WhiteBox (Client-Side) |
10072 |
117 |
36,27% |
78,00% |
86,09 |
Рассматривая наборы полученных данных уязвимых Web-приложений в контексте соответствия требованиям стандарта по защите информации в индустрии платежных карт PCI DSS, можно выделить те из них (Т.4), которые относятся к устранению конкретных уязвимостей в Web-приложениях. Кроме того, PCI DSS Technical and Operational Requirements for Approved Scanning Vendors (ASVs) содержит в себе схожие требования, но затрагивает только процесс ASV-сканирования по PCI (Т.5).
T. 4 Требования стандарта PCI DSS, регламентирующие обязательное устранение конкретных уязвимостей в Web-приложениях
Требование PCI DSS v.1.2 |
Процедура |
6.5.1 Cross-site scripting (XSS) |
6.5.1 Cross-site scripting (XSS) (Validate all parameters before inclusion.) |
6.5.2 Injection flaws, particularly SQL injection. Also consider LDAP and Xpath injection flaws as well as other injection flaws. |
6.5.2 Injection flaws, particularly SQL injection |
6.5.3 Malicious file execution |
6.5.3 Malicious file execution (Validate input to verify application does not accept filenames or files from users.) |
6.5.5 Cross-site request forgery (CSRF) |
6.5.5 Cross-site request forgery (CSRF) (Do not reply on authorization credentials and tokens automatically submitted by browsers.) |
6.5.6 Information leakage and improper error handling |
6.5.6 Information leakage and improper error handling (Do not leak information via error messages or other means.) |
6.5.7 Broken authentication and session management |
6.5.7 Broken authentication and session management (Properly authenticate users and protect account credentials and session tokens.) |
6.5.9 Insecure communications |
6.5.9 Insecure communications (Properly encrypt all authenticated and sensitive communications.) |
T. 5 Требования PCI DSS Technical and Operational Requirements for Approved Scanning Vendors (ASVs), регламентирующие обязательное выявление конкретных уязвимостей в Web-приложениях при проведении ASV-сканирования
Требования Technical and Operational Requirements for Approved Scanning Vendors (ASVs) v.1.1 |
Процедура |
Web Server Check |
The ASV scanning solution must be able to test for all known vulnerabilities and configuration issues on web servers. New exploits are routinely discovered in web server products. The ASV scanning solution must be able to detect and report known exploits. Browsing of directories on a web server is not a good practice. The ASV scanning solution must be able to scan the web site and verify that directory browsing is not possible on the server. The ASV scanning solution must be able to detect all known CGI vulnerabilities. |
Custom Web Application Check |
The ASV scanning solution must be able to detect the following application vulnerabilities and configuration issues: |
Оценивая полученную статистику собранных данных по приведенным критериям в Т.4 и Т.5, будут получены данные, представленные в Т.6, на Рис. 12 - Рис. 14.
T. 6 % сайтов, не соответствующих требованиям стандарта PCI DSS при оценке Web-приложений различными методами
Требование PCI DSS v.1.2 |
Суммарная доля не соответствия, ALL (% Sites) |
Доля не соответствия при Scans (% Sites) |
Доля не соответствия при BlackBox (% Sites) |
Доля не соответствия при WhiteBox (% Sites) |
6.5.1 Cross-site scripting (XSS) |
38,45% |
37,66% |
56,41% |
58,67% |
6.5.2 Injection flaws, particularly SQL injection. Also consider LDAP and Xpath injection flaws as well as other injection flaws. |
14,55% |
12,70% |
19,31% |
64,00% |
6.5.3 Malicious file execution |
0,94% |
0,08% |
1,05% |
8,67% |
6.5.5 Cross-site request forgery (CSRF) |
1,32% |
0,02% |
7,93% |
0,67% |
6.5.6 Information leakage and improper error handling |
66,67% |
74,05% |
38,24% |
54,00% |
6.5.7 Broken authentication and session management |
7,62% |
0,52% |
30,98% |
71,33% |
6.5.9 Insecure communications |
34,42% |
39,96% |
0,00%* |
17,33% |
Требование Technical and Operational Requirements for Approved Scanning Vendors (ASVs) v.1.1 |
|
|
|
|
Web Server Check |
Не применимо |
5,73% |
Не применимо |
Не применимо |
Custom Web Application Check |
Не применимо |
44,92% |
Не применимо |
Не применимо |
* При проведении оценки защищенности Web-приложений методом черного ящика уязвимости данного класса не вносились в отчетные документы по результатам проводимых работ. Это связано с тем, что при проведении работ данным методом внимание аудиторов было направлено на наиболее опасные уязвимости.
Рисунок 12. Распределение сайтов, не удовлетворяющих требованиям стандарта PCI DSS
Рисунок 13. Уровень соответствия анализируемых Web-приложений требованиям стандарта PCI DSS (QSA)
Рисунок 14. Уровень соответствия анализируемых Web-приложений требованиям стандарта PCI DSS (ASV)
Таким образом, при проведении ASV-сканирования в отношении Web-приложений около 48% из них не удовлетворяют требованиям стандарта PCI DSS. В то же время при проведении более глубокого анализа 99% Web-приложений не удовлетворяет требованиям стандарта по защите информации в индустрии платежных карт.
Если провести сравнение полностью автоматических сканирований с ручной и автоматизированной оценкой методами черного и белого ящика, то явно видно отставание автоматического сканирования при обнаружении наиболее опасных ошибок (Рис. 15).
Рисунок 15. Распределение вероятности обнаружения уязвимостей по методу их поиска
Если рассматривать такой показатель, как количество обнаруженных уязвимостей на один сайт (Т.7), то детальный анализ позволяет в среднем идентифицировать до 91 уязвимостей высокой степени риска на одно приложение, в то время как автоматизированное сканирование – только 3 (Рис. 16).
T. 7 Количество уязвимостей на один сайт
Threat rank |
ALL |
Scans |
BlackBox |
WhiteBox |
Urgent |
3,90 |
2,70 |
8,00 |
18,04 |
Critical |
8,11 |
2,85 |
16,66 |
91,30 |
High |
4,02 |
1,47 |
4,92 |
147,02 |
Medium |
1,10 |
1,02 |
1,87 |
3,86 |
Low |
1,01 |
1,01 |
1,00 |
1,33 |
ALL |
8,01 |
3,40 |
17,14 |
185,15 |
Рисунок 16. Количество уязвимостей на один сайт
На Рис.1, Рис.15 и Рис.16 наглядно показано значительное отставание результатов автоматизированных сканирований и результатов оценки Web-приложений методом черного ящика от наиболее глубокого поиска уязвимостей методом белого ящика. Это свидетельствует о том, что использование способа поиска уязвимостей методом белого ящика в значительной степени является более эффективным по сравнению с другими способами.
T. 8 Методика оценки степени риска
Threat Classification |
Basic CVSS Score |
PCI DSS Risk |
Abuse of Functionality |
4 (AV:N/AC:H/Au:N/C:P/I:P/A:N) |
Medium |
Brute Force Attack |
6.8 (AV:N/AC:M/Au:N/C:P/I:P/A:P) |
Critical |
Buffer Overflow |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
Content Spoofing |
5 (AV:N/AC:L/Au:N/C:N/I:P/A:N) |
High |
Credential/Session Prediction |
6.8 (AV:N/AC:M/Au:N/C:P/I:P/A:P) |
Critical |
Cross-Site Scripting |
6.4 (AV:N/AC:L/Au:N/C:P/I:P/A:N) |
Critical |
Cross-Site Request Forgery |
5 (AV:N/AC:L/Au:N/C:N/I:P/A:N) |
High |
Denial of Service |
7.8 (AV:N/AC:L/Au:N/C:N/I:N/A:C) |
High |
Format String Attack |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
HTTP Request Splitting |
6.4 (AV:N/AC:L/Au:N/C:P/I:P/A:N) |
Critical |
HTTP Response Splitting |
6.4 (AV:N/AC:L/Au:N/C:P/I:P/A:N) |
Critical |
HTTP Request Smuggling |
6.4 (AV:N/AC:L/Au:N/C:P/I:P/A:N) |
Critical |
HTTP Response Smuggling |
6.4 (AV:N/AC:L/Au:N/C:P/I:P/A:N) |
Critical |
Integer Overflow |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
LDAP Injection |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
Mail Command Injection |
5 (AV:N/AC:L/Au:N/C:N/I:P/A:N) |
High |
OS Commanding |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
Path Traversal |
7.8 (AV:N/AC:L/Au:N/C:C/I:N/A:N) |
Critical |
Predictable Resource Location |
5 (AV:N/AC:L/Au:N/C:P/I:N/A:N) |
High |
Remote File Inclusion |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
Routing Detour |
5 (AV:N/AC:L/Au:N/C:P/I:N/A:N) |
High |
SOAP Array Abuse |
7.8 (AV:N/AC:L/Au:N/C:N/I:N/A:C) |
High |
SSI Injection |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
Session Fixation |
6.8 (AV:N/AC:M/Au:N/C:P/I:P/A:P) |
Critical |
SQL Injection |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
URL Redirectors |
2.6 (AV:N/AC:H/Au:N/C:N/I:P/A:N) |
Medium |
XPath Injection |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
XML Attribute Blowup |
5 (AV:N/AC:L/Au:N/C:P/I:N/A:N) |
High |
XML External Entity |
5 (AV:N/AC:L/Au:N/C:P/I:N/A:N) |
High |
XML Entity Expansion |
5 (AV:N/AC:L/Au:N/C:P/I:N/A:N) |
High |
XML Injection |
7.5 (AV:N/AC:L/Au:N/C:P/I:P/A:P) |
Critical |
XQuery Injection |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
Application Misconfiguration |
5.1 (AV:N/AC:H/Au:N/C:P/I:P/A:P) |
Medium |
Directory Indexing |
5 (AV:N/AC:L/Au:N/C:P/I:N/A:N) |
High |
Fingerprinting |
0 (AV:N/AC:L/Au:N/C:N/I:N/A:N) |
Low |
Improper Parsing |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
Improper Permissions |
10 (AV:N/AC:L/Au:N/C:C/I:C/A:C) |
Urgent |
Information leakage |
5 (AV:N/AC:L/Au:N/C:P/I:N/A:N) |
High |
Insecure Indexing |
5 (AV:N/AC:L/Au:N/C:P/I:N/A:N) |
High |
Insufficient Anti-automation |
4 (AV:N/AC:H/Au:N/C:P/I:P/A:N) |
Medium |
Insufficient Authentication |
6.8 (AV:N/AC:M/Au:N/C:P/I:P/A:P) |
Critical |
Insufficient Authorization |
6.8 (AV:N/AC:M/Au:N/C:P/I:P/A:P) |
Critical |
Insufficient Data Protection |
5 (AV:N/AC:L/Au:N/C:P/I:N/A:N) |
High |
Insufficient Process Validation |
4 (AV:N/AC:H/Au:N/C:P/I:P/A:N) |
Medium |
Insufficient Session Expiration |
6.8 (AV:N/AC:M/Au:N/C:P/I:P/A:P) |
Critical |
Insufficient Transport Layer Protection |
4 (AV:N/AC:H/Au:N/C:P/I:P/A:N) |
Medium |
Server Misconfiguration |
5.1 (AV:N/AC:H/Au:N/C:P/I:P/A:P) |
Medium |
T. 9 Классификация уязвимостей по природе возникновения и типу воздействия
Threat Classification |
Vulnerability in |
Impact |
Abuse of Functionality |
code |
server-side |
Brute Force Attack |
administration |
server-side |
Buffer Overflow |
code |
server-side |
Content Spoofing |
code |
client-side |
Credential/Session Prediction |
code |
server-side |
Cross-Site Scripting |
code |
client-side |
Cross-Site Request Forgery |
code |
client-side |
Denial of Service |
administration |
server-side |
Format String Attack |
code |
server-side |
HTTP Request Splitting |
code |
client-side |
HTTP Response Splitting |
code |
client-side |
HTTP Request Smuggling |
administration |
client-side |
HTTP Response Smuggling |
administration |
client-side |
Integer Overflow |
code |
server-side |
LDAP Injection |
code |
server-side |
Mail Command Injection |
code |
server-side |
OS Commanding |
code |
server-side |
Path Traversal |
code |
server-side |
Predictable Resource Location |
administration |
server-side |
Remote File Inclusion |
code |
server-side |
Routing Detour |
code |
server-side |
SOAP Array Abuse |
code |
server-side |
SSI Injection |
code |
server-side |
Session Fixation |
code |
server-side |
SQL Injection |
code |
server-side |
URL Redirectors |
code |
client-side |
XPath Injection |
code |
server-side |
XML Attribute Blowup |
code |
server-side |
XML External Entity |
code |
server-side |
XML Entity Expansion |
code |
server-side |
XML Injection |
code |
server-side |
XQuery Injection |
code |
server-side |
Application Misconfiguration |
administration |
server-side |
Directory Indexing |
administration |
server-side |
Fingerprinting |
administration |
server-side |
Improper Parsing |
code |
server-side |
Improper Permissions |
administration |
server-side |
Information leakage |
administration |
server-side |
Insecure Indexing |
administration |
server-side |
Insufficient Anti-automation |
code |
server-side |
Insufficient Authentication |
code |
server-side |
Insufficient Authorization |
code |
server-side |
Insufficient Data Protection |
administration |
server-side |
Insufficient Process Validation |
code |
server-side |
Insufficient Session Expiration |
code |
server-side |
Insufficient Transport Layer Protection |
administration |
client-side |
Server Misconfiguration |
administration |
server-side |
Собираем и анализируем опыт профессионалов ИБ