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);
}
Данная диагностика классифицируется как: