檢查點提出了一種安全鏈接安全技術

檢查點 (IT安全解決方案的全球提供商) 前幾天發布的介紹 安全機制 “安全鏈接”,難以創建漏洞利用 在進行malloc調用時操縱定義或更改指向已分配緩衝區的指針。

新的“安全鏈接”機制 不能完全阻止利用漏洞的可能性,但是 開銷最小 某些類別的漏洞利用程序的創建變得複雜由於除了被利用的緩衝區溢出之外,還必須找到另一個漏洞,該漏洞導致有關堆在內存中的位置的信息。

為Glibc(ptmalloc),uClibc-NG(dlmalloc),gperftools(tcmalloc)和Google TCMalloc準備了安全鏈接實施補丁,並提出了保護Chromium的保護措施的提案(自2012年以來,Chromium已與該解決方案集成在一起)同樣的問題)MaskPtr保護技術,但Checkpoint的解決方案顯示出更好的性能)。

擬議的修補程序已經在Glibc 3.32的八月份發行版中得到批准,可以使用,默認情況下將啟用安全鏈接。 在uClibc-NG中,安全鏈接支持包含在1.0.33版中,並且默認情況下處於啟用狀態。 在gperftools(舊的tcmalloc)中,接受更改,但在將來的版本中將作為選項提供。

TCMalloc開發人員拒絕接受更改,c取得了出色的性能成功,並且需要添加高級測試以定期驗證一切是否正常運行。

進行的測試 檢查點工程師表明,安全鏈接方法不會導致額外的內存消耗 並且平均執行堆操作時的性能僅降低0.02%,最壞的情況下降低1.5%

啟用安全鏈接會在每次調用free()時執行2-3條附加的彙編程序指令,而在調用malloc()時會執行3-4條指令。 不需要初始化開始和隨機值生成。

安全鏈接不僅可以用來提高安全性 各種堆實現也要向任何數據結構添加完整性檢查 它使用位於緩衝區旁邊的單獨鏈接的指針的列表。

方法 它非常容易實現,只需要添加一個宏 並將其應用於指向代碼的下一個塊的指針(例如,對於Glibc,在代碼中僅更改了幾行)。

該方法的本質是應用來自ASLR地址隨機化機制(mmap_base)的隨機數據來保護單獨鏈接的列表,例如快速綁定和TCache。 在將指針值應用於列表中的下一個項目之前,將沿著內存頁面的邊緣執行掩碼轉換和對齊檢查。 將指針替換為操作“(L >> PAGE_SHIFT)XOR(P)”的結果,其中P是指針的值,L是該指針在內存中的存儲位置。

在ASLR(地址空間佈局隨機化)系統中使用時,具有堆基地址的L位中的某些L位包含用作編碼P的密鑰的隨機值(它們是通過12位的移位操作提取的) 4096字節的頁面)。

這樣的操縱 降低了在漏洞利用中捕獲指針的風險, 由於指針不是以其原始形式存儲的,因此要替換它,您需要了解有關堆位置的信息。

該方法可有效防止使用部分指針重新定義的攻擊 (低字節移位), 完全重寫指針 (重定向到攻擊者的代碼),並在不對齊的方向上更改列表的位置。

例如,表明在malloc中使用安全鏈接將阻止利用同一位研究人員最近在飛利浦Hue Bridge智能背光中發現的漏洞CVE-2020-6007,該漏洞是由緩衝區溢出引起的,並允許控制設備。

來源: https://research.checkpoint.com


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。