Использование аргумента библиотеки из пути, управляемого извне
Этот дефект возникает, когда библиотеки загружаются из фиксированных или управляемых извне небезопасных путей, и непреднамеренные участники могут управлять одним или несколькими расположениями на путях. Чтобы считать все входные данные вне текущего периметра анализа небезопасными, используйте -consider-analysis-perimeter-as-trust-boundary.
Если злоумышленник знает или управляет путем, используемым для загрузки библиотеки, он может изменить:
Библиотека, загружаемая программой, заменяющая требуемую библиотеку и команды.
Среда, в которой выполняется библиотека, предоставляющая злоумышленнику непреднамеренные разрешения и возможности.
По возможности используйте жестко закодированные или полные имена путей для загрузки библиотек. Возможно, что жестко закодированные пути не работают в других системах. Используйте централизованное расположение для жестко закодированных путей, чтобы можно было легко изменить путь в исходном коде.
Другим решением является использование функций, требующих явных путей. Например, system() не требует полного пути, поскольку он может использовать PATH переменная среды. Однако execl() и execv() требуется полный путь.
| Группа: Запятнанные данные |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: TAINTED_PATH_LIB |
| Воздействие: среднее |
| CWE ID: 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