Вбудований CSRF в Google Chrome

19:21 24.09.2011

В березні в записі Вбудований CSRF в Mozilla та Firefox я писав про проведення CSRF атак через префетчінг - функцію попереднього завантаження сторінок. Що наявна в браузерах від Mozilla (всіх браузерах на движку Gecko).

І в Google Chrome 13, як в dev і beta, так і фінальній версії, що вийшла минулого місяця, додали підтримку префетчінгу. Цю функцію Гугл ще називає пререндіренгом та Instant Pages. Тому з недавніх пір не тільки браузери Mozilla та Firefox, але й Chrome вразливі до CSRF атак через префетчінг.

По замовчуванню в Chrome опція префетчінга увімкнена. Що дозволяє проводити дану атаку на всіх користувачів Google Chrome 13 та наступних версій.

На даний момент підтримується один з трьох (реалізованих Мозілою) варіантів префетчінгу (і відповідно варіантів атаки):

<link rel=”prerender” href=”http://site/script_to_attack”>

Тільки замість “prefetch”, використовується “prerender”. Варіанти префетчінгу (і атаки) через meta-тег і HTTP заголовок Link будуть додані пізніше.

Враховуючи, що Гугл розширив концепцію префетчінга в своїй функції пререндерінга, то і атака може бути більш небезпечною. Якщо у префетчінгу відбувався лише один запит до одної сторінки (і лише вона викачувалася), то у пререндеренгу викачується як сама сторінка, так і всі ресурси, на які вона посилається (тобто відбувається багато запитів з одного лише link-тега). Що може використовуватися як з метою DoS-атак одночасно на велике число ресурсів (зі сторінки, на яку вказує link-тег), так і для проведення багатьох CSRF-атак (на один або багато різних сайтів).

Для захисту від даної атаки потрібно відключити префетчінг в браузері. Для цього в налаштуваннях (Settings) потрібно відключити опцію “Predict network actions to improve page load performance”. В цьому відношенні Гугл зробив краще ніж Мозіла, бо залишив дану опцію в налаштуваннях (тому що Мозіла робила так в старих браузерах, а починаючи з Firefox приховала дану опцію і потрібно її змінювати спеціальних просунутим методом, що я описав в вищезгаданому записі).

Атака працює в Google Chrome 13.0. А також (при використанні rel=”prefetch”), як я писав раніше, в Mozilla та Firefox (та інших браузерах на движку Gecko, що має функцію префетчінга).


Leave a Reply

You must be logged in to post a comment.