exponenta event banner

Незащищенные назначения разрешений

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

Описание

Этот дефект возникает, когда функции, которые могут изменять разрешения на ресурсы, такие как 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++
По умолчанию: Откл.
Синтаксис командной строки: DANGEROUS_PERMISSIONS
Воздействие: среднее
CWE ID: 732, 922
Представлен в R2015b