1. 程式人生 > >MySQL曝中間人攻擊Riddle漏洞,可致用戶名密碼洩露

MySQL曝中間人攻擊Riddle漏洞,可致用戶名密碼洩露

漏洞

針對MySQL 5.5和5.6版本的Riddle漏洞會經由中間人攻擊洩露使用者名稱密碼資訊。請儘快更新到5.7版本。

Riddle漏洞存在於DBMS Oracle MySQL中,攻擊者可以利用漏洞和中間人身份竊取使用者名稱和密碼。

“Riddle是一個在Oracle MySQL 5.5和5.6客戶端資料庫中發現的高危安全漏洞。允許攻擊者在中間人位置使用Riddle漏洞破壞MySQL客戶端和伺服器之間的SSL配置連線。”漏洞描述寫道。“此漏洞是一個非常危險的漏洞,因為首先它會影響MySQL – 非常流行的SQL資料庫 – 其次會影響SSL連線,根據SSL的定義,它理應是安全的。”

Riddle漏洞的編號為CVE-2017-3305
,當MySQL 5.5和5.6向伺服器傳送資料,包括使用者名稱密碼時,攻擊者可以捕獲它們。

針對5.5.49、5.6.30版本的安全更新並沒有完全修復漏洞。專家注意到,5.7版本之後以及MariaDB系統沒有受到漏洞影響。

安全研究員Pali Rohár稱,導致Riddle漏洞的原因是之前存在於MySQL資料庫中的BACKRONYM漏洞沒有被修復。Backronym漏洞能在中間人攻擊時用來洩露密碼,即使流量經過加密。

針對穩定版本的MySQL 5.5.49和5.6.30的安全更新中添加了在驗證過程完成後對安全引數的驗證。”“由於動作是驗證完成後做出的,因此利用Riddle進行中間攻擊再與SSL降級配合,攻擊者就可以竊取登入資料進行身份驗證並登入到MySQL伺服器,“Rohár寫道。

“有趣的是,當MySQL伺服器拒絕驗證使用者時,MySQL客戶端不會報告任何與SSL相關的錯誤,而是會報告伺服器傳送的未加密的錯誤訊息。而這些錯誤訊息由中間人攻擊者控制的。”

專家建議將客戶端軟體更新為MySQL 5.7或MariaDB,因為這些應用程式的安全更新是能夠正常工作的。

PoC

作者給出了用Perl寫的PoC指令碼。它會在本地3307埠開啟riddle,MySQL伺服器執行在localhost:3306。

在中間人伺服器執行riddle:

$ perl riddle.pl

將MySQL客戶端與riddle連線:

$ mysql –ssl-mode=REQUIRED -h 127.0.0.1 -P 3307 -u user -p password

如果你提供了正確的使用者名稱密碼,riddle就會連線到伺服器,執行SQL語句並輸出:

SELECT COUNT(*) FROM information_schema.TABLES –> 121

MySQL客戶端會收到一條由riddle傳送的錯誤資訊:

ERROR 1045 (28000): Access denied: MITM attack

Oracle修復漏洞不及時

Riddle漏洞在二月份被發現,但是這個漏洞仍然能夠影響到Oracle MySql軟體。

“如果你不是Oracle客戶的話,向他們報告漏洞是沒有用的(即使是與安全相關的漏洞)。他們可以完全忽視任何報告,如果沒人知道的話,他們會很高興,因此不用修復漏洞了,“Rohár解釋說。

“立即公開披露似乎是對使用者最負責的解決方案,這是保護使用者的唯一方法,能立即讓他們知道應該做什麼。”

本文作者:Sphinx

文章來自微信公眾號:資料庫開發