Ihor Bliumental
OWASP Kyiv Chapter Lead
ihor.bliumental@owasp.org
Unsafe Cross Origin Resource
Sharing
Same Origin Policy (SOP)
• Origin: https://example.com:8433
• http://example.com:8443
• https://www.example.com:8443
• https://example.com:443
• https://www.example.org:8443
Репозиторий и ссылки
• https://goo.gl/63ZGwt
Cross Origin Access
• Запись. Обычно разрешена (ссылки, перенаправления,
формы).
• Встраивание. Обычно разрешено:
• JS <script src="..."></script>
• CSS <style rel="stylesheet" href="..."> (требуют верного
Content-type)
• Картинки и медиа <img>, <video>, <audio>
• Плагины <embed>, <object>, <applet>
• Шрифты @font-face
• Фреймы <iframe>, <frame>
• Чтение. Обычно не разрешено
JSONP (XSSI)
• JSON with padding, Cross site script
include
• X-Content-Type-Options: nosniff
Flash and MS Silverlight
• crossdomain.xml и clientaccesspolicy.xml
• *, *.example.com
Modern CORS
Same Origin Policy для XMLHttpRequest
Origin: https://site1.com
Web-

APP
Server – site1.com
Server – site2.com
Browser
https://site1.com
XMLHttp
Modern CORS
• Запросы
• Origin: (https?|ftp)://example.com|null
• Access-Control-Request-Method: <method>
• Access-Control-Request-Headers: <field-name> ...
• Ответы
• Access-Control-Allow-Origin: <origin> | *
• Access-Control-Allow-Credentials: true
• Access-Control-Allow-Methods: <method> ...
• Access-Control-Allow-Headers: <field-name> ....
• Access-Control-Expose-Headers: X-Custom-Header
• Access-Control-Max-Age: <delta-seconds>
WebSockets
• Не проверяется Origin по-умолчанию
postMessage
• Проверка Origin на разработчике
• Уязвимый сайт в <iframe> — защита X-
Frame-Options
• Уязвимый сайт в поп-апе (window.open) —
предупреждения от браузера
• Можно использовать расширения хрома —
OWASP London, доклад Арсения Реутова
(https://raz0r.name/) https://goo.gl/MGrhN9
Спасибо за внимание
«В обратную сторону»
• Заголовок Access-Control-Allow-Origin: *
позволяет злоумышленнику встраивать
содержимое

Ihor Bliumental - Collision CORS

  • 1.
    Ihor Bliumental OWASP KyivChapter Lead ihor.bliumental@owasp.org Unsafe Cross Origin Resource Sharing
  • 2.
    Same Origin Policy(SOP) • Origin: https://example.com:8433 • http://example.com:8443 • https://www.example.com:8443 • https://example.com:443 • https://www.example.org:8443
  • 3.
  • 4.
    Cross Origin Access •Запись. Обычно разрешена (ссылки, перенаправления, формы). • Встраивание. Обычно разрешено: • JS <script src="..."></script> • CSS <style rel="stylesheet" href="..."> (требуют верного Content-type) • Картинки и медиа <img>, <video>, <audio> • Плагины <embed>, <object>, <applet> • Шрифты @font-face • Фреймы <iframe>, <frame> • Чтение. Обычно не разрешено
  • 5.
    JSONP (XSSI) • JSONwith padding, Cross site script include • X-Content-Type-Options: nosniff
  • 6.
    Flash and MSSilverlight • crossdomain.xml и clientaccesspolicy.xml • *, *.example.com
  • 7.
    Modern CORS Same OriginPolicy для XMLHttpRequest Origin: https://site1.com Web-
 APP Server – site1.com Server – site2.com Browser https://site1.com XMLHttp
  • 8.
    Modern CORS • Запросы •Origin: (https?|ftp)://example.com|null • Access-Control-Request-Method: <method> • Access-Control-Request-Headers: <field-name> ... • Ответы • Access-Control-Allow-Origin: <origin> | * • Access-Control-Allow-Credentials: true • Access-Control-Allow-Methods: <method> ... • Access-Control-Allow-Headers: <field-name> .... • Access-Control-Expose-Headers: X-Custom-Header • Access-Control-Max-Age: <delta-seconds>
  • 9.
    WebSockets • Не проверяетсяOrigin по-умолчанию
  • 10.
    postMessage • Проверка Originна разработчике • Уязвимый сайт в <iframe> — защита X- Frame-Options • Уязвимый сайт в поп-апе (window.open) — предупреждения от браузера • Можно использовать расширения хрома — OWASP London, доклад Арсения Реутова (https://raz0r.name/) https://goo.gl/MGrhN9
  • 11.
  • 12.
    «В обратную сторону» •Заголовок Access-Control-Allow-Origin: * позволяет злоумышленнику встраивать содержимое