Vulnerable permission assignments

Аргумент дает разрешения на чтение/запись/поиск внешним пользователям

Описание

Этот дефект возникает, когда функции, которые могут изменить разрешения ресурса, такие как chmod, umask, creat, или open, задайте разрешения, которые позволяют непреднамеренным актерам изменять или читать ресурс.

Риск

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

  • Программные строения

  • Выполнение программ

  • Конфиденциальные пользовательские данные

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

Установите свои разрешения так, чтобы пользователь (u) имеет больше разрешений, чем группа (g), и поэтому у группы больше разрешений, чем у других пользователей (o), или u >= g >= o.

Примеры

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

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

void bug_dangerouspermissions(const char * log_path) {
    mode_t mode = S_IROTH | S_IXOTH | S_IWOTH;
    int fd = creat(log_path, mode); 

    if (fd) {
        write(fd, "Hello\n", 6);
    }
    close(fd);
    unlink(log_path);
}

В этом примере log_path файл создается с большим количеством прав для других внешних пользователей, чем текущий пользователь. Разрешения следующие ---------rwx.

Коррекция - Изменение разрешений пользователей

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

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

void corrected_dangerouspermissions(const char * log_path) {
    mode_t mode = S_IRUSR | S_IXUSR | S_IWUSR;
    int fd = creat(log_path, mode);

    if (fd) {
        write(fd, "Hello\n", 6);
    }
    close(fd);
    unlink(log_path);
}

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

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