Данные из EditText попадают в файл
Класс
| RawUserInputIntoFileIssue
Модуль
| Santaint (Marivanna)
Описание
В приложениях данные пользовательского ввода часто сохраняются куда-либо локально. При этом зачастую эти данные не проходят какую-либо валидацию и санитизацию на наличие опасных значений.
Проблема
Если данные из пользовательского ввода без проверки и ограничений были сохранены в файл, то впоследствии при обработке этих данных может возникнуть уязвимость. Это происходит, так как данные редко отображаются просто "как есть", чаще всего для отображения и работы с данными используются те или иные парсеры, либо данные отображаются в "опасных" компонентах, таких как WebView. В таком случае можно проводить различные атаки в зависимости от характера работы с данными.
Примеры:
- Вставка внешних зависимостей или команд для парсеров, например, XXE для парсеров XML-формата.
- Вставка JS-кода в WebView (если включен JS), подмена содержимого страницы (HTML).
- Подмена или модификация записей в тексте за счет вставки специальных символов (
\n
,\b
,‮
,<
,>
и т.п).
Рекомендации
- Четко понимать цель и дальнейшее использование данных, полученных от пользователя.
- Фильтровать опасные символы и слова, не подходящие по смыслу и типу принимаемой информации.
- Принимать данные "атомарно" в отдельных полях с валидацией формата данных (даты, времени, номера, адреса, ФИО, почты и т.п.).
- Запрещать опасные символы в данных произвольного формата.
- При использовании парсеров изучить их возможности и отключить такие опасные функции, как обработка внешних зависимостей, поддержка команд и т.п.