Использование аргумента библиотеки из управляемого извне пути
Этот дефект возникает, когда библиотеки загружаются из фиксированных или управляемых извне небезопасных путей, и непреднамеренные актёры могут управлять одним или несколькими местоположениями в путях. Чтобы считать все входы за пределами периметра анализа тока небезопасными, используйте -consider-analysis-perimeter-as-trust-boundary.
Если атакующий знает или управляет путем, который вы используете для загрузки библиотеки, атакующий может измениться:
Библиотека, которую загружает программа, заменяющая предполагаемую библиотеку и команды.
Окружение, в которой библиотека выполняет, давая злоумышленнику непреднамеренные разрешения и возможности.
По возможности используйте жестко закодированные или полные имена путей для загрузки библиотек. Возможно, жестко закодированные пути не работают в других системах. Используйте централизованное расположение для жестко закодированных путей, чтобы вы могли легко изменять путь в исходном коде.
Другое решение - использовать функции, которые требуют явных путей. Для примера, system() не требует полного пути, потому что может использовать PATH переменная окружения. Однако execl() и execv() требуется полный путь.
| Группа: испорченные данные |
| Язык: C | C++ |
| По умолчанию: Off |
Синтаксис командной строки: TAINTED_PATH_LIB |
| Влияние: Средний |
| ИДЕНТИФИКАТОР CWE: 114, 426 |
-consider-analysis-perimeter-as-trust-boundary | Command executed from externally controlled path | Execution of externally controlled command | Find defects (-checkers) | Use of externally controlled environment variable