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

Вывод 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
К началу