uss#“enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf•...
TRANSCRIPT
![Page 1: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/1.jpg)
USS “Enterprise” -‐ сквозь черные дыры безопасности Java Web-‐
контейнеров Михаил Дударев
Licel, 2014
![Page 2: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/2.jpg)
2
Mobius 2014 -‐ Защита от темных искусств, или Как уберечь Android-‐приложение от угроз
JUG, SPB 2014 -‐ “Опасные типы”, или Java Security Model на практике
DroidCon 2014 -‐ Android applicaRons in the cruel world
JPoint 2014 -‐ Побег из песочницы. Уязвимости нулевого дня в Java
![Page 3: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/3.jpg)
• Михаил Дударев, работает с Java Security более 15 лет, основатель проекта jCardSim, Java Card симулятора, завоевавшего награду Duke's Choice Award 2013, со-‐основатель компании Licel.
• Licel занимается созданием решений для защиты
программного от нелегального использования и модификации третьими лицами для Java и Android платформ.
О нас
3
![Page 4: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/4.jpg)
35% 22%
4
![Page 5: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/5.jpg)
Популярные атаки 1. XSS 2. Encypron 3. Access Control 4. SQL Injecron 5. CSRF
5
![Page 6: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/6.jpg)
6
![Page 7: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/7.jpg)
• Open Web Applicaron Security Project – Некоммерческая организация, основанная в 2001 году
• Документы – Top 10 Security Risks – Guidelines – Cheat sheets
• Библиотеки и инструменты – Zed A|ack Proxy (ZAP) – App Sensor – Enterprise Security API (ESAPI)
• Обучающие среды – WebGoat
7
![Page 8: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/8.jpg)
OWASP Top 10 2013 A1 Injecron A2 Broken Authenrcaron and Session Management A3 Cross-‐Site Scriprng (XSS) A4 Insecure Direct Object Reference A5 Security Misconfiguraron A6 Sensirve Data Exposure A7 Missing Funcron Level Access Control A8 Cross-‐Site Request Forgery (CSRF) A9 Using Known Vulnerable Components A10 Unvalidated Redirects and Forwards
8
![Page 9: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/9.jpg)
Атаки на Web-‐приложения • Атаки на сессию
– A2 Broken Authenrcaron and session management – A6 Sensirve Data Exposure
• Атаки на клиентской стороне – A3 Cross-‐Site Scriprng (XSS) – A8 Cross-‐Site Request Forgery (CSRF)
• Получение неавторизированного доступа – A7 Missing Level Funcron Access Control – A4 Insecure Direct Object Reference
• Атаки на серверную логику – A1 Injecrons – A10 Unvalidated redirects and forwards
9
![Page 10: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/10.jpg)
Манипуляции с сессией (A2) • Кража информации о сессии – URL, sniffing, logs, XSS
• Предсказывание сессии • Фиксация сессии – Плагины для браузеров – Прокси (например OWASP ZAP)
10
![Page 11: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/11.jpg)
Раскрытие сессии (A6) • Транспорт – Незашифрованное соединение
• Клиент – XSS – Атаки на браузер/ОС
• Сервер – Логи – Репликация сессии – Дамп памяти
11
![Page 12: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/12.jpg)
Cross-‐Site Scriprng XSS (A3) • Возникает в случае отображения “вредных” данных web-‐
приложением – Недоверенный код исполняется приложением – Выполнение “вредного” кода при отображении, без предварительной валидации
• Основные типы – Сохраненные (Stored) – Наведенные (Reflected)
12
![Page 13: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/13.jpg)
CSRF (A8)
Земля Альфа Центавра IV
1) Аутентификация 2) Сайт злоумышленника
3) Страница с CSRF-‐кодом <img src=”http://earth/adminHandling.jsp? operation=Add&status=Commander&user=Knah> 4) Браузер отсылает запрос
GET /adminHandling.jsp HTTP/1.1 Cookie: <earth authentication cookie>
13
![Page 14: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/14.jpg)
Injecrons (A1) • Возникает в случае отправки приложением, неверифицированных данных интерпретатору – SQL Injecron – XSS – ORM Injecron – NoSql Injecron – Xpath Injecron – JSON Injecron – Cmd Injecron
14
![Page 15: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/15.jpg)
Java Web Applicaron Security Java Web Servlet Container (Tomcat)
HTTPS Terminaron Point
Java Secure Socket Extension
Confidenrality
1
Java EE Security
Authenrcaron | Authorizaron
2
Spring Security
Page level role check
3
Web App 4
DAO 5
15
![Page 16: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/16.jpg)
Tomcat • Security Misconfiguraron (A5)
– Запуск с правами Администратора – Запуск Tomcat без Security Manager – Публичный доступ к Manager Web App и внутренним Web App – Публичный доступ к shutdown-‐порту – Отображение ошибок компиляции
16
![Page 17: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/17.jpg)
Tomcat • Using Known Vulnerable Components (A9)
17 0
1
2
3
4
5
Отказ в обсуживании
Переполнение
Выполнение кода
Обход проверок
Раскрытие информации
Количество найденных уязвимостей по типам (2014)
h|p://www.cvedetails.com
![Page 18: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/18.jpg)
One more… Double Demo
18
![Page 19: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/19.jpg)
19
РРРРРР… SSL v3
BEAST… TLS 1.0
TLS 1.1
TLS 1.2
![Page 20: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/20.jpg)
JSSE <Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol” SSLEnabled="true” scheme="https" secure="true” clientAuth="false” sslProtocol="TLSv1.2” sslEnabledProtocols="TLSv1.2” ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
…" />
20
![Page 21: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/21.jpg)
SSL, TLS • SSL предшественник TLS • TLS 1.0 апгрейд SSL 3.0 (1999) • Уязвимые версии SSL v2, SSL v2, TLS 1.0 • Текущая версия TLS 1.2
21
![Page 22: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/22.jpg)
ECDH_RSA_WITH_AES_128_GCM_SHA256 ???
• Алгоритм согласования ключей (ECDH/ECDHE) • Ключевой алгоритм (RSA) • WITH_(Алгоритм шифрования)_(длина в битах)_(режим
шифрования) – Рекомендуется AES – Минимум 128 бит – GCM/CBC
• Алгоритм хеш-‐функции – Минимум SHA-‐256
22
![Page 23: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/23.jpg)
New Java 8 Security Features • TLS Server Name Indicaron (SNI) Extension (виртуальные
адреса) • Поддержка Authenrcated AES GCM режима шифрования • Набор EC-‐ключей NSA Suite B • PKCS#11 Crypto Provider для 64-‐bit Windows • Аппаратное ускорение для AES • Полнофункциональное PKCS#12 хранилище ключей
23
![Page 24: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/24.jpg)
And One More Thing…
24
![Page 25: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/25.jpg)
Начиная c октября 2014
25
Январь Апрель Июль Октябрь
CPU CPU CPU CPU
PSU PSU PSU PSU
![Page 26: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/26.jpg)
Коммандер Спок рекомендует
26
![Page 27: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/27.jpg)
1. Content Security Policy • W3C Candidate Recommendaron
– Content-‐Security-‐Policy – Content-‐Security-‐Policy-‐Report-‐Only
• Определяет список разрешенных источников • Директивы
default-‐src script-‐src object-‐src style-‐src img-‐src
media-‐src frame-‐src font-‐src connect-‐src
report-‐uri
27
![Page 28: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/28.jpg)
1. Content Security Policy
h|p://caniuse.com/#feat=contentsecuritypolicy 28
![Page 29: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/29.jpg)
2. Encrypron • Включение SSL в web.xml
<security-‐constraint> ... <user-‐data-‐constraint> <transport-‐guarantee> CONFIDENTIAL </transport-‐guarantee> </user-‐data-‐constraint> </security-‐constraint>
29
![Page 30: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/30.jpg)
2. Secure cookie • Убедитесь в том, что Cookie’s могут передаваться/
использоваться только через SSL + H|pOnly • Через web.xml (Servlet 3.0)
<session-‐config>
<cookie-‐config>
<secure>true</secure>
<http-‐only>true</http-‐only>
</cookie-‐config> </session-‐config>
30
![Page 31: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/31.jpg)
2. HTTP Strict-‐Transport-‐Security (HSTS)
• Определен в RFC 6797 – Strict-‐Transport-‐Security: max-‐age=seconds;
includeSubdomains (seconds – min 18 недель) • Браузер работает по следующим правилам – Автоматический редирект всех HTTP-‐запросов на HTTPS (h|p://example.com -‐> h|ps://example.com)
– Если сертификат сайта ошибочен, или самозаверен, пользователю запрещается работать с сайтом
31
![Page 32: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/32.jpg)
2. HTTP Strict-‐Transport-‐Security
h|p://caniuse.com#feat=stric|ransportsecurity 32
![Page 33: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/33.jpg)
3. Access Control • Избегайте указания <h|p-‐method> в <security-‐constraint>
<security-‐constraint>
<web-‐resource-‐collection>
<url-‐pattern>/site/*</url-‐pattern>
<http-‐method>GET</http-‐method>
<http-‐method>POST</http-‐method>
</web-‐resource-‐collection> ... </security-‐constraint>
33
![Page 34: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/34.jpg)
4. SQL/ORM Injecron • Используйте PreparedStatement c обязательным
указанием всех параметров через ‘?’ String query = "SELECT * FROM users WHERE age > " + age + " AND gender = '" + gender + "'";
PreparedStatement stmt = con.prepareStatement(query); ResultSet rs = stmt.executeQuery();
34
![Page 35: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/35.jpg)
5. CSRF • Необходимо включать что-‐то случайное в запрос
– anr-‐CSRF токен • JSF 2.2
– HTTP POST: javax.faces.ViewState hidden field cо случайным токеном
– HTTP GET: protected-‐views в WEB-‐INF/faces-‐config.xml – Новый javax.faces.Token URL параметр
• Tomcat 6/7/8 (org.apache.catalina.filters.CsrfPrevenronFilter)
35
![Page 36: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/36.jpg)
5. OWASP CSRF Guard • Может включать anr-‐CSRF токены, используя: – Работу с JavaScript DOM – автоматическая защита с минимальными усилиями
– JSP Tag library – для тонкой ручной защиты • Фильтр для перехватки запросов и валидации
токенов
36
![Page 37: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/37.jpg)
5. OWASP CSRF Guard XMLHttpRequest.prototype._open = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { // store a copy of the target URL this.url = url; this._open.apply(this, arguments); } XMLHttpRequest.prototype._send = XMLHttpRequest.prototype.send;! XMLHttpRequest.prototype.send = function(data) { if(this.onsend != null) { // call custom onsend method to modify the request this.onsend.apply(this, arguments); } this._send.apply(this, arguments); }
37
![Page 38: USS#“Enterprise”#.#сквозь#черные# … › presentations › dudarev.pdf• Михаил#Дударев, работает#с#JavaSecurity более15 лет, основатель#проекта#jCardSim,#JavaCard#](https://reader033.vdocuments.site/reader033/viewer/2022060409/5f1012d07e708231d447507f/html5/thumbnails/38.jpg)
Ссылки h|ps://www.owasp.org h|ps://shiro.apache.org
38