Как решить проблему контроля процессов, о которой сообщает Fortify
Я работаю над следующей проблемой управления процессом, о которой сообщает fortify, которая описана в https://vulncat.fortify.com/en/detail?id=desc.dataflow.abap.process_control#C%2FC%2B%2B .
Функция load() в filename.c вызывает dlopen() в строке 3. Вызов загружает библиотеку без указания абсолютного пути. Это может привести к тому, что программа будет использовать вредоносную библиотеку, предоставленную злоумышленником.
У меня есть функция ниже, которая вызывается в разных местах кода.
void* load(char* name)
{
void* handle;
handle = dlopen(name, RTLD_LAZY | RTLD_GLOBAL);
return(handle);
}
void somefunc()
{
void *login_module_handle = load("/home/myuser/load_this_shared_lib.so");
}
Здесь я уже использую абсолютный путь, но не понимаю, почему Fortify все еще сообщает об ошибке.
Возможные рекомендации от Fortify показаны ниже.
- По возможности библиотеки должны управляться приложением и выполняться с использованием абсолютного пути.
- В случаях, когда путь неизвестен во время компиляции, например, для кросс-платформенных приложений, абсолютный путь должен быть создан из известных значений во время выполнения.
Любое предложение будет полезно.