﻿# V5318\. OWASP\. Setting POSIX file permissions to 'all' or 'others' groups can lead to unintended access to files or directories\.

Анализатор обнаружил, что в приложении файлам задаются свободные права доступа, а именно доступ группе others\.

Уязвимости, связанные с заданием свободных прав доступа к файлам, могут быть отнесены к следующей категории [OWASP Top 10 2021](https://owasp.org/Top10/):

* [A1: Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
* [A4: Insecure Design](https://owasp.org/Top10/A04_2021-Insecure_Design/)

Группа `others` относится ко всем пользователям и группам \(кроме владельца ресурса\)\. Установка этой группе прав к ресурсу может привести к возможности несанкционированного доступа\. 

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

```cpp
public void example() throws IOException {
    Path path = Path.of("/path/to/resource");
    Files.setPosixFilePermissions(
        path, 
        PosixFilePermissions.fromString("rwxrwxrwx")
    );
}
```

В этом примере к ресурсу по пути `path` получает доступ \(чтение, запись и исполнение\) не только владелец, но и все остальные пользователи\. Это нарушает принцип минимальных привилегий\.

О максимальном ограничении доступа к файлам и директориям необходимо серьёзно задумываться, если они содержат конфиденциальную информацию\.

Даже если это не критический ресурс, безопасным вариантом является установка прав на файл пользователю и группе, но не `others`:

```cpp
public void example() throws IOException {
    Path path = Path.of("/path/to/resource");
    Files.setPosixFilePermissions(
        path, 
        PosixFilePermissions.fromString("rwxrwx---")
    );
}
```

Анализатор также сформирует предупреждение на вызов команды `chmod` с установкой свободных прав:

```cpp
public void example() throws IOException {
    Runtime.getRuntime().exec("chmod a+rw resource.json");
}
```

Аргумент `a+rw` означает добавление \(\+\) прав чтения и записи \(rw\) для всех \(a\)\. Безопасным же вариантом является, например, следующая команда:

```cpp
public void example() throws IOException {
    Runtime.getRuntime().exec("chmod o-rwx,u+rw resource.json");
}
```

В этом варианте у группы 'others' удаляются все права, а права на чтение и запись выдаются лишь пользователю\.