成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

AFL實戰:測試sudo提權漏洞CVE-2021-3156

安全 漏洞
最近sudo發現了一個嚴重的緩存溢出提權漏洞CVE-2021-3156,這很正常。不正常的是這個漏洞已經潛伏了10年之久,為什么10年才發現呢?如果用常規的測試方法需要多久才能發現?對此有人進行了Fuzz測試,請和蟲蟲一起學習一下過程。

最近sudo發現了一個嚴重的緩存溢出提權漏洞CVE-2021-3156,這很正常。不正常的是這個漏洞已經潛伏了10年之久,為什么10年才發現呢?如果用常規的測試方法需要多久才能發現?對此有人進行了Fuzz測試,請和蟲蟲一起學習一下過程。

概述

在本文試驗中,使用了AFL模糊器。AFL模糊器(American Fuzzy lop)是一種面向安全的模糊器,AFL使用新型編譯時檢測和遺傳算法,自動發現干凈有趣的測試用例,這些用例會在目標二進制文件中觸發新的內部狀態。用這樣的方法可以大大改善了模糊代碼的功能覆蓋范圍。

AFL模糊器生成的緊湊的合成語料庫還可以用于復現其他測試人員更耗費人力或資源的測試方案。

測試準備

sudo是setuid二進制文件,以root用戶隨機輸入運行潛在錯誤的二進制文件不是最安全的方法。為了避免任何潛在的意外系統損壞,此設置試驗中使用了虛擬機環境。并選擇最近一個涉及漏洞sudo版本sudo 1.9.5.p1。

AFL旨在將輸出生成到文件或stdout中,但是要模糊命令行參數。因此,需要自行修補sudo,忽略實際的argv并將其改為從stdin。

AFL提供了一個可以提供這樣功能的argv-fuzz-inl.h:

示例argv-fuzz-inl.h從stdin讀取NUL分隔的參數。注意,sudo在單個二進制文件中同時提供了sudo和sudoedit實用程序,因此要測試兩者,還需要向fuzzer公開argv[0]。輸入的代碼argv-fuzz-inl.h不會執行此操作,因此需要對其進行修復:

  1. int rc = 0; /* start at argv[0] */ 

sudo本身補丁很簡單,只需在main的開頭連接AFL_INIT_ARGV即可:

  1. --- a/src/sudo.c 
  2. +++ b/src/sudo.c 
  3. @@ -66,6 +66,8 @@ 
  4. #include "sudo_plugin.h" 
  5. #include "sudo_plugin_int.h" 
  6.  
  7. +#include "argv-fuzz-inl.h" 
  8. /* 
  9. * Local variables 
  10. */ 
  11. @@ -149,6 +151,7 @@ sudo_dso_public int main(int argc, char *argv[], char *envp[]); 
  12. int 
  13. main(int argc, char *argv[], char *envp[]) 
  14. +AFL_INIT_ARGV(); 
  15. int nargc, status = 0
  16. char **nargv, **env_add, **user_info; 

快速測試表明sudo/sudoedit選擇無法從stdin中傳遞的測試用例正常工作,因為出于某種原因,它使用了__progname。一個快速解決方法:

  1. --- a/lib/util/progname.c 
  2. +++ b/lib/util/progname.c 
  3. @@ -83,7 +83,7 @@ void 
  4. initprogname2(const char *name, const char * const * allowed) 
  5. int i; 
  6. -# ifdef HAVE___PROGNAME 
  7. +# if 0 
  8. extern const char *__progname; 
  9.  
  10. if (__progname != NULL && *__progname != '\0') 

最后,設置無需等待密碼輸入,因此只需使其無條件失敗即可:

  1. --- a/plugins/sudoers/auth/sudo_auth.c 
  2. +++ b/plugins/sudoers/auth/sudo_auth.c 
  3. @@ -259,7 +259,7 @@ verify_user(struct passwd *pw, char *prompt, int validated, 
  4. "--disable-authentication configure option.")); 
  5. debug_return_int(-1); 
  6. +return 0; 
  7. /* Enable suspend during password entry. */ 
  8. sigemptyset(&sa.sa_mask); 
  9. sa.sa_flags = SA_RESTART

由于某種原因afl-gcc工具無法正常工作,因此使用了基于LLVM的工具。需要重寫CC為./configure:

  1. CC=AFL-clang-fast ./configure 

測試中使用了兩個簡單的測試用例,調用了兩個可用的實用程序:

  1. echo -ne 'sudo\0ls\0\0' > case1 
  2. echo -ne 'sudoedit\0test\0\0' > case2 

準備就緒后,以并行模式啟動了四個AFL實例。半小時后,出現了一個crash:

結果:

確實在sudoedit -s是崩潰了。假設并行運行了4個實例,大約2小時的CPU時間。通過2小時的CPU時間測試,就可以在setuid中找到嚴重的安全漏洞。

總結

為什么在十年中,才能發現這樣的嚴重問題,其他重要的基礎系統是否是不是也存在類似類似的潛伏漏洞。不知道之前有沒有人對sudo做過模糊測試?或者社區大意了,只測試過sudo,而遺漏了不太引人注意的sudoedit了。

但是無論如何,需要指出的是,使用快速使用模糊測試程序可以發現廣泛使用的實用程序中仍然存在嚴重的錯誤。

 

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2021-02-27 09:25:37

漏洞網絡安全網絡攻擊

2013-11-29 15:34:00

2021-05-01 20:52:30

漏洞網絡安全網絡攻擊

2023-06-11 17:24:26

2015-03-13 10:06:55

2020-11-16 10:55:41

Windows

2022-03-10 09:41:15

漏洞Linux內核

2020-10-06 13:58:25

漏洞

2010-12-10 15:23:49

Linux漏洞

2021-05-27 05:34:47

漏洞網絡安全網絡攻擊

2016-05-17 09:42:16

2021-03-16 10:52:56

Chrome瀏覽器漏洞

2021-01-31 10:31:29

Windows10操作系統RCE漏洞

2023-10-09 18:22:35

2021-10-29 11:52:16

谷歌漏洞TPM

2021-10-06 13:54:12

漏洞PoC攻擊

2009-04-24 14:08:25

2009-04-24 14:34:51

2013-08-06 17:27:56

2017-04-17 20:08:19

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜合集 | 性高朝久久久久久久3小时 av一区二区三区四区 | 在线观看国产wwwa级羞羞视频 | 亚洲欧美日韩激情 | 久久精品国产一区 | 亚洲另类视频 | 国产在线一区二区三区 | 亚洲一区精品在线 | 国产美女一区二区 | 五月天天丁香婷婷在线中 | 在线中文字幕视频 | 欧美日韩在线综合 | 国产一级片91 | 久久国产高清视频 | 麻豆av免费观看 | 综合久久网 | 一级免费毛片 | 精品国产一区二区三区久久 | 99精品久久| 自拍视频国产 | 一区免费观看 | 91精品国产高清久久久久久久久 | 欧美精品久久久久 | 欧美多人在线 | 国产精品久久欧美久久一区 | 69电影网| 国产一区二区三区亚洲 | 欧美日韩黄色一级片 | 婷婷综合五月天 | www.日韩系列 | 成人免费视频久久 | 亚洲精品视频播放 | 精品视频一区二区三区 | 国产美女在线观看 | 亚洲一区亚洲二区 | 成人深夜福利 | 亚洲国产精品99久久久久久久久 | 日韩在线视频一区二区三区 | 欧美一区二区三区 | 99久久精品免费看国产四区 | 二区中文 |