Універсальна XSS уразливість в Ad Muncher

23:56 15.05.2010

У червні 2006 року я знайшов Cross-Site Scripting уразливість в Ad Muncher. Про що найближчим часом повідомлю розробникам. Тоді в червні 2006 я активно займався пошуком XSS уразливостей і звернув увагу на те, що Ad Muncher створює XSS на сторінках (при вказанні XSS-коду в URL), в тому числі й на тих, де дірок немає.

Ad Muncher - це блокувальник реклами. Мій улюблений (яким я користуюся з 2003 року). На даний момент з 25.07.2003 Ad Muncher в мене на комп’ютері заблокував 1520201 рекламних банерів.

За допомогою даної уразливості можна провести XSS атаку на будь-який сайт, тому це універсальна XSS. Причому атака працює в будь-якому браузері, що є на комп’ютері жертви (так як Ad Muncher вміє працювати з будь-якими браузерами). Тому це найбільш небезпечний серед існуючих різновидів XSS. Головне, щоб жертва користувалася Ad Muncher.

Даний клас Cross-Site Cripting уразливостей я назвав Local XSS (Локальний XSS) - це Cross-Site Cripting уразливості в локальному програмному забезпеченні (на комп’ютері користувача, або в локальній мережі), які приводять до появи XSS уразливостей.

XSS:

Уразливість можлива через те, що програма вказує поточний URL в тілі поточної сторінки (без фільтрації тегів):

При запиті до http://site в тілі поточної сторінки маємо:
// Original URL: http://site

Можливі дві атаки (двох класів XSS уразливостей): reflected XSS та Post Persistent XSS (Saved XSS).

Як reflected XSS:

http://www.google.com/webhp?%3C/script%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

Як Saved XSS:

http://www.google.com/webhp?%3C/script%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E

При збереженні сторінки зі “спеціальним” URL, в коді сторінки зберігається XSS код. І відбувається виконання XSS коду при відкритті даної сторінки (причому її відкритті в будь-якому браузері, не тільки в тому, в якому вона зберігалася). Як я вже зазначав в статті про Saved XSS, дані уразливості можуть використовуватися для Code Execution через XSS атак.

Дана уразливість подібна до уразливостей в Internet Explorer (про яку я писав в серпні 2007), Chrome та Opera (про які я писав в жовтні 2008). Але зате вона працює в усіх браузерах, в тому числі навіть в тих браузерах де немає подібної уразливості.

Атака (обидві атаки) не спрацює лише в таких випадках:

1. Доступ до сайту відбувається через SSL (тобто на https-ресурсах).
2. Для даного сайта (на який відбувається атака) зроблений фільтр в програмі (Exclude filtering on site).
3. Для даного браузера (через який відбувається атака) в програмі зроблене відключення фільтрації.
4. Із-за глюка в програмі (іноді навіть для http-сайта програма зненацька може відключити фільтрацію).

Уразливі Ad Muncher v4.52 та попередні версії та деякі наступні версії. Я тестував на Ad Muncher v4.52. Сьогодні я викачав і перевірив на Ad Muncher v4.81 - дана версія не вразлива. Як я виявив в changelog.txt, дана уразливість була виправлена в версії Ad Muncher v4.71 (08.10.2007). Тому вразливі Ad Muncher v4.7 та попередні версії.

P.S.

Після публікації даного запису, я знайшов в Гуглі цікаву статтю. Як повідомили секюріті дослідники в своїй статті Detecting In-Flight Page Changes with Web Tripwires, вони в 2007 році (тобто через рік після мене) виявили дану уразливість в Ad Muncher (в своїх дослідженнях вони звернули увагу лише на reflected XSS, але не на Saved XSS). А також в Sidki та наборі фільтрів Grypen для Proxomitron.

Причому в Proxomitron можна було проводити атаки навіть на https-сайти. Про що вони повідомили розробникам даних програм ще восени 2007 року.


Leave a Reply

You must be logged in to post a comment.