Использование аргумента библиотеки из управляемого извне пути
Этот дефект возникает, когда библиотеки загружаются из фиксированных или управляемых извне небезопасных путей, и непреднамеренные актёры могут управлять одним или несколькими местоположениями в путях. Чтобы считать все входы за пределами периметра анализа тока небезопасными, используйте -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