随着智能汽车设备的出现,这些设备之间的数据通信变得越来越重要。SOME/IP是一个轻量级协议,用于促进进程/设备间的通信,它支持程序性调用和事件通知。由于其简单性和性能,SOME/IP正被越来越多的汽车设备所采用。因此,SOME/IP应用的安全性变得至关重要。
•我们在一个开源的SOME/IP应用上对Ori进行了评估,评估结果令人满意。
灰盒模糊法的基本思想是应用一些预先设定的生成和变异策略来产生输入到目标程序中,并通过观察监测到的执行过程中的安全漏洞来发现漏洞。图3显示了典型灰盒模糊器的工作流程。通过翻转、替换、加/减位、字节或块,或者根据输入结构进行生成,生成器可以产生输入变量。目标程序通常用某些代码段进行检测,以便在实际模糊测试期间提供覆盖率反馈,这将有助于针对特定的文件输入评估程序的执行。在AddressSanitizer、MemorySanitizer等净化器的帮助下,执行被模糊引擎监控,以观察是否有安全漏洞。这些违规行为,如内存使用过期、缓冲区溢出等,通常表示实现缺陷,可能导致内存损坏、信息泄露等漏洞。如果违规被触发,相应的文件输入将被用作错误的证明。同时,如果模糊器发现当前输入有助于提高覆盖率,它将被用于后续的突变。由于执行是重复多次的,并由模糊器控制,因此适用于应用分叉执行模型,以减少加载目标程序的共同序幕代码段的开销,并提高整体模糊性能。
III.方法
在测试阶段,模糊器将产生数据包来测试目标服务器并处理测试结果。首先,模糊器将向forkserver发送一个请求,要求它分叉一个新的实例进行测试。这个测试实例从forkerver逻辑被探测到的地方开始执行。因此,测试实例可以跳过与测试无关的逻辑的执行测试。测试实例开始执行后,它将通知模糊器继续进行。然后模糊器将通过结构突变生成一个新的SOME/IP包,并将其发送给测试实例。收到数据包后,测试实例将处理它。变异的数据标题有助于测试数据包解析组件,而变异的数据包主体有助于测试服务器的业务逻辑。在测试实例执行完毕后,分叉服务器将收集其退出状态和执行覆盖率信息。然后将收集到的数据报告给模糊器。Ori的测试结果处理与其他基于覆盖的灰盒模糊器相似。如果该数据包导致测试实例崩溃,模糊器将保留它以便将来分析。如果该数据包能够增加代码覆盖率,模糊器将保留它作为生成新测试案例的种子。这标志着一轮测试的结束。如果用户不停止模糊器或目标服务器,整个过程将继续进行新一轮的测试。
IV.实施和评估
通过评估,我们可以得出结论,Ori可以通过附加模糊模式和结构变异来有效地检测SOME/IP服务中的漏洞,从而克服现有方法的局限性。
V.未来的工作
目前的工作是为汽车以太网协议构建灰盒模糊器的早期尝试。我们未来的工作包括:1.模糊更多的现实目标。目前的评估是基于GENIVI/vsomeip的实例程序,因为很少有其他开源的SOME/IP应用程序可用。所以我们计划从行业伙伴那里获得更多的SOME/IP应用,以便对Ori进行更全面的评估。2.扩展Ori,以支持图1中所示的更多汽车协议。从理论上讲,附加的模糊模式和结构突变可以应用于其他协议。然而,仍然需要加强Ori设计的通用性,使其与不同特性的协议兼容。3.提高Ori对多线程目标的有效性。在实验过程中发现GENIVI/vsomeip的服务器是以多线程运行的。在多线程程序上进行灰盒模糊处理会很麻烦,因为代码覆盖率反馈可能会被污染。我们计划在未来将MUZZ中使用的技术与Ori进行整合。
VI.结论
参考文献:
[1]An implementation of Scalable service-Oriented MiddlewarE over IP. Bayerische Motoren Werke Aktiengesellschaft. [Online]. Available: https://github. com/GENIVI/vsomeip
[2]B. P. Miller, L. Fredriksen, and B. So, “An empirical study of the reliability of unix utilities,” Communications of the ACM, vol. 33, no. 12, pp. 32–44, Dec. 1990.
[3]V. J. M. Manès, H. Han, C. Han, S. K. Cha, M. Egele,
E. J. Schwartz, and M. Woo, “Fuzzing: Art, science, and engineering,” CoRR, vol. abs/1812.00140, pp. 1–29, 2018.
[4]V. Pham, M. Böhme, and A. Roychoudhury, “Aflnet: A
greybox fuzzer for network protocols,” in 2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST), 2020, pp. 460–465.
[5]Boofuzz. [Online]. Available: https://github.com/ jtpereyda/boofuzz
[6]Genevi vsome/ip. [Online]. Available: https://github.com/ GENIVI/vsomeip
[7]“IEEE Standards for Local and Metropolitan Area Net- works: Supplement - Media Access Control (MAC) Parameters, Physical Layer, Medium Attachment Units, and Repeater for 100Mb/s Operation, Type 100BASE- T (Clauses 21-30),” IEEE Std 802.3u-1995 (Supplement to ISO/IEC 8802-3: 1993; ANSI/IEEE Std 802.3, 1993 Edition), pp. 1–415, 1995.
[8]“Information technology — Open Systems Intercon- nection — Basic Reference Model: The Basic Model,” International Organization for Standardization, Standard, Nov. 1994.
[9]SOME/IP Protocol Specification, https://www.autosar. org/fileadmin/user_upload/standards/foundation/19-11/ AUTOSAR_PRS_SOMEIPProtocol.pdf, AUTOSAR Std., Rev. R19-11, Nov. 2019.
[10]L. Völker, “Scalable service-Oriented MiddlewarE over IP (SOME/IP),” http://some-ip.com/, 2020, accessed: 2020- 08-22.
[11]Technical whitepaper for afl-fuzz, “american fuzzy lop,” http://lcamtuf.coredump.cx/afl/technical_details.txt, 2019, accessed: 2019-08-01.
[12]LLVM, “libFuzzer,” 2015. [Online]. Available: https:
//llvm.org/docs/LibFuzzer.html
[13]lcamtuf, “AFL white paper,” 2015. [Online]. Available: https://lcamtuf.coredump.cx/afl/technical_details.txt
[14]Example some/ip service. [Online]. Avail- able: https://github.com/GENIVI/vsomeip/blob/master/ examples/hello_world/hello_world_service_main.cpp
[15]H. Chen, S. Guo, Y. Xue, Y. Sui, C. Zhang, Y. Li, H. Wang, and Y. Liu, “MUZZ: Thread-aware grey-box fuzzing for effective bug hunting in multithreaded programs,” in 29th USENIX Security Symposium (USENIX Security 20). USENIX Association, Aug. 2020, pp. 2325–2342.
分享不易,恳请点个【👍】和【在看】