问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何理解和处理CodeQL代码扫描结果

创作时间:
作者:
@小白创作中心

如何理解和处理CodeQL代码扫描结果

引用
1
来源
1.
https://learn.microsoft.com/zh-cn/training/modules/codebase-representation-codeql/4-understand-results?ns-enrollment-id=learn.github-github-advanced-security&ns-enrollment-type=learningpath&source=recommendations

CodeQL是一种强大的语义代码分析引擎,能够帮助开发者检测代码中的安全漏洞和质量问题。本文将详细介绍如何查看CodeQL分析结果、处理代码扫描警报,以及如何关闭或删除警报。

在前面的单元中,你创建了一个数据库,并扫描了从代码中提取的文件。 现在,可以查看结果并确定是否有安全漏洞需要解决。

查看 CodeQL 分析的的代码扫描结果

解释的查询结果会自动显示在用于 VS Code 的 CodeQL 扩展的源代码中。 CodeQL CLI 生成的输出结果可以采用多种格式,适用于各种工具。

可以通过修改查询的 select 语句来控制分析结果在源代码中显示的方式。 开发查询时,可以使结果清晰明了,且方便其他用户理解。 在查询控制台或用于 VS Code 的 CodeQL 扩展中编写自己的查询时,对于可以选择的内容没有限制。

如果要使用查询在 GitHub 代码扫描中创建警报,或通过使用 CodeQL CLI 生成有效的分析结果,则需使 select 语句以所要求的格式报告结果。

处理代码扫描警报

可以设置代码扫描以检查存储库中的代码。 可以使用默认的 CodeQL 分析、非 Microsoft 分析或其他类型的分析。 生成的警报并排显示在存储库中。

GitHub 的默认 CodeQL 分析可能包含其他警报属性,而不是包含来自非 Microsoft 工具或自定义查询的结果。 在默认工作流中,代码扫描在默认分支上和拉取请求期间定期分析代码。

每个警报包括以下信息:

  • 代码问题和识别它的工具的名称

  • 触发警报的代码行

  • 警报属性,例如严重性

  • 安全严重性

  • 当问题出现时

  • 问题的性质

信息还包括 CodeQL 分析识别到警报时如何解决问题。 此外,通过 CodeQL 进行代码扫描可以检测代码中的数据流问题。

数据流警报

数据流分析在代码中查找潜在的安全问题,包括:

  • 以损害安全性的方式使用数据。

  • 将危险参数传递给函数。

  • 泄露敏感信息。

代码扫描报告数据流警报时,GitHub 将向你展示数据通过代码移动的方式。 可以使用这些数据流警报来识别泄露敏感信息的代码区域。 此知识助于识别恶意用户攻击的入口点。

严重性级别

默认情况下,严重性为 Error 的任何代码扫描结果都会导致检查失败。 警报严重性级别为 ErrorWarningNote。 可以指定触发代码扫描警报的拉取请求应失败的严重性级别。

安全严重性级别

代码扫描生成的安全查询显示了警报的安全严重性级别。 安全严重性级别为 CriticalHighMediumLow。 GitHub 使用常见漏洞评分系统 (CVSS) 数据来计算警报的安全严重性。

默认情况下,安全严重性为 CriticalHigh 的任何代码扫描结果都会导致检查失败。 可以指定哪个安全严重性级别应导致代码扫描结果检查失败。

关闭代码扫描警报

有两种方法来关闭警报:

消除代码扫描警报

取消显示警报是关闭你认为不需要修复的警报的一种方法。 一个示例是代码中仅用于测试的错误。 如果修复错误所需的工作量大于改进代码的潜在好处,还可以消除警报。

可从代码中的代码扫描注释或“安全性”选项卡上的摘要列表中消除警报。若要从列表中消除警报,请选择“消除警报”菜单,选择消除原因,然后选择“消除警报”按钮。

当您忽略警报时:

  • 它在所有分支中被忽略。

  • 它已从项目的当前警报数量中删除。

  • 它已移动到警报摘要中的“已关闭”列表。 如有必要,可以从此处重新打开它。

  • 已记录关闭警报的原因。

  • 下次运行代码扫描时,相同的代码将不会生成警报。

删除代码扫描警报

如果具有存储库的管理员权限,可以删除警报。 删除警报在以下情况下非常有用:

  • 设置了代码扫描工具,但后来决定将其删除。

  • 使用比要继续使用的查询更大的一组查询配置了 CodeQL 分析。

  • 从工具中删除了一些查询。

  • 想要清理代码扫描结果。

可以从“安全性”选项卡上的摘要列表中删除警报。

删除警报时:

  • 它在所有分支中被删除。

  • 它将从项目的当前警报数量中删除。

  • 它不会添加到警报摘要中的“已关闭”列表。

  • 如果生成警报的代码保持不变,并且在不更改任何配置的情况下再次运行相同的代码扫描工具,则警报会再次出现在分析结果中。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号