微軟向開源又邁進了一大步:Checked C
導讀微軟開源了 Checked C ,這是一個 C 語言的擴充版本,可以用於解決 C 語言中的一系列安全相關的隱患。正如其名字所示,Checked C 為 C 語言增加了檢查,這個檢查可以協助開發人員檢查常見的編程錯誤,比如緩衝區侵佔buffer overruns、記憶體訪問越界、不正確的類型轉換等。這些編程錯誤往往是造成許多重大安全性漏洞的根本原因,比如破殼漏洞Shellshock、心臟出血漏洞Heartbleed、沙蟲Sandworm等。
Checked C 通過修改控制指標來解決這些問題,指標被程式員們用來定義他們的代碼所操作的記憶體位址。當指標數量一多,指標控制就往往容易忙中出亂,項目越大跟蹤它們就越困難,類似 Chromium、Firefox、Office、OpenSSL 以及其它的大型程式碼程式庫在這方面都存在這樣的問題,你可以從它們的變更日誌中看到大量的這類問題修複。“Checked C 允許程式員更好的描述他們想要如何使用指標,以及指標應該指向的記憶體範圍”,微軟說,“這個資訊可以用於在運行時環境中添加檢測,以偵測錯誤的資料訪問,而不是讓錯誤悄悄的發生而無所察覺。”
Checked C 也將允許開發人員檢測到他們以為 C 語言有、而實際卻沒有的功能誤用。按編程界的說法來講,這個叫做“邊界檢查bounds checking”的功能,用於檢查變數/指標是否在它的範圍之內賦值,C# 和 Rust 已經有這樣的功能了,而且還不止於此。然而不幸的是,被廣泛使用的 C 和 C++ 卻沒有這樣的功能,微軟希望只需要對現有的 C/C++ 程式做最小的改動,利用 Checked C 就可以得到安全方面的改善,這樣會吸引大量的開發人員開始使用 Checked C。
Checked C 項目已經放到了GitHub上。這並不是微軟第一次對基本程式設計語言做出來自己的演繹,之前該公司的程式員們還建立了一個名為 TypeScript 的 JavaScript 的超集,並且它已經得到了廣泛認可。
原文來自:https://linux.cn/article-7474-1.html
轉載地址:http://www.linuxprobe.com/microsoft-checkedc-opensource.html