Load of library from a relative path can be controlled by an external actor

Библиотека, загруженная относительным путем, уязвима для вредоносных атак

Описание

Этот дефект возникает при загрузке библиотечных стандартных программ, которые загружают внешнюю библиотеку, по относительному пути или вообще не используют путь.

Риск

При помощи относительного пути или без пути для загрузки внешней библиотеки ваша программа использует небезопасный процесс поиска для поиска библиотеки. Атакующий может управлять процессом поиска и заменить предполагаемую библиотеку на собственную.

Зафиксировать

При загрузке внешней библиотеки задайте полный путь.

Примеры

расширить все

#include <dlfcn.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <stdio.h>

void relative_path()
{
    dlopen("liberty.dll",RTLD_LAZY);
}

В этом примере dlopen открывает liberty библиотеку, вызывая только имя библиотеки. Однако этот вызов библиотеки использует относительный путь для поиска библиотеки, что небезопасно.

Коррекция - используйте полный путь к библиотеке

Одна из возможных коррекций - использовать полный путь к библиотеке, когда вы загружаете ее в свою программу.

#include <dlfcn.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <stdio.h>

void relative_path()
{
    dlopen("/home/my_libs/library/liberty.dll",RTLD_LAZY);
}

Информация о результатах

Группа: Безопасность
Язык: C | C++
По умолчанию: Off
Синтаксис командной строки: RELATIVE_PATH_LIB
Влияние: Средний
ИДЕНТИФИКАТОР CWE: 114, 427
Введенный в R2015b