2014-09-25 37 views
2

RedHat針對涉及預加載庫的Shellshock漏洞提供瞭解決方法。解決方法源代碼的URL位於bash_ld_preload.cShellshock Bash bug預加載解決方法

但是解決方法的步驟似乎已經失蹤了。這是一個糟糕的解決方案還是無解決方案

的代碼:

#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

好了,_good_解決方案將可能繼續支持導出函數的地方究竟是誰想要/使用人。 – 2014-09-25 21:34:58

+3

這個問題似乎是無關緊要的,因爲它是關於計算機安全的。 http://security.stackexchange.com/會更合適。 – 2014-09-26 05:46:49

回答

2

完全給出的代碼從所述環境中移除所有導出的函數(或者說,使它們的內容的一個空字符串)。

This does有您想要的副作用,使得與導出函數解析和處理相關的漏洞無效。

+0

在代碼中看到字符串終止注入時有一種偷偷摸摸的感覺。但是,儘管如此,系統管理員可能會爭先恐後地獲得修補程序bash,但這仍然是一個臨時解決方案。也許Redhat在恐慌中迅速發佈了它,並稱之爲危險的解決方法,然後纔開始實施。我把它放在幾個系統上,測試顯示沒有不良影響。是的,存在破壞合法性的風險,但系統管理員可以自己權衡風險。 – rvh 2014-09-26 13:41:02

相關問題