<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    8.2 內存管理

    8.2.1 內存分配釋放函數成對調用

    審計指標:應成對調用內存分配和釋放函數。

    審計人員應檢查代碼中分配內存和釋放內存函數是否成對調用, 如malloc/free來分配或釋放資源。當內存分配和釋放函數不成對調用時,可能會引起程序崩潰的風險。

    8.2.2 堆內存釋放

    審計指標:應避免在釋放堆內存前清理不恰當而導致敏感信息暴露。

    審計人員應檢查代碼在釋放堆內存前是否采用合適的方式進行信息清理。

    示例:如C語言中是否使用realloc() 函數調整存儲敏感信息的緩沖區大小, 如存在該操作, 將存在可能暴露敏感信息的風險。realloc() 函數不是從內存中刪除, 而通常是將舊內存塊的內容復制到一個新的、更大的內存塊, 這可能暴露給攻擊者使用“memory dump”或其他方法來進行讀取敏感信息的“堆檢查”攻擊。

    8.2.3 內存未釋放

    審計指標:宜及時釋放動態分配的內存。

    審計人員宜檢查代碼是否有動態分配的內存使用完畢后未釋放導致內存泄漏的情形。內存泄漏可能會導致資源耗盡從而帶來拒絕服務的安全風險。規范/不規范代碼示例參見B.4.2。

    8.2.4 訪問已釋放內存

    審計指標:不應引用或訪問已被釋放后的內存。

    審計人員應檢查代碼是否存在內存被釋放再次被訪問的情況。內存被釋放后再次訪問會出現非預期行為。

    8.2.5 數據/內存布局

    審計指標:不宜依賴數據/內存布局。

    審計人員宜檢查代碼邏輯是否依賴于對協議數據或內存在底層組織形式的無效假設。當平臺或協議版本變動時,數據組織形式可能會發生變化從而帶來非預期行為。

    8.2.6 內存緩沖區邊界操作

    審計指標:應避免內存緩沖區邊界操作發生越界。

    審計人員應檢查代碼在內存緩沖區邊界操作時是否存在越界現象,因內存緩沖區訪問越界可能會輸入數據大小,可能會造成緩沖區溢出漏洞。規范/不規范代碼示例參見B.4.3。

    8.2.7 緩沖區復制造成溢出

    審計指標:應避免未檢查輸人數據大小就進行緩沖區復制。

    審計人員應檢查代碼在進行緩沖區復制時,是否存在未對輸人數據大小進行檢查的現象,因未檢查造成緩沖區溢出。不規范代碼示例參見B.4.4。

    8.2.8 使用錯誤長度訪問緩沖區

    審計指標:應避免使用錯誤的長度值訪問緩沖區。

    審計人員應檢查代碼在訪問緩沖區時使用長度值是否正確,因使用錯誤的長度值來訪問緩沖區可能會造成緩沖區溢出風險。規范/不規范代碼示例參見B.4.5。

    8.2.9 堆空間耗盡

    審計指標:應限制堆空間的消耗,防止堆空間耗盡。

    審計人員應檢查代碼是否有導致堆空間耗盡的情況,具體檢查包括但不限于:

    a)是否存在內存泄漏;

    b)是否存在死循環;

    c)不受限制的反序列化;

    d)創建大量的線程;

    e)解壓一個較大壓縮文件。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类