Sensitive data printed out

Функция печатает конфиденциальные данные

Описание

Этот дефект возникает, когда функции печати, такие как stdout или stderr печать конфиденциальной информации.

Чекер рассматривает следующую конфиденциальную информацию:

  • Возвращает значения функций манипуляции паролем, таких как getpw, getpwnam или getpwuid.

  • Входные значения функций, таких как Windows®-специфическая функция LogonUser.

Риск

Печать конфиденциальной информации, такой как пароли или пользовательская информация, позволяет злоумышленнику получить дополнительный доступ к информации.

Зафиксировать

Одно из исправлений этого дефекта - не распечатывать конфиденциальную информацию.

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

Примеры

расширить все

#include <sys/types.h>
#include <pwd.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

extern void verify_null(const char* buf);
void bug_sensitivedataprint(const char * my_user) {
    struct passwd* result, pwd;
    long bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);
    char buf[1024] = "";
    getpwnam_r(my_user, &pwd, buf, bufsize, &result);
    puts("Name\n");
    puts(pwd.pw_name);
    puts("PassWord\n");
    puts(pwd.pw_passwd);
    memset(buf, 0, sizeof(buf));
    verify_null(buf);
}

В этом примере Bug Finder флаги puts для печати пароля pwd.pw_passwd.

Коррекция - Запутать пароль

Одной из возможных коррекций является запутывание информации о пароле, чтобы информация не была видна.

#include <sys/types.h>
#include <pwd.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

extern void verify_null(const char* buf);

void sensitivedataprint(const char * my_user) {
    struct passwd* result, pwd;
    long bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);
    char buf[1024] = "";
    getpwnam_r(my_user, &pwd, buf, bufsize, &result);
    puts("Name\n");
    puts(pwd.pw_name);
    puts("PassWord\n");
    puts("XXXXXXXX\n"); 
    memset(buf, 0, sizeof(buf));
    verify_null(buf);
}

Информация о результатах

Группа: Безопасность
Язык: C | C++
По умолчанию: Off
Синтаксис командной строки: SENSITIVE_DATA_PRINT
Влияние: Средний
ИДЕНТИФИКАТОР CWE: 532, 534, 535
Введенный в R2015b