Надмірне розкриття даних
Екран ховає поля. Відповідь API — ні.
Що таке Надмірне розкриття даних?
Ендпоінт серіалізує весь збережений запис і розраховує, що клієнтська програма покаже лише безпечні поля. Той, хто викликає, читає необроблену відповідь, а не готовий інтерфейс. Ви відкриєте картку профілю з іменем і містом, запишете виклик, що стоїть за нею й знайдете в тілі відповіді електронну адресу, телефон, дату народження й координати дому, а потім повторите це на стрічці рекомендацій для тисяч людей. Виправлення — явна проєкція зі списку дозволених полів на сервері. Виправлений ендпоінт, як і раніше, відповідає 200, лише з меншою кількістю полів.
Що ви дізнаєтесь у Надмірне розкриття даних
- Розпізнавайте надмірне розкриття даних: ендпоінт повертає більше полів, ніж потрібно клієнтській програмі, бо серіалізує весь об'єкт і розраховує, що клієнтська програма його відфільтрує, тож необроблена відповідь розкриває чутливі поля, яких екран ніколи не показує
- Усвідомлюйте, що клієнтська програма не є межею безпеки: той, хто викликає, читає необроблену відповідь, а не готовий інтерфейс, тож кожне поле у відповіді розкрите незалежно від того, що показує застосунок
- Відрізняйте надмірне розкриття даних від порушеної авторизації на рівні об'єктів (доступ до чужого об'єкта за ідентифікатором) і порушеної авторизації на рівні функцій (виклик функції, призначеної для вищої ролі); тут той, хто викликає, має право читати ресурс, а вада — у наборі повернутих полів
- Застосовуйте виправлення: будуйте відповіді з явного списку дозволених публічних полів або проєкції на сервері, ніколи не серіалізуйте збережений запис повністю й виправляйте спільні серіалізатори один раз, щоб закрити кожен маршрут, який ними користується
- Усвідомлюйте, що надмірне розкриття — це не помилка контролю доступу: виправлений ендпоінт і далі відповідає 200, лише повертає менше полів, тож блокування запиту помилково зламало б публічну функцію
- Перевіряйте кожен ендпоінт, що серіалізує модель повністю, особливо списки та стрічки рекомендацій, де один серіалізатор, що розкриває забагато, перетворюється на масовий експорт даних
Надмірне розкриття даних — Кроки навчання
-
Публічна сторінка бігуна
Сьогодні Боб націлився на Trailkin, соціальний застосунок для бігунів, щоб масово збирати персональні дані його учасників. Він зареєструвався як звичайний учасник, з одноразовими даними. Профілі Trailkin задумано публічними: будь-хто може знайти будь-якого бігуна. Боб відкриває сторінку цілі, на якій видно публічну картку бігуна та стрічку інших бігунів поруч.
-
Лише безпечні поля на екрані
Картка профілю навмисно скупа. Це те, що мають бачити всі, і вона не показує нічого, за чим зловмисник міг би знайти цю людину або видати себе за неї.
-
Бігуни поруч
Під карткою та сама сторінка показує стрічку рекомендацій Trailkin: інших учасників, які бігають поруч. Як і профіль, кожна картка тут показує лише публічні дані.
-
Стежте за запитами
Картку й стрічку застосунок побудував із даних, отриманих через API. Боб відкриває мережеві інструменти браузера й один раз перезавантажує сторінку, щоб записати обидва виклики, які застосунок робить для її побудови.
-
Два виклики і все, що приховала картка
Мережеві інструменти записали перезавантаження. Обидва виклики сторінки лежать у списку запитів, і Боб відкриває відповідь на перший із них — виклик профілю.
-
Відкрийте виклик nearby
Один профіль — це одна жертва. Виклик стрічки лежить тут-таки в списку. Боб натискає на нього, щоб прочитати, що повернув запит стрічки бігунів поруч.
-
Масовий витік
Відповідь nearby містить той самий витік, помножений на всю стрічку.
-
Перевірка знань
-
Надходить сповіщення
Ви відповідаєте за сервіс профілів спортсменів Trailkin. Уночі моніторинг виявив обліковий запис одного учасника, який витягує повні записи тисяч користувачів через публічні ендпоінти профілю та стрічки поруч. Служба безпеки надіслала вам подробиці листом.
-
Відкрийте роутер профілів
Відкрийте роутер профілів і подивіться, як він перетворює збережений запис на відповідь.
Охоплення стандартів безпеки
OWASP API Top 10
- API3:2019 Excessive Data Exposure
CWE
- CWE-213 Exposure of Sensitive Information Due to Incompatible Policies
- CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security