exponenta event banner

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