7.2 并發程序安全
7.2.1 不同會話間信息泄露
審計指標:代碼應避免不同會話之間發生信息泄露。
審計人員應檢查代碼在應用的不同會話之間是否會發生信息泄露,尤其是在多線程環境下。
7.2.2 發布未完成初始化的對象
審計指標:不宜發布未完成初始化的對象。
審計人員宜檢查代碼在多線程環境中,是否存在對象初始化尚未完成前,就可被其他線程引用的情況。
7.2.3 共享資源的并發安全
審計指標:共享資源宜使用正確的并發處理機制。
審計人員宜檢查代碼中共享資源的使用及并發處理的過程,包括但不限于:
a)宜檢查代碼在多線程環境中對共享數據的訪問是否為同步訪問,如果結果為否定,則提示存在安全風險;
b)宜檢查代碼中線程間的共享對象是否聲明正確的存儲持續期,如果結果為否定,則提示存在安全風險;
c)宜檢查代碼中是否在并發上下文中使用不可重人的函數,如果結果為肯定,則提示存在安全風險;
d)宜檢查代碼中是否避免了檢查時間與使用時間資源沖突;
e)宜檢查代碼中多個線程中等待彼此釋放鎖的可執行片段是否避免了死鎖情況發生,如果結果為否定,則提示存在安全風險;
f)宜檢查代碼對共享資源執行敏感操作時是否檢查加鎖狀態,如果結果為否定,則提示存在安全風險。規范/不規范代碼示例參見B.3.3;
g)宜檢查代碼是否將敏感信息存儲在沒有被鎖定或被錯誤鎖定的內存中(將敏感信息存儲于加鎖不恰當的內存區域,可能會導致該內存通過虛擬內存管理器被寫人到在磁盤上的交換文件中,從而使得數據更容易被外部獲取),如果結果為肯定,則提示存在安全風險;
h)宜檢查代碼中是否存在關鍵資源多重加鎖,如果結果為肯定,則提示存在安全風險;
i)宜檢查代碼中是否存在關鍵資源多重解鎖,如果結果為肯定,則提示存在安全風險;
j)宜檢查代碼中是否存在對未加鎖的資源進行解鎖,如果結果為肯定,則提示存在安全風險;
k)宜檢查代碼中在異常發生時是否釋放已經持有的鎖,如果結果為否定,則提示存在安全風險。
7.2.4 子進程訪問父進程敏感資源
審計指標:在調用子進程之前應關閉敏感文件描述符,避免子進程使用這些描述符來執行未經授權
的 I/O 操作。
審計人員宜檢查代碼是否存在調用子進程之前有未關閉敏感文件描述符的情形。當一個新進程被創建或執行時,子進程繼承任何打開的文件描述符,如不關閉則可能會造成未經授權的訪問。規范/不規范代碼示例參見B.3.4。
7.2.5 釋放線程專有對象
審計指標:應及時釋放線程專有對象。
審計人員應檢查代碼是否及時釋放線程專有對象,防止內存泄漏造成拒絕服務攻擊。
GB/T 39412-2020 信息安全技術 代碼安全審計規范
推薦文章: