Обходной путь предварительной загрузки ошибки Shellshock Bash
У RedHat был обходной путь для уязвимости Shellshock, которая включает в себя библиотеку предварительной загрузки. URL-адрес исходного кода обходного пути доступен по адресу bash_ld_preload.c.
Но обходные пути теперь, похоже, пропали без вести. Это было плохое решение или нет?
Код:
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
static void __attribute__ ((constructor)) strip_env(void);
extern char **environ;
static void strip_env()
{
char *p,*c;
int i = 0;
for (p = environ[i]; p!=NULL;i++ ) {
c = strstr(p,"=() {");
if (c != NULL) {
*(c+2) = '\0';
}
p = environ[i];
}
}
1 ответ
Решение
Данный код полностью удаляет все экспортируемые функции из среды (или, скорее, делает их содержимое пустой строкой).
Это действительно имеет побочный эффект, который вы хотите, сделать уязвимости, связанные с анализом и обработкой экспортируемых функций, спорными.