C++ 開發人員廣泛採用模糊測試,藉此找出安全性相關錯誤。 本頁說明 AAOS (Android Automotive OS) 模糊化器和 以及如何在 AAOS 專用的目標裝置上執行。
現有的 AAOS 模糊測試器
在 AAOS 上建立模糊化工具,與在 Android 上執行的做法相同
平台。請參閱模糊設定及建立操作說明的
libFuzzer
頁面。
不過,AAOS 上模糊目標的執行路徑 Android 手機裝置。因此,您必須在 AAOS 上執行特定模糊測試程式 確保沒有安全性問題。
AAOS 專屬的模糊測試器可分為以下類別:
外部檢視系統 (EVS) 模糊化:模糊外部相機管理 有些人會將 Cloud Storage 視為檔案系統 但實際上不是查看 EVS 程式碼範例 毛茸茸星 ,掌握更多詳細資訊。
計算管線模糊部分:模糊機器學習運算管線系統。詳情請見 Computepipe 模糊工具的程式碼範例 ,掌握更多詳細資訊。
其他模糊化器:模糊的 AAOS 程式庫。請參閱 sbcdecoder 的程式碼範例 模糊 ,掌握更多詳細資訊。
如需 AAOS 專用的模糊化器清單,請參閱下表:
EVS 模糊 | 運算管道模糊化器 | 其他模糊處理工具 |
---|---|---|
evs_halcamera_fuzzer |
computepipe _semantic_manager_fuzzer |
sbcdecoder_fuzzer |
evs_virtual_camera_fuzzer |
computepipe _pixel_mem_handle_fuzzer |
|
evs_haldisplay_fuzzer |
computepipe _pixel_stream_manager_fuzzer |
|
evs_enumerator_fuzzer |
grpc_graph_fuzzer |
|
local _prebuild_graph_fuzzer |
編譯 AAOS 模糊工具
建議您使用 HWASAN 裝置執行應用程式 模糊不清然而,如果不使用 HWASAN 裝置,請按照下列步驟編譯 然後在本機刷新 HWASAN 映像檔:
執行下列指令,編譯
hwasan
版本並刷新版本 傳送到車用系統source build/envsetup.sh lunch <car target> SANITIZE_TARGET=hwaddress m fastboot flashall # this will automatically flash the local built image to device
為 EVS 經理編譯模糊工具:
mmma packages/services/Car/cpp/evs/manager/1.1/test/fuzzer/
執行 AAOS 模糊測試器
設定完成後,請按照下列步驟執行模糊測試:
執行下列指令,準備同步處理至 AAOS 系統的模糊工具:
adb root; adb remount; adb reboot; adb root; adb remount
如果裝置上沒有名為 /data/fuzzer 的資料夾,請建立一個資料夾。
前往您下載及解壓縮版本的位置,然後執行 下方指令,在裝置上執行模糊工具。
adb sync data
如要將測試案例推送到裝置上,請執行下列指令:
adb push testcase /data/fuzzer/testcase
使用下列指令執行模糊工具:
adb shell /data/fuzzer/evs_fuzzer /data/fuzzer/testcase
驗證輸出內容。
成功的執行作業會產生類似以下範例的輸出內容:
INFO: Seed: 1902496153 INFO: Loaded 4 modules (31463 inline 8-bit counters): 15646 [0x7afd3ddb80, 0x7afd3e189e), 15784 [0x7afd7fbbf0, 0x7afd7ff998), 27 [0x7afd618328, 0x7afd618343), 6 [0x63e95aece8, 0x63e95aecee), INFO: Loaded 4 PC tables (31463 PCs): 15646 [0x7afd3e18a0,0x7afd41ea80), 15784 [0x7afd7ff998,0x7afd83d418), 27 [0x7afd618348,0x7afd6184f8), 6 [0x63e95aecf0,0x63e95aed50), INFO: 0 files found in /data/fuzz/bot/inputs/fuzzer-testcases-disk/temp-671/new INFO: 54 files found in /data/fuzz/bot/inputs/data-bundles/android_auto_libcrypto_utils_fuzzer INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 1048576 bytes INFO: seed corpus: files: 54 min: 1b max: 4194301b total: 6336542b rss: 28Mb #55 INITED cov: 71 ft: 94 corp: 6/1032Kb exec/s: 0 rss: 33Mb #79 REDUCE cov: 71 ft: 94 corp: 6/1019Kb lim: 1048576 exec/s: 0 rss: 33Mb L: 1036131/1036131 MS: 4 CMP-ChangeASCIIInt-CopyPart-EraseBytes- DE: "\x00\x00\x00\x00"- #83 REDUCE cov: 71 ft: 94 corp: 6/686Kb lim: 1048576 exec/s: 0 rss: 33Mb L: 694616/694616 MS: 4 ChangeASCIIInt-ChangeASCIIInt-ChangeBinInt-CrossOver- #104 REDUCE cov: 71 ft: 94 corp: 6/591Kb lim: 1048576 exec/s: 0 rss: 33Mb L: 597426/597426 MS: 1 EraseBytes- #192 REDUCE cov: 71 ft: 94 corp: 6/499Kb lim: 1048576 exec/s: 0 rss: 33Mb L: 503742/503742 MS: 3 PersAutoDict-ChangeByte-EraseBytes- DE: "\x00\x00\x00\x00"- #219 REDUCE cov: 71 ft: 94 corp: 6/292Kb lim: 1048576 exec/s: 0 rss: 33Mb L: 290962/290962 MS: 2 CopyPart-EraseBytes- #241 REDUCE cov: 71 ft: 94 corp: 6/226Kb lim: 1048576 exec/s: 0 rss: 33Mb L: 223787/223787 MS: 2 CopyPart-EraseBytes- #269 REDUCE cov: 71 ft: 94 corp: 6/152Kb lim: 1048576 exec/s: 0 rss: 33Mb L: 148467/148467 MS: 3 InsertRepeatedBytes-PersAutoDict-EraseBytes- DE: "\x00\x00\x00\x00"- #300 REDUCE cov: 71 ft: 94 corp: 6/83Kb lim: 1048576 exec/s: 0 rss: 33Mb L: 77320/77320 MS: 1 EraseBytes- #393 REDUCE cov: 71 ft: 94 cor`p: 6/80Kb lim: 1048576 exec/s: 0 rss: 33Mb L: 73802/73802 MS: 3 InsertRepeatedBytes-P
發生當機或失敗的執行作業時,系統會產生類似下列內容的輸出內容 範例:
HWAddressSanitizer: tag-mismatch on address 0x0075e8a643d0 at pc 0x0075e8a5d988 WRITE of size 8 at 0x0075e8a643d0 tags: 5c/00 (ptr/mem) in thread T0 #0 0x75e8a5d984 (/system/lib64/libnetd_client.so+0x3984) #1 0x75da484788 (/data/fuzzer/lib/libc.so+0x49788) #2 0x75da52dae8 …… 00000075e8a5d988 SUMMARY: HWAddressSanitizer: tag-mismatch (/system/lib64/libnetd_client.so+0x3984)
如需偵測到的安全性相關資訊,請參閱 CVE 網站 安全漏洞