1. 概述
上一篇关于和有趣的灵魂关于静态分析工具一场对话 ,里面通过和大模型 Kimi 讨论一篇论文《False negative - that one is going to kill you: Understanding Industry Perspectives of Static Analysis based Security Testing》中通过定性的方式总结的关于静态分析工具的选择和使用中的 17 个发现,试图通过这个对话,来测试大模型对论文的概括和总结能力,同时也和大模型探讨了静态分析工具的痛点和解决方法。
这次我们在和目前国内另一个访问率非常高的大模型-秘塔AI搜索 对同样的问题进行一场讨论。
秘塔 和 kimi 不同的增加了一个更为方便的AI人设和输出的设置: 讨论中使用了秘塔的搜索设置:
范围:全网、学术、播客。这里选择学术 ; 文献范围:不限(包括中文和英文)、中文、英文。这里选了不限 ; 输出方式:简洁、深入、研究。这里会选简洁 ,研究 。
文中并没有对和有趣的灵魂关于静态分析工具一场对话 中的 7 个问题做了记录。这主要是因为:
篇幅的问题,秘塔在使用研究 选项的时候,回答的篇幅过长; 秘塔对同样问题的理解和kimi有比较大的差异,需要更多的定语来说明问题。这也进一步说明提问或提示词(prompt)会更加成为我们和大模型沟通中需要学习的一项重要技能。
本文只记录了一个对话内容,以揭示另一个有趣灵魂。
2. 对话过程
2.1. 问题一: 分析下:漏报会杀死你:了解基于静态分析的安全测试的行业前景
问: 分析下:False negative - that one is going to kill you: Understanding Industry Perspectives of Static Analysis based Security Testing
2.2. 秘塔 简洁回答
在分析"False negative - that one is going to kill you: Understanding Industry Perspectives of Static Analysis based Security Testing"这一主题时,我们首先需要理解静态分析(Static Analysis, SA)和基于静态分析的安全测试(Static Analysis based Security Testing, SAST)的基本概念及其在软件安全领域的重要性。静态分析是一种不执行代码就能检测出潜在错误的技术,它通过分析程序的源代码或中间代码来检查程序中可能存在的问题[3] [11]。SAST是静态分析的一种应用,专注于发现软件中的安全漏洞[1]。
然而,尽管静态分析工具能够揭示软件系统中的问题代码片段,但它们也存在一些固有的局限性,特别是高误报率(False Positives, FP)的问题[2][12]。这意味着许多警告并不指向真正的缺陷或安全漏洞,而是由于工具的保守近似导致的[2]。这种高误报率不仅降低了工具的有效性,还增加了开发者的工作负担,因为他们需要花费大量时间从大量的警告中筛选出真正有价值的信息[6][10]。
此外,静态分析工具的使用还面临着其他挑战,例如工具的可用性问题[8]、开发者对工具输出的正确识别能力有限7,以及如何有效地利用这些工具来提高软件质量和安全性的问题[4][6]。尽管有研究提出了减少误报的方法,如利用机器学习技术[17]、改进工具的用户界面和交互流程[8][10],以及结合软件版本历史和优先级计算来优化警报[12],但这些方法仍需进一步的研究和实践验证。
静态分析工具在软件安全测试中发挥着重要作用,但它们的高误报率和使用上的挑战限制了它们的有效性和开发者对其的接受度。为了克服这些问题,未来的研究需要集中在提高工具的准确性、减少误报,并改善工具的用户体验上。同时,也需要探索新的技术和方法,以更好地支持开发者利用静态分析技术进行安全测试[1][2][6]。
1. Amit Seal Ami, Kevin Moran et al. ““False negative - that one is going to kill you”: Understanding Industry Perspectives of Static Analysis based Security Testing.” arXiv.org (2023).
2. Zhaoqiang Guo, Tingting Tan et al. “Mitigating False Positive Static Analysis Warnings: Progress, Challenges, and Opportunities.” IEEE Transactions on Software Engineering (2023). 5154-5188.
3. 夏一民,罗军,张民选.基于静态分析的安全漏洞检测技术研究[J].计算机科学,2006(10):279-282.
4. D. Baca, B. Carlsson et al. “Improving software security with static automated code analysis in an industry setting.” Software, Practice & Experience (2013).
5. Joseph R. Ruthruff, J. Penix et al. “Predicting accurate and actionable static analysis warnings.” 2008 ACM/IEEE 30th International Conference on Software Engineering (2008). 341-350.
6. Jinqiu Yang, Lin Tan et al. “Towards Better Utilizing Static Application Security Testing.” 2019 IEEE/ACM 41st International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP) (2019). 51-60.
7. D. Baca, K. Petersen et al. “Static Code Analysis to Detect Software Security Vulnerabilities - Does Experience Matter?.” ARES (2009). 804-810.
8. Justin Smith, Lisa Nguyen Quang Do et al. “Why Can’t Johnny Fix Vulnerabilities: A Usability Evaluation of Static Analysis Tools for Security.” SOUPS @ USENIX Security Symposium (2020).
9. Brian Chess and G. McGraw. “Static Analysis for Security.” IEEE Security and Privacy (2004). 76-79.
10. Omer Tripp, Salvatore Guarnieri et al. “ALETHEIA: Improving the Usability of Static Security Analysis.” Conference on Computer and Communications Security (2014).
11. 孙茜,宫云战,杨朝红.基于静态检测的程序安全漏洞测试[J].北京化工大学学报(自然科学版),2007(S1):9-12.
12. 曾述可,张阳,程亮等.一种静态分析工具的优化方法[J].小型微型计算机系统,2015,36(04):648-653.
13. Justin Smith, Brittany Johnson et al. “How Developers Diagnose Potential Security Vulnerabilities with a Static Analysis Tool.” IEEE Transactions on Software Engineering (2019). 877-897.
14. 孙志科.数据静态分析技术及其在安全软件测试中的应用[J].铁路通信信号工程技术,2021,18(05):9-14+32.
15. 黄锦,陈晓苏,肖道举等.基于模型检验的软件安全静态分析研究[J].微计算机信息,2007,No.217(30):86-87+49.
16. Midya Alqaradaghi, G. Morse et al. “Detecting security vulnerabilities with static analysis – A case study.” Pollack Periodica (2021).
17. Hong Jin Kang, Khai Loong Aw et al. “Detecting False Alarms from Automatic Static Analysis Tools: How Far are We?.” International Conference on Software Engineering (2022). 698-709.
18. 褚蕾. 基于静态源码分析的软件安全测试技术研究与实现[D].电子科技大学,2010.
19. 梁婕,张淼,徐国爱等.基于静态分析技术的源代码安全检测模型[J].计算机应用研究,2008(09):2703-2705.
20. Tukaram Muske and Uday P. Khedker. “Efficient elimination of false positives using static analysis.” IEEE International Symposium on Software Reliability Engineering (2015). 270-280.
21. Foteini Cheirdari and George Karabatis. “Analyzing False Positive Source Code Vulnerabilities Using Static Analysis Tools.” 2018 IEEE International Conference on Big Data (Big Data) (2018). 4782-4788.
22. Aymen Akremi. “Software Security Static Analysis False Alerts Handling Approaches.” International Journal of Advanced Computer Science and Applications (2021).
23. Carlo Dimastrogiovanni and N. Laranjeiro. “Towards Understanding the Value of False Positives in Static Code Analysis.” Latin-American Symposium on Dependable Computing (2016). 119-122.
24. Joonyoung Park, Inho Lim et al. “Battles with False Positives in Static Analysis of JavaScript Web Applications in the Wild.” 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C) (2016). 61-70.
25. 李寅,范明钰,王光卫.基于反编译的Android平台恶意代码静态分析[J].计算机系统应用,2012,21(11):187-189.
26. 曹星辰. 基于静态分析的软件安全性评估方法研究[D].华中科技大学,2015.
27. 秦晓军,甘水滔,陈左宁.一种基于一阶逻辑的软件代码安全性缺陷静态检测技术[J].中国科学:信息科学,2014,44(01):108-129.
28. T. Dunlap, Seaver Thorn et al. “Finding Fixed Vulnerabilities with Off-the-Shelf Static Analysis.” European Symposium on Security and Privacy (2023). 489-505.
29. 赵迎钊. 基于静态分析的代码安全缺陷检测系统[D].电子科技大学,2012.
30. 于莉莉,杜蒙杉,张平等.Web安全性测试技术综述[J].计算机应用研究,2012,29(11):4001-4005.
2.2.1. 输出结果分析
大模型并没有准确的理解我们的问题,把论文作为讨论的目标; 引经据典的解释了什么是静态分析,静态分析面对的高误报问题以及未来的研究方向。让人大致有了对静态分析工具的作用和面对的问题有了大致的了解。 输出并未对指定的论文做出分析,而是偏离到静态分析工具的讨论,且和讨论的漏报率,变成了误报率。这些内容对初学者有一定的作用。 让人感兴趣的是,整体输出有点写论文的方式,每个点都使用了相关论文内容的引用,这里除了第一个参考是指定的论文。 这里有个不错的整理方式,使用了思维导图,整体框架符合分析的逻辑。
满意度: 3 分 总体回答偏离了方向,但这可能是问问题的方式导致。给出输出框架参照了论文的输出方式,且思维导图符合分析逻辑,所以仍给了合格。
2.3. 秘塔 研究回答
在分析“False negative - that one is going to kill you: Understanding Industry Perspectives of Static Analysis based Security Testing”这一主题时,我们首先需要理解静态分析(Static Analysis, SA)和基于静态分析的安全测试(Static Analysis based Security Testing, SAST)的基本概念。静态分析是一种不执行代码就能检测软件缺陷的方法,它通过分析程序的源代码或中间代码来查找潜在的错误[3][11]。SAST是静态分析的一种应用,专注于安全漏洞的检测[1]。
假阴性(False Negative, FN)是指工具未能正确识别出存在的安全漏洞,这可能导致严重的问题,因为这些漏洞可能被利用来攻击系统。然而,在实际应用中,除了假阴性外,还存在大量的假阳性(False Positive, FP),即工具错误地报告了不存在的安全漏洞[2][6][12]。这种情况不仅增加了开发者的负担,降低了工具的可用性,而且还可能导致开发者忽略真正重要的警告[8][10]。
为了提高SAST工具的有效性,研究人员和实践者已经提出了多种方法来减少假阳性的数量。例如,通过机器学习技术优化工具,以更准确地识别可操作的警告[5][16];改进工具的用户界面和交互设计,使其更加直观易用[8];以及结合软件的版本历史和其他上下文信息来提高警报的准确性[12]。
尽管如此,减少假阳性并不是解决假阴性的唯一途径。要有效应对假阴性问题,需要深入理解开发者如何使用SAST工具,他们的期望是什么,以及他们如何处理工具生成的警告[1]。研究表明,开发者的经验对于正确识别安全警告至关重要[7]。此外,开发者在使用SAST工具时面临的挑战包括处理大量报告的警告、缺乏修复建议以及工具界面的可用性问题[6][8]。
为了提高SAST工具的实用性和有效性,未来的研究方向应该包括:进一步降低假阳性的比例,同时确保不会错过重要的安全漏洞[2][5][16];提供更加个性化的修复建议和优化工具的用户界面[6][8];以及通过教育和培训提高开发者的技能,使他们能够更有效地使用这些工具[7]。
总之,虽然SAST工具在检测安全漏洞方面具有潜力,但要充分发挥其作用,还需要解决假阳性过多和假阴性未被充分识别的问题。通过综合考虑开发者的需求和工具的局限性,可以朝着提高SAST工具准确性和实用性的方向迈进。
如何通过机器学习技术优化静态分析工具以减少假阳性?
通过机器学习技术优化静态分析工具以减少假阳性,可以采取以下几种方法:
利用深度学习模型进行特征提取和分类 :参考ImageNet项目中使用的深度卷积神经网络(CNN)[31],可以在静态分析工具中引入类似的深度学习模型来识别代码中的潜在问题。这些模型能够处理高维度的模式,并且通过大量的训练数据学习到有效的特征表示,从而提高分类的准确性。
集成多个静态分析工具 :根据[37]的研究,通过简单集成四种不同的静态分析工具,并使用机器学习算法去除误报缺陷,可以在小幅度降低整体召回率的基础上,大幅度提高缺陷报告的精确度。这种方法可以通过结合不同工具的优势来减少假阳性。
动态上下文构建与迭代解码 :TypeT5方法提出了一种将类型预测视为代码填充任务的方法,通过利用CodeT5这样的预训练语言模型,并结合静态分析构建每个代码元素的动态上下文[36]。此外,该方法还提出了一个迭代解码方案,允许模型在输入上下文中加入之前的类型预测,从而实现信息交换。这种方法可以应用于静态分析工具中,通过动态上下文的构建和迭代解码来减少假阳性。
机器学习辅助的静态/动态分析结合 :根据[38]的研究,提出了一种通过机器学习技术减少静态分析中的假报警并检测漏洞的方法。该方法首先通过静态分析提取变量信息,然后通过执行监控和机器学习技术学习变量的初始值和允许范围,以此来判断当前使用的变量值是否有效以及变量是否按正确的顺序使用。这种方法可以有效地减少由于静态分析导致的假阳性。
特征选择与降维 :在进行静态分析时,选择合适的特征并进行降维是非常重要的。根据[40]的研究,描述了如何基于可执行文件的二进制内容进行预处理和清洗数据,以及如何选择特征字段维度和选择特征特征以有效表示二进制可执行文件样本。通过这种方法,可以减少不必要的特征干扰,从而降低假阳性的发生率。
通过引入深度学习模型、集成多个静态分析工具、动态上下文构建与迭代解码、机器学习辅助的静态/动态分析结合以及特征选择与降维等方法,可以有效地优化静态分析工具以减少假阳性。这些方法不仅可以提高静态分析的准确性,还可以提高其效率和可靠性。
静态分析工具在处理大量报告的警告时面临哪些具体挑战,以及如何克服这些挑战?
静态分析工具在处理大量报告的警告时面临的具体挑战主要包括以下几个方面:
理解与响应难度 :开发者在理解和响应静态分析工具的警告时面临挑战。这些挑战包括如何忽略和过滤警告,以及验证假阳性的问题[43]。这表明静态分析工具产生的警告数量庞大且复杂,导致开发者难以有效处理。
缺陷解决策略不足 :尽管静态分析工具能够早期检测到潜在的代码缺陷,但它们并不完全支持开发者解决这些缺陷。开发者必须协调多个复杂的任务,例如确定缺陷是否为假阳性以及更新源代码而不引入新的缺陷。没有良好的缺陷解决策略,开发者可能会错误或低效地解决问题[44]。
难以分析的语言结构、大型库和流行框架 :工业级静态分析在处理大型、真实世界的代码库时变得普遍,但这也带来了难以分析的语言结构、大型库和流行框架等挑战。这些特征使得构建和评估新的、合理的分析变得困难、易出错和乏味[45]。
为了克服这些挑战,可以采取以下措施:
改进通知通信理论 :根据之前研究者的发现,开发者在通知通信方面面临挑战。通过改进通知通信理论,可以帮助开发者更好地理解和响应静态分析工具的警告[43]。
开发辅助工具 :基于成功和不成功的缺陷解决策略的研究,可以开发辅助工具来支持开发者在整个缺陷解决过程中。这样的工具可以帮助开发者更准确、高效地解决问题[44]。
研究现代软件生态系统的挑战 :针对难以分析的语言结构、大型库和流行框架等挑战,需要进行研究以减轻静态分析在现代软件生态系统中的负担。这包括提出短期和长期的研究议程,以使对现代软件的静态分析变得更加轻松[45]。
支持有效的解决策略 :通过研究开发者解决安全漏洞的过程,了解他们的信息需求和当前策略,并研究现有工具如何支持开发者的策略,可以构建支持更有效策略的工具,帮助开发者更准确、高效地解决安全漏洞[48]。
总之,静态分析工具在处理大量报告的警告时面临的挑战是多方面的,包括理解与响应难度、缺陷解决策略不足以及难以分析的语言结构等问题。通过改进通知通信理论、开发辅助工具、研究现代软件生态系统的挑战和支持有效的解决策略等措施,可以有效地克服这些挑战。
开发者如何有效地使用静态分析工具来识别安全漏洞,有哪些最佳实践或策略?
开发者可以通过以下最佳实践或策略有效地使用静态分析工具来识别安全漏洞:
选择合适的静态分析工具 :不同的静态分析工具针对不同类型的安全漏洞有不同的检测能力。例如,Pixy是一个专门针对PHP脚本中跨站脚本攻击(XSS)的静态分析工具[52],而WAP工具则在PHP应用程序中发现了大量漏洞,并且其准确性和精确性优于其他工具[54]。因此,开发者应根据自己的项目需求和所使用的编程语言选择最合适的工具。
结合多种静态分析技术 :单一的静态分析技术可能无法全面检测出所有的安全漏洞。例如,结合使用点对点分析、流敏感分析、上下文敏感数据流分析以及别名和字面量分析可以提高检测的准确性和精确性[51][52]。此外,将污点分析与数据挖掘相结合,可以减少误报率并提高检测效率[54]。
早期集成静态分析工具 :在软件开发的早期阶段集成静态分析工具,可以在代码实现之前发现潜在的安全漏洞,从而降低修复成本和难度[53]。这要求开发者在整个软件开发生命周期中持续使用这些工具。
关注特定的安全漏洞类型 :不同的静态分析工具可能对不同类型的安全漏洞有更强的检测能力。例如,一些工具可能更擅长检测SQL注入、跨站脚本攻击等常见的Web应用漏洞[51][52],而其他工具可能更专注于加密错误的检测[56]。开发者应根据自己的具体需求选择能够有效检测特定类型漏洞的工具。
定期评估和更新静态分析工具 :随着新漏洞的不断发现和旧漏洞的修复,静态分析工具也需要定期更新以保持其检测能力。此外,通过实验评估不同的静态分析工具在不同开发场景下的表现,可以帮助开发者选择最适合当前项目需求的工具[57]。
减少误报和漏报 :为了提高静态分析的有效性,开发者需要关注如何减少误报和漏报。一种方法是采用基于数据安全状态跟踪和检查的方法,这种方法通过对漏洞状态机模型的状态空间进行扩展,并引入合法性检查和非可信数据鉴别方法,有效降低了误报的发生并避免了漏报[59]。
提高开发者对静态分析的理解和使用 :开发者应该了解静态分析工具的工作原理和限制,以及如何有效地使用这些工具来识别和修复安全漏洞。通过教育和培训,开发者可以更好地利用这些工具来提高代码的安全性[60]。
总之,有效地使用静态分析工具来识别安全漏洞需要开发者选择合适的工具,结合多种技术,早期集成并定期更新这些工具,同时关注减少误报和漏报,并提高对这些工具的理解和使用效率。
在静态分析中,如何结合软件的版本历史和其他上下文信息来提高警报的准确性?
在静态分析中,结合软件的版本历史和其他上下文信息来提高警报的准确性是一个复杂但至关重要的任务。这种方法可以通过多种方式实现,包括但不限于使用机器学习技术、考虑开发者的行为特征以及利用历史数据和模式识别。
通过跟踪静态分析违规项随时间的变化,并精确地将这些违规项的引入和消除归因于个别开发者,可以捕捉到开发者的编码习惯和特性[67]。这种方法允许我们为每个开发者构建“指纹”,反映他们倾向于引入或修复哪些类型的违规项。这种个性化的分析可以帮助提高警报的相关性,因为它能够根据特定开发者的习惯来调整警报的优先级。
利用历史警报数据训练机器学习分类器,以区分可操作的警报(即真正需要开发者关注的问题)和不可操作的警报(可能是误报),是一种有效的方法[68]。这种方法依赖于历史数据来识别哪些警报是重要的,从而减少需要手动检查的警报数量,提高警报系统的效率。
此外,通过分析代码中的模式和特征,可以进一步提高警报的准确性。例如,通过创建基于代码特征的特征向量,并使用机器学习技术构建一个可操作警报预测模型,可以有效地区分可操作警报和不可操作警报[63]。这种方法利用了代码中的模式和结构信息,有助于提高警报的相关性和准确性。
考虑到软件版本历史和其他上下文信息对于提高警报准确性的重要性,可以通过分析软件项目的历史变化来识别潜在的安全漏洞和攻击倾向组件69。这种方法不仅依赖于代码本身的分析,还考虑了软件发展的历史背景和环境因素,从而提供了一个更全面的视角来评估潜在的风险。
通过结合软件的版本历史和其他上下文信息,可以显著提高静态分析警报的准确性。这要求采用多维度的方法,包括但不限于利用机器学习技术、考虑开发者的个性化行为特征以及深入分析代码中的模式和结构信息。通过这些方法,可以有效地减少误报的数量,提高警报的相关性和实用性,从而帮助开发者更有效地识别和修复潜在的问题。
静态分析工具的用户界面和交互设计改进有哪些实际案例或研究结果?
静态分析工具的用户界面和交互设计改进的实际案例或研究结果表明,这些领域的改进对于提高工具的可用性和用户满意度至关重要。以下是一些具体的改进方向和实施案例:
警告消息和修复支持 :一项大规模研究发现,超过一半的静态分析工具提供的警告消息质量较差,而大约四分之三的工具几乎不提供任何修复支持[71]。这表明在警告消息的设计和修复建议的生成方面存在显著的改进空间。
集成用户知识 :同一篇研究还指出,静态分析工具在集成用户知识方面被严重忽视,这对于处理误报和调整结果以适应特定开发者的需求非常重要[71]。这意味着工具需要更好地理解和利用用户的背景知识来提高其准确性和个性化。
工作流集成和专用用户界面 :研究还强调了工作流集成和专用用户界面的重要性[71]。这表明静态分析工具需要更加紧密地与开发者的日常工作流程集成,并提供更加定制化的用户体验。
基于手势交互的用户界面开发工具 :为了应对移动设备上交互方式的变化,设计并实现了一个基于手势交互的用户界面开发工具。该工具通过利用移动设备的传感器,实现了多种手势交互技术的混合使用,从而降低了开发难度并提高了开发效率[80]。这一案例展示了如何通过技术创新来改善用户界面的交互设计。
基于故事板的用户界面原型工具 :为了支持界面概念设计阶段并建立低保真原型,实现了一个结合草图设计技术和故事板技术的交互设计工具。该工具使得界面的交互行为易于演示,无需编码或复杂的人机对话描述,从而增强了工具本身的可用性[78]。这一案例说明了如何通过简化设计过程和提高易用性来改进用户界面的设计。
可用性测试软件UX TOOL :通过对UX TOOL软件的开发,从市场研究、用户研究到交互设计和图形界面设计等一系列设计流程环节进行了深入探索,以深入了解用户特征和需求。这种以用户为中心的设计方法有助于将可用性理论贯彻到实际项目的开发中[77]。这一案例强调了深入了解目标用户群体并据此进行设计的重要性。
这些案例和研究结果表明,通过关注警告消息的质量、集成用户知识、工作流集成、专用用户界面的设计、技术创新以及深入了解用户需求等方面,可以有效地改进静态分析工具的用户界面和交互设计。
1. Amit Seal Ami, Kevin Moran et al. ““False negative - that one is going to kill you”: Understanding Industry Perspectives of Static Analysis based Security Testing.” arXiv.org (2023).
2. Zhaoqiang Guo, Tingting Tan et al. “Mitigating False Positive Static Analysis Warnings: Progress, Challenges, and Opportunities.” IEEE Transactions on Software Engineering (2023). 5154-5188.
3. 夏一民,罗军,张民选.基于静态分析的安全漏洞检测技术研究[J].计算机科学,2006(10):279-282.
4. D. Baca, B. Carlsson et al. “Improving software security with static automated code analysis in an industry setting.” Software, Practice & Experience (2013).
5. Joseph R. Ruthruff, J. Penix et al. “Predicting accurate and actionable static analysis warnings.” 2008 ACM/IEEE 30th International Conference on Software Engineering (2008). 341-350.
6. Jinqiu Yang, Lin Tan et al. “Towards Better Utilizing Static Application Security Testing.” 2019 IEEE/ACM 41st International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP) (2019). 51-60.
7. D. Baca, K. Petersen et al. “Static Code Analysis to Detect Software Security Vulnerabilities - Does Experience Matter?.” ARES (2009). 804-810.
8. Justin Smith, Lisa Nguyen Quang Do et al. “Why Can’t Johnny Fix Vulnerabilities: A Usability Evaluation of Static Analysis Tools for Security.” SOUPS @ USENIX Security Symposium (2020).
9. Brian Chess and G. McGraw. “Static Analysis for Security.” IEEE Security and Privacy (2004). 76-79.
10. Omer Tripp, Salvatore Guarnieri et al. “ALETHEIA: Improving the Usability of Static Security Analysis.” Conference on Computer and Communications Security (2014).
11. 孙茜,宫云战,杨朝红.基于静态检测的程序安全漏洞测试[J].北京化工大学学报(自然科学版),2007(S1):9-12.
12. 曾述可,张阳,程亮等.一种静态分析工具的优化方法[J].小型微型计算机系统,2015,36(04):648-653.
13. Justin Smith, Brittany Johnson et al. “How Developers Diagnose Potential Security Vulnerabilities with a Static Analysis Tool.” IEEE Transactions on Software Engineering (2019). 877-897.
14. 黄锦,陈晓苏,肖道举等.基于模型检验的软件安全静态分析研究[J].微计算机信息,2007,No.217(30):86-87+49.
15. Midya Alqaradaghi, G. Morse et al. “Detecting security vulnerabilities with static analysis – A case study.” Pollack Periodica (2021).
16. Hong Jin Kang, Khai Loong Aw et al. “Detecting False Alarms from Automatic Static Analysis Tools: How Far are We?.” International Conference on Software Engineering (2022). 698-709.
17. 褚蕾. 基于静态源码分析的软件安全测试技术研究与实现[D].电子科技大学,2010.
18. 梁婕,张淼,徐国爱等.基于静态分析技术的源代码安全检测模型[J].计算机应用研究,2008(09):2703-2705.
19. Tukaram Muske and Uday P. Khedker. “Efficient elimination of false positives using static analysis.” IEEE International Symposium on Software Reliability Engineering (2015). 270-280.
20. Foteini Cheirdari and George Karabatis. “Analyzing False Positive Source Code Vulnerabilities Using Static Analysis Tools.” 2018 IEEE International Conference on Big Data (Big Data) (2018). 4782-4788.
21. Aymen Akremi. “Software Security Static Analysis False Alerts Handling Approaches.” International Journal of Advanced Computer Science and Applications (2021).
22. Carlo Dimastrogiovanni and N. Laranjeiro. “Towards Understanding the Value of False Positives in Static Code Analysis.” Latin-American Symposium on Dependable Computing (2016). 119-122.
23. Joonyoung Park, Inho Lim et al. “Battles with False Positives in Static Analysis of JavaScript Web Applications in the Wild.” 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C) (2016). 61-70.
24. 李寅,范明钰,王光卫.基于反编译的Android平台恶意代码静态分析[J].计算机系统应用,2012,21(11):187-189.
25. 曹星辰. 基于静态分析的软件安全性评估方法研究[D].华中科技大学,2015.
26. 秦晓军,甘水滔,陈左宁.一种基于一阶逻辑的软件代码安全性缺陷静态检测技术[J].中国科学:信息科学,2014,44(01):108-129.
27. T. Dunlap, Seaver Thorn et al. “Finding Fixed Vulnerabilities with Off-the-Shelf Static Analysis.” European Symposium on Security and Privacy (2023). 489-505.
28. 王越凡. 基于源码分析的软件安全测试技术研究[D].北京邮电大学,2009.
29. 赵迎钊. 基于静态分析的代码安全缺陷检测系统[D].电子科技大学,2012.
30. 于莉莉,杜蒙杉,张平等.Web安全性测试技术综述[J].计算机应用研究,2012,29(11):4001-4005.
31. A. Krizhevsky, I. Sutskever et al. “ImageNet classification with deep convolutional neural networks.” Communications of the ACM(2012).
32. Fabian Pedregosa, G. Varoquaux et al. “Scikit-learn: Machine Learning in Python.” Journal of machine learning research(2011).
33. Jia Deng, Wei Dong et al. “ImageNet: A large-scale hierarchical image database.” 2009 IEEE Conference on Computer Vision and Pattern Recognition(2009).
34. Yann LeCun, L. Bottou et al. “Gradient-based learning applied to document recognition.” Proceedings of the IEEE(1998).
35. Marco Tulio Ribeiro, Sameer Singh et al. ““Why Should I Trust You?”: Explaining the Predictions of Any Classifier.” North American Chapter of the Association for Computational Linguistics(2016).
36. Jiayi Wei, Greg Durrett et al. “TypeT5: Seq2seq Type Inference using Static Analysis.” International Conference on Learning Representations (2023).
37. 张丽. 代码静态分析工具的能力评估与集成优化技术研究[D].国防科学技术大学,2017.
38. Jihyun Park, Jaeyoung Shin et al. “Detection of Vulnerabilities by Incorrect Use of Variable Using Machine Learning.” Electronics (2023).
39. M. B. Zafar, Isabel Valera et al. “Fairness Beyond Disparate Treatment & Disparate Impact: Learning Classification without Disparate Mistreatment.” The Web Conference(2016).
40. Nikolay Prudkovskiy. “Static analysis of executable files by machine learning methods.” arXiv.org (2020).
41. Jianqing Fan, Fang Han et al. “Challenges of Big Data Analysis…” National Science Review (2013). 293-314 .
42. Suresh Chari, C. Jutla et al. “Towards Sound Approaches to Counteract Power-Analysis Attacks.” Annual International Cryptology Conference (1999).
43. Nasif Imtiaz, A. Rahman et al. “Challenges with Responding to Static Analysis Tool Alerts.” IEEE Working Conference on Mining Software Repositories (2019). 245-249.
44. Justin Smith. “Identifying Successful Strategies for Resolving Static Analysis Notifications.” 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C) (2016). 662-664.
45. J. Toman and D. Grossman. “Taming the Static Analysis Beast.” Summit on Advances in Programming Languages (2017).
46. D. Keim, Florian Mansmann et al. “Challenges in Visual Data Analysis.” International Conference on Information Visualisation (2006). 9-16.
47. M. A. Siddiqi and Naveed Ghani. “Critical Analysis on Advanced Persistent Threats.” (2016). 46-50.
48. Justin Smith. “Supporting Effective Strategies for Resolving Vulnerabilities Reported by Static Analysis Tools.” IEEE Symposium on Visual Languages / Human-Centric Computing Languages and Environments (2018). 267-268.
49. S. Khare, Vinay A. Bavdekar et al. “SCALING AND DISCRIMINATION ISSUES IN MONITORING, FAULT DETECTION AND DIAGNOSIS.” (2007). 297-302.
50. M. Dunn, R. Bruno et al. “Effectiveness of and challenges faced by surveillance systems…” Drug Testing and Analysis (2011). 635-41 .
51. B. Livshits and M. Lam. “Finding Security Vulnerabilities in Java Applications with Static Analysis.” USENIX Security Symposium (2005).
52. N. Jovanović, Christopher Krügel et al. “Pixy: a static analysis tool for detecting Web application vulnerabilities.” IEEE Symposium on Security and Privacy (2006). 6 pp.-263.
53. Rahma Mahmood and Q. Mahmoud. “Evaluation of Static Analysis Tools for Finding Vulnerabilities in Java and C/C++ Source Code.” arXiv.org (2018).
54. Ibéria Medeiros, N. Neves et al. “Detecting and Removing Web Application Vulnerabilities with Static Analysis and Data Mining.” IEEE Transactions on Reliability (2016). 54-69.
55. Marco Pistoia, S. Chandra et al. “A survey of static analysis methods for identifying security vulnerabilities in software systems.” IBM Systems Journal (2007). 265-288.
56. A. Braga, R. Dahab et al. “Understanding How to Use Static Analysis Tools for Detecting Cryptography Misuse in Software.” IEEE Transactions on Reliability (2019). 1384-1403.
57. P. Nunes, Ibéria Medeiros et al. “Benchmarking Static Analysis Tools for Web Security.” IEEE Transactions on Reliability (2018). 1159-1175.
58. 张林,曾庆凯.软件安全漏洞的静态检测技术[J].计算机工程,2008,No.305(12):157-159.
59. 梁彬,侯看看,石文昌等.一种基于安全状态跟踪检查的漏洞静态检测方法[J].计算机学报,2009,32(05):899-909.
60. Justin Smith, Brittany Johnson et al. “Questions developers ask while diagnosing potential security vulnerabilities with static analysis.” ESEC/SIGSOFT FSE (2015).
61. B. Boehm. “Software Engineering Economics.” IEEE Transactions on Software Engineering(1993).
62. Tukaram Muske and Alexander Serebrenik. “Survey of Approaches for Postprocessing of Static Analysis Alarms.” ACM Computing Surveys (2022). 1 - 39.
63. Quinn Hanam, Lin Tan et al. “Finding patterns in static analysis alerts: improving actionable alert ranking.” IEEE Working Conference on Mining Software Repositories (2014).
64. S. Heckman and L. Williams. “A Model Building Process for Identifying Actionable Static Analysis Alerts.” International Conference on Information Control Systems & Technologies (2009). 161-170.
65. S. Heckman. “Adaptively ranking alerts generated from automated static analysis.” ACM Crossroads (2007). 1 - 11.
66. 卢正军,方勇,刘亮等.基于上下文信息的Android恶意行为检测方法[J].计算机工程,2018,44(07):150-155.
67. Pavel Avgustinov, A. Baars et al. “Tracking Static Analysis Violations over Time to Capture Developer Characteristics.” 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering (2015). 437-447.
68. . “Improving the Usefulness of Alerts Generated by Automated Static Analysis Tools.” (2017).
69. M. Gegick and Laurie A. Williams. “Toward the Use of Automated Static Analysis Alerts for Early Identification of Vulnerability- and Attack-prone Components.” Second International Conference on Internet Monitoring and Protection (ICIMP 2007) (2007). 18-18.
70. D. Baca. “Identifying Security Relevant Warnings from Static Code Analysis Tools through Code Tainting.” ARES (2010). 386-390.
71. Marcus Nachtigall, Michael Schlichtig et al. “A large-scale study of usability criteria addressed by static analysis tools.” International Symposium on Software Testing and Analysis (2022).
72. S. Staiger. “Reverse Engineering of Graphical User Interfaces Using Static Analyses.” Working Conference on Reverse Engineering (2007). 189-198.
73. Gerald B. Imbugwa, Luiz Jonatã Pires de Araújo et al. “A case study comparing static analysis tools for evaluating SwiftUI projects.” (2021).
74. N. Ayewah and W. Pugh. “A report on a survey and study of static analysis users.” DEFECTS '08 (2008).
75. R. Jianu and D. Laidlaw. “An evaluation of how small user interface changes can improve scientists’ analytic strategies.” International Conference on Human Factors in Computing Systems (2012).
76. 交互设计工具的改进与实现 [2018-05-26]
77. 谢丽娟. 基于可用性测试软件UX TOOL界面设计的产品UI研究[D].同济大学,2007.
78. 王蓓. 基于故事板的用户界面原型工具的研究与实现[D].西北大学,2008.
79. 刘笑. 基于手机交互操作流畅度的用户体验研究[D].湖南大学,2019.
80. 董成浩. HTML5上基于手势交互的用户界面开发工具的设计与实现[D].西北大学,2019.
2.3.1. 输出结果分析
尽管输出的内容增加了很多,参考内容从 30 个增加到了 80 个。但依然没有按照预想的讨论论文的内容,主体还是讨论静态分析工具的误报的解决方法,看来还是没有理解问题,或者说问问题的方式不符合大模型的问问题的方式;
针对降误报,这里汇总了 5 个机器学习降误报的五篇论文,省去了我们逐一搜索相关论文的麻烦。看来作为某主题论文的查询工具应该很不错;
给出了 3 个在处理大量告警时的挑战,并给出了响应的解决方发:
有效和高效的处理大量的告警的挑战
缺少对告警的解决方法
语言结构、库、开发框架引入的工具分析问题
前两点,在上一篇中已经讨论过,这里不再细说。第三点提到了建立生态解决污点分析中断的方法。这个是污点分析中遇到的普遍问题,需要通过生态形成统一的业界格式,来完善框架或库的摘要,用于静态分析工具。 给出了 7 个检测漏洞的最佳实践
工具的选择和维护:
选择合适的静态分析工具:在任何分析技术上,没有所谓的“银弹”,专业的问题需要专业的技术; 结合多种静态分析技术:这点很赞同,每个静态分析工具所采用的分析技术不同,适用的场景也会有很大的差异,需要取长补短,以增加检查能力的覆盖度; 关注特定的安全漏洞类型: 需要按照应用的类型关注高危的漏洞,聚焦在核心问题的发现和解决; 定期评估和更新静态分析工具:工具也要与时俱进,这个和以前的病毒库一样,需要及时更新检查能力; 检查左移:工具的能力不同,左移检查的内容是有限度的。详见:构建DevSecOps中的代码三层防护体系 ; 安全培训:工具检查的根本是修复问题,而最根本的是编码人员写出没有漏洞的代码。 思维导图不如为何输出成了英文。前两个还是围绕讨论的论文展开的。其他的点还是涵盖了静态分析主要的关键点。
满意度: 4 分 虽然回答仍然偏离了方向。但仍能够将静态分析的关键点通过论文展开,看来作为专业的学术查询引擎能够给出很大的帮助,特别是对初学者能够快完成爬坡。
3. 总结
尝试了与另一个大模型(秘塔 )对静态分析工具的讨论; 秘塔大模型设置了学术上的三种输出模式:简洁、深入、研究, 依次增加输出内容,且输出内容和相关的论文关联。这对需要了解某个领域的研究现状有很大的帮助; 和大模型的交流需要关注提示词,这个需要花点时间进一步的研究下,以便提高沟通的效率。