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