Chromium Chronicle #9:ClusterFuzz

第 9 集:作者:山景城的 Adrian Taylor (2019 年 12 月)
先前劇集

您可能會發現,您必須修正 ClusterFuzz 發現的高優先順序安全性錯誤。這是什麼?你應該認真看待這些錯誤嗎?你需要哪方面的協助?

模糊流程圖

在 Chrome 中輸入 ClusterFuzz 動態饋給,以便監控當機情況。其中有些 Chrome 版本啟用了額外的檢查功能,例如 AddressSanitizer,該功能會尋找記憶體安全錯誤。

ClusterFuzz 會根據當機的位置指派元件,並依據當機類型及是否發生在沙箱程序中指派嚴重性。舉例來說,除非這是瀏覽器程序,否則堆積使用後的堆積用量會是很高的,除非受到瀏覽器程序影響,這時非常重要 (沒有沙箱機制可以限制影響!):

class Foo {
  Widget* widget;
};

void Foo::Bar() {
  delete widget;
  ...
  widget->Activate();  // Bad in the renderer process, worse in the
                       // browser process. Obviously, real bugs are
                       // more subtle. Usually.

ClusterFuzz 會根據模糊工具或外部提交的錯誤產生輸入內容。 部分模糊情形是由 libFuzzer 技術支援,後者會改進輸入功能,以擴大程式碼涵蓋範圍。有些瞭解輸入語言的文法已轉換為 protobufs。ClusterFuzz 發現當機時,會嘗試盡量減少輸入測試案例,甚至嘗試找出違規的修訂版本。找到許多...

您可以提供協助:

  • 留意物件生命週期和整數溢位現象。
  • 新增模糊處理工具,特別是在處理不可信任的資料或處理序間通訊 (IPC) 時 (參閱下面的連結,通常少於 20 行程式碼)。
  • 修正 ClusterFuzz 回報的錯誤:其嚴重程度評定法是可信任的,因為它們是以實際的可利用性為基礎:就算是單一位元組溢位,攻擊者也會執行任何程式碼。

資源