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

Хранение sensitive-информации в кэше клавиатуры

Критичность: СРЕДНИЙ
Способ обнаружения: DAST, SENSITIVE INFO

Описание

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

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

За включение или выключение опции автодополнения отвечает параметр autocorrectionType в поле объекта класса UITextField.

Пример кода:

UITextField *textField = [[UITextField alloc] initWithFrame:frame]; 
textField.autocorrectionType = UITextAutocorrectionTypeNo;

Все поля ввода чувствительной информации должны помечаться параметром secureTextEntry

Пример кода:

UITextField *textField = [[UITextField alloc] initWithFrame:frame]; 
textField.secureTextEntry = YES;

Рекомендуется использовать реализацию custom-клавиатуры для ввода все чувствительных данных с отключенным кэшированием всех вводимых данных. Также необходимо позаботиться о запрещении возможности копирования в буфер обмена введенной информации для доступа к нему из других приложений

Пример кода:

- (BOOL)canPerformAction:(SEL)action 
            withSender:(id)sender
{
UIMenuController *menuController = [UIMenuController sharedMenuController]; 
if (menuController) {
    menuController.menuVisible = NO;
}
return NO;
}

Ссылки

  1. https://develoler.apple.com
  2. OWASP Mobile Top 10
  3. owasp-mstg/0x05d-Testing-Data-Storage.md at master · OWASP/owasp-mstg
  4. CWE - CWE-200: Exposure of Sensitive Information to an Unauthorized Actor (4.5)
  5. Custom keyboard
  6. Cache keyboard review
К началу