exponenta event banner

Загрузка библиотеки из относительного пути может управляться внешним субъектом

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

Описание

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

Риск

Используя относительный путь или отсутствие пути для загрузки внешней библиотеки, программа использует небезопасный процесс поиска для поиска библиотеки. Злоумышленник может контролировать процесс поиска и заменить намеченную библиотеку на собственную.

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

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

Примеры

развернуть все

#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++
По умолчанию: Откл.
Синтаксис командной строки: RELATIVE_PATH_LIB
Воздействие: среднее
CWE ID: 114, 427
Представлен в R2015b