Используя аргумент библиотеки от внешне управляемого пути
Библиотека, загруженная от внешне управляемого пути, ищет библиотеки, загруженные от фиксированных или управляемых путей. Если непреднамеренные агенты могут управлять одним или несколькими местоположениями на этом фиксированном пути, Средство поиска Ошибки повышает дефект.
Если атакующий знает или управляет путем, который вы используете, чтобы загрузить библиотеку, атакующий может измениться:
Библиотека, что загрузки программы, заменяя намеченную библиотеку и команды.
Среда, в которой библиотека выполняется, давая непреднамеренные полномочия и возможности атакующему.
Когда возможно, используйте трудно закодированные или полностью определенные пути, чтобы загрузить библиотеки. Возможно, что трудно закодированные пути не работают над другими системами. Используйте централизованное местоположение в трудно закодированных путях, так, чтобы можно было легко изменить путь в рамках исходного кода.
Другое решение состоит в том, чтобы использовать функции, которые требуют явных путей. Например, system()
не требует полного пути, потому что он может использовать PATH
переменная окружения. Однако execl()
и execv()
действительно потребуйте полного пути.
Группа: испорченные данные |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки: TAINTED_PATH_LIB |
Удар: носитель |
ID CWE: 114, 426 |
Command executed from externally controlled path
| Execution of externally controlled command
| Find defects (-checkers)
| Use of externally controlled environment variable