# V1118. Excessive file permissions can lead to vulnerabilities. Consider restricting file permissions.

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

Анализатор просматривает следующие системные вызовы на наличие избыточных прав доступа: `open`, `creat`, `openat`, `chmod`, `fchmod`, `fchmodat`, `mkdir`, `mkdirat`, `mkfifo`, `mkfifoat`, `mknod`, `mknodat`, `mq_open`, `sem_open`.

Рассмотрим пример:

    void foo(int param)
    {
      int parms = 0777;
      int fd = open("/path/to/file", O_CREAT | O_RDONLY, parms);
      if (fd < 0) return;

      // some work

      close(fd);
    }

В коде происходит вызов системного вызова `open` для открытия файла и последующей работы с информацией оттуда. Если файл не существует, он будет создан (флаг `O_CREAT` во втором аргументе) с правами доступа, переданными числом в качестве третьего аргумента. В данном случае маска `0777` позволяет любому произвольному пользователю читать, писать или исполнять этот файл, что может привести к уязвимости.

Исправить ошибку можно, изменив маску доступа:

    void foo(int param)
    {
      int parms = 0644;
      int fd = open("/path/to/file", O_CREAT | O_RDONLY, parms);
      if (fd < 0) return;

      // some work

      close(fd);
    }

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.).

Данная диагностика классифицируется как:

CWE-269