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 как критические и относятся к типу: Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.).

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