Перейти к содержанию

Данные из EditText попадают в файл

Класс

| RawUserInputIntoFileIssue

Модуль

| Santaint (Marivanna)

Описание

В приложениях данные пользовательского ввода часто сохраняются куда-либо локально. При этом зачастую эти данные не проходят какую-либо валидацию и санитизацию на наличие опасных значений.

Проблема

Если данные из пользовательского ввода без проверки и ограничений были сохранены в файл, то впоследствии при обработке этих данных может возникнуть уязвимость. Это происходит, так как данные редко отображаются просто "как есть", чаще всего для отображения и работы с данными используются те или иные парсеры, либо данные отображаются в "опасных" компонентах, таких как WebView. В таком случае можно проводить различные атаки в зависимости от характера работы с данными.

Примеры:

  • Вставка внешних зависимостей или команд для парсеров, например, XXE для парсеров XML-формата.
  • Вставка JS-кода в WebView (если включен JS), подмена содержимого страницы (HTML).
  • Подмена или модификация записей в тексте за счет вставки специальных символов (\n, \b, &#x202E;, <, > и т.п).

Рекомендации

  • Четко понимать цель и дальнейшее использование данных, полученных от пользователя.
  • Фильтровать опасные символы и слова, не подходящие по смыслу и типу принимаемой информации.
  • Принимать данные "атомарно" в отдельных полях с валидацией формата данных (даты, времени, номера, адреса, ФИО, почты и т.п.).
  • Запрещать опасные символы в данных произвольного формата.
  • При использовании парсеров изучить их возможности и отключить такие опасные функции, как обработка внешних зависимостей, поддержка команд и т.п.

Ссылки

  1. Android security checklist: WebView

  2. XXE

  3. XSS

  4. Log Injection

  5. Injections

К началу