7.3 函數調用安全
7.3.1 格式化字符串
審計指標:應避免外部控制的格式化字符串。
審計人員應檢查代碼中是否存在函數接受格式化字符串作為參數的情況,格式化字符串是否來自外部,如果是,則可能引起注人類安全風險。規范/不規范代碼示例參見B.3.5。
7.3.2 對方法或函數參數驗證
審計指標:宜對方法或函數的參數進行驗證。
審計人員宜檢查代碼是否存在對方法或函數的參數進行合法性或安全性校驗。規范/不規范代碼示例參見B.3.6。
7.3.3 參數指定錯誤
審計指標:函數功能調用宜正確指定參數。
審計人員宜檢查函數/方法調用時參數指定是否正確,是否存在如下情況:
a)不正確數量的參數;
b)參數順序不正確;
c)參數類型不正確;
d)錯誤的值。
以上檢查項的任一結果為肯定,則提示存在安全風險。
7.3.4 返回棧變量地址
審計指標:不宜返回棧變量地址。
審計人員宜檢查代碼中是否存在在函數中返回棧變量地址的情形。因棧變量在函數調用結束后就會被釋放,再使用該變量地址時可能會出現意想不到的結果。不規范代碼示例參見B.3.7。
7.3.5 實現不一致函數
審計指標:不宜使用具有不一致性實現的函數或方法。
審計人員宜檢查代碼是否存在使用了在不同版本具有不一致實現的函數或方法。因使用在不同操作系統或不同版本實現不一致的函數或方法,可能導致代碼被移植到不同環境時改變行為。
7.3.6 暴露危險的方法或函數
審計指標:不應暴露危險的方法或函數。
審計人員應檢查代碼中的API或其他與外部交互的接口是否暴露了危險方法或函數, 暴露危險的方法或函數可能會帶來非授權訪問攻擊。危險方法或函數暴露的形式主要包括方法/函數原本設計為非外部用戶使用、原本設計為部分用戶訪問等。代碼的不規范/規范用法示例參見B.3.8。
GB/T 39412-2020 信息安全技術 代碼安全審計規范
推薦文章: