1.5 Testing for Browser Cache Weaknesses

Суть тестування:

На цьому етапі тестувальник перевіряє, чи зберігається конфіденційні дані у браузері для поточного веб-додатку. Браузер може зберігати інформацію в кеші та історії браузера. Кешування використовується для підвищення продуктивності, тому що не треба заново завантажувати вже завантажену інформацію. Для користувача використовуються механізми історії, які дозволяють йому бачити саме те, що він бачив на той час, до зміни ресурсу. Якщо критична інформація відображається користувачеві (наприклад, його адреса, дані кредитної картки, номер соціального страхування або ім'я користувача), то ця інформація може бути збережена в кеш або в історії браузера. Отже, з цих місць зловмисник може отримати цю інфу шляхом вивчення кеша браузера або просто натиснувши кнопку в браузері "Назад".

Завдання тесту

Мета цього тесту - оцінити, чи зберігає додаток конфіденційну інформацію в доступній для клієнта системі, місці або чи не є способи, які дають можливість перегляду даних без автентифікованого та авторизованого сеансу. Тому треба перевірити, чи зберігається конфіденційна інформація:

- На диску або в пам'яті, звідки сеанс можна відновити після використання.

- На сторінці, яка доступна після використання кнопки "Назад".

Як протестувати

Історія браузера

Технічно, кнопка "Назад" - це історія, а не кеш. Кеш та історія – це дві різні сутності. Однак вони поділяють ту ж слабкість подання раніше відображуваної конфіденційної інформації.

Перший і найпростіший тест складається з введення конфіденційної інформації у додаток та виходу із системи. Потім тестеру потрібно натиснути кнопку «Назад» у браузері, щоб перевірити, чи доступна конфіденційна інформація, що раніше відображається, коли він перебувати не автентифікований.

Якщо при натисканні кнопки «Назад» тестер може отримати доступ до попередніх сторінок, але не може отримати доступ до нових, це не проблема аутентифікації, а проблема з історією браузера. Якщо ці сторінки містять конфіденційні дані, це означає, що програма не забороняє браузеру зберігати їх.

Кнопка "Назад" може не відображати конфіденційні дані. Це можна зробити:

- Доставкою сторінки за протоколом HTTPS.

- Налаштування Cache-Control: must-revalidate

Кеш браузера

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

Cache-Control: no-cache, no-store

Expires: 0

Pragma: no-cache

Ці директиви, як правило, надійні, хоча можуть знадобитися додаткові прапори для заголовка Cache-Control, щоб запобігти постійно пов'язаним файлам у файловій системі. Це включається так:

Cache-Control: must-revalidate, max-age=0, s-maxage=0

HTTP/1.1:

Cache-Control: no-cache

HTTP/1.0:

Pragma: no-cache

Expires: past date or illegal value (e.g., 0)

Наприклад, якщо тестувальники тестують програму електронної комерції, вони повинні шукати всі сторінки, що містять кредитну картку, номер чи іншу фінансову інформацію. Щоб переконатися, що на всіх цих сторінках діє директива no-cache. Якщо вони знайдуть сторінки, які містять важливу інформацію, але не можуть вказати браузеру не кешувати їхній контент, вони знають, що конфіденційна інформація зберігатиметься на диску, що дає змогу перевірити це, просто переглянувши сторінку в кеші браузера. Точне місце, де зберігається ця інформація, залежить від клієнтської операційної системи та від браузера, в якому було використано. Ось деякі приклади:

- Mozilla Firefox:

-- Unix/Linux: ~/.cache/mozilla/firefox/

-- Windows: C:\Users\\AppData\Local\Mozilla\Firefox\Profiles\\Cache2\

- Internet Explorer:

-- C:\Users\\AppData\Local\Microsoft\Windows\INetCache\

- Chrome:

-- Windows: C:\Users\\AppData\Local\Google\Chrome\User Data\Default\Cache

-- Unix/Linux: ~/.cache/google-chrome

Перегляд кешованої інформації

Firefox надає функціональні можливості для перегляду кешованої інформації, що може бути корисним для вас як тестувальнику. Звичайно промисловість також випустила різні розширення та зовнішні програми, які можуть вам знадобитися для Chrome, Explorer або Edge.

Деталі кешу також доступні через інструменти розробника у більшості сучасних браузерів, таких як Firefox, Chrome та Edge. У Firefox також можна використовувати URL about: cache для перевірки деталей кешу.

Перевірка обробки для мобільних браузерів

Обробка кеша може бути зовсім іншою для мобільних браузерів. Тому тестувальникам слід починати новий сеанс із чистим кешем і використанням таких функцій, у Chrome це Device Mode, а Firefox Responsive Design Mode.

Крім того, особисті проксі, такі як ZAP і Burp Suite, дозволяють тестувальнику вказати, який User-Agent має бути надісланий з їхніми павуками/сканерами. Його можна налаштувати так, щоб воно відповідало рядку User-Agent мобільного браузера і використовувалося для визначення директиви кешування програми, що тестується.

Tools

OWASP Zed Attack Proxy