【Parasoft C/C++ Test】沒有理由忽略CERT C++標準
安全性正在成為軟件開發團隊的新口號,特別是那些負責安全或關鍵型軟件任務的人員。在過去,安全性通常是團隊在開發周期的最后階段添加到系統的特征,但現在安全性是一個由多種研究計劃和標準支持的工程學科。
如果您希望系統在設計上是安全的,則需要從開發過程的最初階段開始,確保所創建的代碼的每一行都遵循安全最佳實踐。對于使用C++開發的團隊來說,最好的選擇之一是SEI CERT C++標準。
Parasoft C/C++ Test是一款優秀的并且全面支持該標準的工具,是C/C++代碼完整的安全測試和合規性解決方案。本文旨在向大家介紹CERT C++的重點內容,以及了解Parasoft C/C++ Test對C++開發團隊的重要作用。

CERT C++大量的編碼指南
SEI CERT C++標準引入了一系列規則來強制執行安全編碼實踐并消除易受攻擊的代碼構造。該標準由11章組成,包含特定主題領域的規則。與CERT C不同,CERT C++編碼標準只有規則,沒有建議(它們有待進一步審查和開發)。
SEI CERT C++依賴于CERT C標準,并包含適用于C++的CERT C規則子集。目前為止有98個CERT C++規則和80個繼承自CERT C的規則。標準概述如下表所示:

從版本10.4.1開始,Parasoft C/C++ Test完全支持CERT C++規則。使用C/C++的團隊可以從CERT C和C++的專用合規報告中受益,從而構建可持續的合規流程。通過報告擴展,用戶可以動態查看合規性流程,并根據CERT風險評估框架審查優先級的違規行為。
CERT根據以下三個因素對每個違規行為進行歸類:
- 嚴重程度
- 發生的可能性
- 補救成本
優先級計算為這三個因素的乘積,并分為以下級別:L1,L2和L3。L1表示高嚴重性違規,具有高可能性和低補救成本,這是我們最想看到的修復。使用CERT的評分框架可以幫助您節省精力并使團隊能夠充分利用他們的時間。
除了在小工具、和風險評分框架的幫助下快速推進合規流程的進展,Parasoft C/C++ Test的報告框架還可以自動生成適合代碼審核的合規性報告來節省您的時間,
您如何從CERT C++中受益
C++是一門具有許多功能的現代優秀語言,能夠設計具有高級模式的復雜系統。而且允許直接通過指針訪問內存而無需檢查其訪問權限是否正確,因此提高了效率。
但是C++也有劣勢的一面,即使是非常有經驗的開發人員開發的代碼也容易受攻擊,最常見的原因是內存訪問和管理訪問緩沖區溢出、懸空引用的使用以及整數溢出。攻擊者可以利用電弧注入或代碼注入以獲得對具有受損程序系統的特權控制,更糟糕的是獲得內核訪問級別。
那么,我們如何防止攻擊者進入我們的系統呢?不可能采用現有的代碼庫嘗試所有可能的安全漏洞。當前可用于C/C++程序員的最佳選擇是首先創建不受某些被證明是安全漏洞源的構造影響的代碼。讓我們看一個簡單的例子:
auto g() { int i = 12; return [&] { i = 100; // Problem return i; }; } void f() { int j = g()(); }
在此示例中,函數g()通過引用隱式捕獲自動局部變量i,當從g()調用返回函數時,它捕獲的引用將引用其生命周期結束的變量(g函數消失)。因此當f()執行時,懸空引用的使用會影響未定義的行為。攻擊者可以利用這種未定義的行為來控制程序,造成損失。
總結
正如標題所說,很難找到不遵循CERT C++安全標準的理由,有了這個標準,才讓C++的開發變得有跡可循,變得更加安全穩定。CERT C++包含許多可以檢測潛在問題的規則,并將幫助您促進安全編碼實踐。它的安全編碼指南在使用時可以幫助加強源代碼的安全性,是確保整體系統安全的有效策略。