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

Вывод sensitive-информации в системный лог

Критичность: ВЫСОКИЙ
Способ обнаружения: DAST, SENSITIVE INFO

Описание

iOS предоставляет приложениям возможность выводить информацию в системный журнал. Приложения могут отправлять информацию в журнал, используя следующие средства:

  • NSLog макрос.
  • printf семейство функции.
  • NSAssert семейство функции.
  • Макросы.

В процессе разработки приложения в финальную версию могут попасть участки кода с логированием чувствительной информации (пароли, личные данные, ключи шифрования).

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

Изменение поведения макросов логирования в зависимости от типа сборки приложения

Пример кода:

#ifdef DEBUG
#   define NSLog (...) NSLog(__VA_ARGS__)
#else
#   define NSLog (...)
#endif

Применение фреймоврка OSLogPrivacy для разграничения вывода в зависимости от чувствительности данных

Пример кода:

@frozen struct OSLogPrivacy
... 
Logger().info("User bank account number: \(accountNumber, privacy: .private)")

Ссылки

  1. Poor Logging Practice | OWASP
  2. CWE-215: Insertion of Sensitive Information Into Debugging Code
  3. OSLogPrivacy
К началу