Odin壓縮組件因缺乏邊界檢查允許越界寫入導致內存破壞
攻擊者可通過構造惡意的壓縮數據流(如截斷的DEFLATE流或特定模式的零字節流),觸發zlib.inflate或gzip.load函數在內部緩衝區擴容至COMPRESS_OUTPUT_ALLOCATE_MAX上限後繼續執行寫入操作,由於grow_buffer函數在達到上限時未返回錯誤且write_byte等底層寫入過程缺失後續長度校驗並禁用了邊界檢查,導致數據被寫入堆內存塊之外,造成堆緩衝區溢出,進而引發拒絕服務、任意代碼執行或敏感信息泄露。
組件
Odin是一種系統級編程語言及其標準庫集合,其core/compress模塊旨在為應用程序提供高效的流式與緩衝式數據壓縮解壓功能,該組件通過動態內存管理機制處理可變長度的輸入輸出數據流,核心設計目標是實現高性能的Zlib及Gzip協議兼容處理,並在資源受限環境中保持低開銷的數據轉換能力。
類型
Out-of-bounds Write (CWE-787)
倉庫
處置建議
- 修復此類漏洞需在緩衝區擴容邏輯中增加嚴格的上限校驗,確保噹噹前長度達到預設最大值時立即返回錯誤而非靜默失敗;同時在所有底層寫入操作前重新驗證剩餘空間是否充足,若空間不足則終止處理並上報錯誤;此外應移除關鍵的#no_bounds_check編譯指令以啓用默認運行時安全檢查。
php-src pdo_pgsql驅動因預準備語句列數變化引發越界讀取導致服務崩潰
當啓用PDO::ATTR_EMULATE_PREPARES模式時,若預準備語句在第二次執行返回的列數多於首次執行,內部數組S->cols和stmt->columns仍保持初始大小分配,導致索引越界讀取。攻擊者可通過併發執行ALTER TABLE添加列或切換視圖改變結果集結構,觸發zend_symtable_update使用懸空指針,造成堆緩衝區溢出,進而引發進程崩潰或潛在的信息泄露,嚴重影響系統可用性。
組件
php-src是PHP語言的源代碼倉庫,其pdo_pgsql擴展作為核心數據訪問組件,負責實現PHP應用程序與PostgreSQL數據庫之間的標準化連接與交互。該模塊採用面向對象架構設計,旨在提供高效的預處理語句執行、參數綁定及結果集解析功能,確保在複雜業務邏輯中能夠安全、穩定地處理大規模併發數據庫查詢請求,是企業級Web應用後端數據持久層的關鍵依賴。
類型
Out-of-bounds Read (CWE-125)
倉庫
處置建議
- 建議禁用模擬預處理模式以利用原生驅動保護,或在代碼層面嚴格校驗動態變化的結果集元數據,確保每次執行前重新分配並驗證列描述數組的大小與內存邊界。