Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V5310. OWASP. Possible command...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V5310. OWASP. Possible command injection. Potentially tainted data is used to create OS command.

04 Фев 2025

Анализатор обнаружил, что команда уровня операционной системы создаётся из непроверенных данных, которые были получены из внешнего источника. Это может стать причиной возникновения уязвимости command injection.

В классификации OWASP Top 10 данная уязвимость относится к категории A3:2021-Injection в списке 2021 года.

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

public void doUsersCommand() throws IOException {
    Scanner sc = new Scanner(System.in);
    String command = sc.nextLine();
    Runtime.getRuntime().exec(command); 
}

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

Один из вариантов, как можно обезопаситься от данной уязвимости, это не использовать команды уровня ОС. Для большинства задач в Java существует соответствующий API.

Если всё же принято решение использовать команды уровня ОС, то один из вариантов защиты от command injection — создать перечень допустимых команд и проверять, находится ли пришедшая извне команда в нём.

Исправленный пример:

private final List<String> 
        acceptableCommands = List.of(
                "dir", 
                "dir *.txt", 
                "dir *.logs"
);

public void doUsersCommand() throws IOException {
    Scanner sc = new Scanner(System.in);
    String command = sc.nextLine();
    if (acceptableCommands.contains(command)) {
        Runtime.getRuntime().exec(command);
    }
}

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки непроверенного использования чувствительных данных (ввода пользователя, файлов, сети и пр.).

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