Анализатор обнаружил, что в приложении файлам задаются свободные права доступа, а именно доступ группе others
.
Уязвимости, связанные с заданием свободных прав доступа к файлам, могут быть отнесены к следующей категории OWASP Top 10 2021:
Группа others
относится ко всем пользователям и группам (кроме владельца ресурса). Установка этой группе прав к ресурсу может привести к возможности несанкционированного доступа.
Рассмотрим пример:
public void example() throws IOException {
Path path = Path.of("/path/to/resource");
Files.setPosixFilePermissions(
path,
PosixFilePermissions.fromString("rwxrwxrwx")
);
}
В этом примере к ресурсу по пути path
получает доступ (чтение, запись и исполнение) не только владелец, но и все остальные пользователи. Это нарушает принцип минимальных привилегий.
О максимальном ограничении доступа к файлам и директориям необходимо серьёзно задумываться, если они содержат конфиденциальную информацию.
Даже если это не критический ресурс, безопасным вариантом является установка прав на файл пользователю и группе, но не others
:
public void example() throws IOException {
Path path = Path.of("/path/to/resource");
Files.setPosixFilePermissions(
path,
PosixFilePermissions.fromString("rwxrwx---")
);
}
Анализатор также сформирует предупреждение на вызов команды chmod
с установкой свободных прав:
public void example() throws IOException {
Runtime.getRuntime().exec("chmod a+rw resource.json");
}
Аргумент a+rw
означает добавление (+) прав чтения и записи (rw) для всех (a). Безопасным же вариантом является, например, следующая команда:
public void example() throws IOException {
Runtime.getRuntime().exec("chmod o-rwx,u+rw resource.json");
}
В этом варианте у группы 'others' удаляются все права, а права на чтение и запись выдаются лишь пользователю.