曲速未來:SASL漏洞簡單驗證和安全層
簡單認證和安全層(SASL)是網路協議中使用的認證層。SASL並不是一種協議,只是提供給應用和共享庫的開發者一種認證、資料完整性校驗和加密的機制的框架。
在該框架和一些外掛中,有很多需要注意的漏洞。雖然已經發布了一些補丁,但不是所有使用者都應用了這些補丁。
為什麼要了解SASL?
很多伺服器管理員都回發現這樣的錯誤訊息提示:
即“SASL登陸認證失敗:認證失敗。”
根據使用的特定軟體和外掛,錯誤訊息中一般都含有失敗的具體細節。如果接收到這類資訊並不需要預警,但如果重複接收到來自系統IP地址的訊息,那就需要去做調查了。很有可能有攻擊者正嘗試訪問你的伺服器並計劃將他用作垃圾箱。可能有攻擊者想用你的伺服器和資源來發送垃圾郵件。
應對暴力破解攻擊的措施
SASL攻擊可以轉變成一種暴力破解攻擊,比如可以使用自動化的指令碼或殭屍主機來登陸伺服器上已有的郵件賬戶,嘗試通過不同的憑證組合找出有效的使用者名稱和密碼對。應對的措施有:
· 選擇讓伺服器監聽不同的埠,這樣變成新攻擊的目標的可能性會變小;
· 如果SASL訊息一直來自相同的IP地址,通過防火牆攔截該IP地址;
· 如果攻擊來自不同的IP地址,可以使用機器學習的軟體解決方案來自動化攔截新的攻擊。
SASL框架
SASL是一個增加了認證支援的應用協議框架,支援的協議有SMTP\IMAP等。SASL回檢查使用者是否有合適的許可權來使用伺服器,同時提供資料完整性校驗和加密。
為了更好的理解框架的工作原理和漏洞,下面看一下伺服器和客戶端之間的資訊流。
下面是基本的SASL架構:
客戶端和伺服器應用會通過SASL API呼叫SASL library或libsasl的本地副本。然後,libsasl會通過SASL服務提供商介面(SPI)與SASL機制進行通訊。
安全機制
安全機制外掛為 libsasl 提供安全服務。以下是安全機制提供的一些典型功能:
-
在客戶端進行驗證
-
在伺服器端進行驗證
-
完整性,即檢查傳輸的資料是否保持不變
-
保密性,即對傳輸的資料進行加密和解密
SASL週期中的步驟
客戶端動作在左側,伺服器動作在右側。箭頭是客戶端和伺服器通過外部連線進行的互動。
SASL 會話初始化
SASL 驗證
SASL 驗證:傳送客戶機資料
SASL 驗證:處理伺服器資料
漏洞
Memcached是一個高效能的分散式記憶體物件快取系統,用於動態Web應用以減輕資料庫負載。它通過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。
2016年,Cisco Taols安全研究人員發現了三個遠端程式碼執行漏洞。漏洞影響memcached保持和提取資料的二進位制協議,其中一個就是SASL應用。雖然官方已經發布了漏洞補丁,但使用者進行安全更新的速度並不理想。
Dovecot伺服器漏洞
Dovecot伺服器的SASL認證元件中發現一個DoS漏洞。當有漏洞的軟體處理偽造的使用者名稱進行SASL認證時,因為有效性驗證錯誤會出現系統奔潰。有漏洞的版本包含2.2.25到2.2.26.1,這些有漏洞的版本目前還在使用中。
Dovecot 2.0 的2.2.33到2.3.0版本還存在另一個漏洞。SASL認證中止會導致登陸過程所使用的Dovecot認證客戶端產生記憶體洩露。洩露會對高效能配置產生影響,因為高效能配置也使用了登陸過程,最終會由於記憶體耗盡導致程序奔潰。
其他漏洞
Apache Qpid Broker和Qpid客戶端都使用全功能的認證框架——Cyrus SASL,該框架提供更多的配置選項。Apache Qpid Broker-J的入AMQP連線認證是通過Authentication Providers完成的。每個Authentication Provider支援多種SASL機制,以SASL協商過程的一部分提供給連線客戶端。
研究人員在Apache Qpid Broker-J 7.0.0中AMQP協議的0-8, 0-9, 0-91, 0-10的連線認證中發現一個DoS漏洞。非認證的攻擊者利用該漏洞可以使Broker例項奔潰。
更新軟體
上面提到的許多漏洞目前仍然活躍。事實上,老的漏洞比新出現的漏洞更多,但許多漏洞並沒有打補丁。因此,建議確保執行的軟體是最新的版本。尤其是使用聯網服務的伺服器,更新軟體對確保資源的安全來說至關重要。SASL是一個重要的認證機制,許多郵件伺服器就使用了這種認證機制。
文章宣告:本文為火星財經專欄作者作品,版權歸作者所有。文章為作者本人觀點,不代表火星財經立場。