Вбудований CSRF в Mozilla та Firefox

23:51 19.03.2011

Ще 06.02.2008 я виявив CSRF уразливість в Mozilla та Firefox. Дану атаку я назвав Prefetching CSRF, тому що CSRF-атака відбувається через функцію префетчінгу. Це вбудована CSRF уразливість, бо використовується вбудований функціонал браузера.

Функцію префетчінга я використовував ще з березня 2003, як почав користуватися Мозілою, але лише в лютому 2008 року я звернув увагу на можливість використання функції префетчінга для проведення CSRF атак (і з тих пір більше її не використовую).

По замовчуванню в Мозілі та Феєрфоксі опція префетчінга увімкнена. Що дозволяє проводити дану атаку на всіх користувачів Mozilla, Firefox та інших браузерів на движку Gecko.

Атаку можна провести через теги link або meta, або через HTTP заголовок Link, в яких задається relation тип next або prefetch.

Через теги:

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

<meta http-equiv=”Link” content=”<http://site/script_to_attack>; rel=prefetch”>

Через HTTP заголовок:

Link: <http://site/script_to_attack>; rel=prefetch

Для атаки потрібно розмістити необхідні html-теги на сайті (або додати необхідний заголовок до скрипта), що може бути зроблено через відповідні уразливості, або додано нападником на власному сайті. Після чого потрібно заманити жертву на відповідну сторінку.

Дана методика CSRF-атак стане в нагоді, коли інші методи недоступні. Зокрема коли користувач браузера відключить зображення, скрипти, плагіни, frame/iframe та css, тобто всі можливі варіанти (на його думку) для проведення CSRF-атак, все рівно можна буде провести CSRF-атаку через функцію префетчінга.

До того ж даний метод може бути використаний для обходу систем захисту від CSRF. Зокрема розширення NoScript від Firefox, яке з 2007 року також має вбудований захист від CSRF-атак. Використовуючи функцію префетчінга NoScript легко обходиться.

При цьому завдяки можливості використовувати заголовки сервера для префетчінга можна проводити приховані атаки. Тому що інструкція браузеру зробити CSRF-атаку буде знаходитися не в тілі веб сторінки, а в HTTP заголовку, тому звичайний користувач не зможе легко виявити подібну атаку (джерело і напрям атаки). Так само як не зможуть її виявити і секюріті програми, що аналізують лише код веб сторінок.

Для захисту від даної атаки потрібно відключити префетчінг в браузері. В старій Mozilla це можна було зробити через меню (в опціях), але в Firefox ще з самих перших версій дану можливість з меню (з опцій) прибрали. Тому потрібно задати налаштування просунутим методом (який працює в усіх браузерах на движку Gecko). Щоб відключити цей функціонал, в about:config в network.prefetch-next вкажіть false.

Атака працює лише в Mozilla та Firefox (та інших браузерах на движку Gecko, що має функцію префетчінга). В браузерах Internet Explorer, Opera та Chrome це не працює. Вразливі всі версії Mozilla та Mozilla Firefox (в тому числі Firefox 3.x та бета версії 4.0).


Leave a Reply

You must be logged in to post a comment.