Skip to main content

神医智能修复 🔥

一. 背景#

"安全左移"是指在软件开发生命周期(SDLC)的早期阶段,将安全相关活动(如代码审查、分析、测试等)提前进行,以便尽早发现并防止潜在的缺陷和漏洞。这种做法有助于避免在项目后期才发现问题,届时修复这些问题可能需要耗费大量时间和资源。通过在开发过程的早期阶段识别并解决安全问题,可以显著减少未来可能出现的重大漏洞及其带来的高昂修复成本。

目前,神医安全助手在其原有安全功能基础上推出了“神医助手-增量检测能力”。通过这一能力实现了安全能力的进一步左移,致力于在安全问题尚处于开发初期的编码阶段就予以解决,力争在研发阶段减少风险代码入库,该模式将有效减轻研发后期的修复负担,在为项目的安全保驾护航的同时,助力研发效能的提升。

二. 增量检测-修复能力#

当前,"神医安全助手"功能已经集成至代码提交流程中,它会自动在用户执行在编辑器中进行提交(commit)操作时启动(目前暂不支持命令行形式commit)。此功能的检测范围涵盖所有新增的代码文件以及所有有变更的代码文件。用户无需进行任何手动操作即可触发检测。一旦检测完成,系统将在IDEA的problem栏自动弹出一个神医安全助手-增量代码扫描页签以通知用户本次增量代码的扫描结果。

在检测完成后,"神医安全助手-增量扫描"页签主要包括以下三个部分:

1. 结果概览区域#

这一区域直观地展示了本次commit操作中涉及的代码文件总数,以及被检测出潜在安全问题的文件数量。用户能够迅速获得本次代码提交质量的概览,从而对本次commit的代码的安全性的基本状况有一个初步了解。

2. 功能按钮区#

  • 历史结果按钮:点击即可获取用户历史commit检测数据。用户点击这个按钮,页签会展示出过去一周内(7*24小时)所有存在安全问题的commit操作的增量扫描结果。便于用户追踪和比较近期代码安全趋势,关于历史检测信息,更多细节将在后续章节中详细说明。

3. 漏洞信息展示树#

在这个区域,用户会看到一个结构化的漏洞信息展示树,它详尽地列出了神医安全助手在用户本次提交的过程中所有检测到的,可能存在潜在安全问题的文件路径以及相应的漏洞类型。当用户在展示树中选择特定的漏洞类型时,编辑器区域会自动定位到相应的文件,并且在包含潜在安全漏洞的代码行上用醒目的异色底色进行标注,极大地减轻了研发人员对漏洞代码的进行识别,排查及定位过程的精力消耗,便于研发人员在后期可以快速识别和修正问题。

  • 如果用户不希望当前立刻进行修复,点击关闭当前建议可以为用户提供一个清晰无干扰的代码阅读体验。

  • 如果用户对特定文件的检测结果持有不同意见,他们可以通过右键点击相应的漏洞信息并选择“意见及建议”选项。我们会对您的反馈进行深入分析,并据此对检测规则进行更近一步的调整,进一步优化我们的服务并提高用户体验。

    在代码编辑区,当用户的鼠标指针悬停在被异色高亮的代码段上,将会触发一个包含有详细漏洞修复信息弹窗,这个弹窗同样可以细分为三个部分,可以帮助用户更高效地理解和处理代码中的安全问题:

  • 快速修复按钮:在弹窗的顶端,提供了一个“点击此处,快速修复”按钮。用户在点击该按钮后,将展示一个代码对比视窗,用户能够审视神医安全助手建议修改的代码,并根据自身业务需要和格式规范选择性地将这些更正融入他们的代码库中。

  • 漏洞详情描述:这一部分为用户提供了漏洞的综合信息,主要包括漏洞的名称、影响范围、风险等级和相应的CWE(Common Weakness Enumeration)标识,旨在为用户提供一个关于检出漏洞的有一个更加全面的认识。

  • 修复方案预览:在这里,用户可以预览到“神医安全助手”提出的代码修复草案,可以让用户对神医所提出的解决方案有一个初步认识,有助于用户快速判断该方案的适用性。

三. 历史记录查询#

如果用户想获得历史commit的增量扫描结果,可以在增量扫描后点击左侧的历史记录按钮进行历史记录的查询。

当用户点击“历史记录”按钮后,界面将转至“神医安全助手-增量扫描历史结果”标签页。在此,用户可见的是他们的历史扫描成果,呈现方式类似于增量检测,即通过一个结构化的漏洞信息展示树来清晰地呈现历次检测的详细信息。用户能够根据每次提交(commit)的时间戳,精准地回溯并审查相应提交的检测成果。

  • 假如某次提交之后,相关文件的代码未经修改,用户点击漏洞信息时,编辑器区将自动跳转至对应文件,并在潜在安全风险的代码行上用显眼的异色背景高亮显示,以便用户注意。后续的处理步骤与增量检测的操作流程保持一致。
  • 如果在某次提交之后,文件代码发生了变更,系统会在现有的漏洞信息旁提示用户注意。对于希望继续审查文件安全性的用户,我们推荐使用JoyCoder的“神医安全检查”功能,该功能支持一键对文件级代码进行扫描,可以保证安全漏洞得到有效检测和有效的修复。

四. Q&A#

Q:在我编辑代码后,为什么之前的底色标注不见了?

A:为了优化用户体验,减少干扰,系统设计为在代码编辑后自动清除底色标注。您下一次提交(commit)时,如果代码仍然存在问题,系统将重新进行标注。

Q:不小心点击了历史记录,怎么返回到当前检测结果页面?

A:目前(2.3.12以前版本)神医安全助手尚未支持直接从历史检测页面返回到当前检测页面的功能。若需查看最新的检测记录,您可以在历史页签中根据提交时间找到并查阅相应的记录。(2.3.13版本将支持当前页面与历史页面切换)

Q:为何我的某些提交(commit)的检测结果没有检测结果同时也没有在历史记录中显示?

A:为减少对用户的如果您的本次提交的内容历史记录功能只记录那些检测出漏洞的提交。若您的提交未发现问题,则不会出现在历史记录中。

Q:使用神医安全助手进行检测会影响我的开发流程吗?

A:不会。神医安全助手在后台静默扫描,不会干预或阻碍您的开发工作。

Q:神医安全助手会在我不知情的情况下修改我的代码吗?

A:绝不会。神医安全助手不会在您不知情的情况下自动修改您的代码,只提供潜在问题的修复建议。是否以及如何采纳这些建议,取决于您的代码规范和业务需求。

Q:为什么我点击漏洞信息展示树的漏洞项时,没有看到底色标注?

A:可能有两个原因:

  • 2.3.12版本前底色标注需要在标记区页签切换后才会生效。如果点击后没有标注,请尝试切换编辑区的文件。(备注:2.3.13版本后可以直接生效)
  • 如果您在神医扫描过程中修改了代码,系统将不会对与提交时状态不一致的文件进行漏洞信息标注。

Q:神医安全助手会实时扫描我正在编辑的代码或本地未提交的项目文件吗?

A:不会。神医安全助手仅在您通过IDEA的GUI提交代码时扫描,扫描范围限于提交的文件,并不涉及本地未提交的文件。

Q:神医增量检测能力什么时候上线,如果我有一些问题或者建议我应该联系谁?

A:神医增量检测能力已在2.3.11版本上线,如果您有一些好的建议和使用上的问题,欢迎联系集团安全-黄琛(huangchen79),肖敬先(xiaojingxian),付蔚(fuyu76)

Q:神医增量检测能力如何开启?我可以关闭这个能力吗?

A:用户可以在JoyCoder的设置页面开启神医增量检测能力