You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CodeQL检测YAML配置敏感信息及数据库查询方法?

使用CodeQL检测YAML配置文件敏感信息及数据库查询指南

一、多语言数据库创建的可行性

直接用--language=go,yaml创建数据库完全可行,CodeQL支持同时为多种语言生成数据库,这样你能在同一个数据库里同时查询Go代码和YAML配置文件的内容。

二、检测YAML中的明文敏感信息

1. 编写CodeQL查询(基于YAML语言模型)

CodeQL对YAML有专门的AST解析模型,可通过遍历键值对匹配敏感关键词和明文值,示例查询如下:

import yaml

from YAMLMapping mapping, YAMLNode key, YAMLNode value
where
  // 匹配敏感关键词(不区分大小写)
  key.getText().toLowerCase() matches "%password%" or
  key.getText().toLowerCase() matches "%secret%" or
  key.getText().toLowerCase() matches "%api_key%" or
  key.getText().toLowerCase() matches "%token%"
  // 排除空值和明显占位符(可按需调整)
  and value.getText() != ""
  and not value.getText().matches "%placeholder%"
select mapping, key, value, "疑似明文敏感信息"

2. 自定义规则优化

  • 扩展敏感关键词:比如加上access_key、passphrase等业务相关的敏感字段
  • 强化值校验:可添加正则匹配,比如筛选符合密码复杂度的字符串,或排除测试用假值(如test123)

三、查询YAML数据库的具体步骤

  1. 确认数据库生成完成:执行codeql database create --language=go,yaml <数据库路径>后,等待生成完毕,指定路径下会出现完整数据库文件。
  2. 运行查询的两种方式:
    • CLI方式:
      codeql database analyze <数据库路径> <你的查询文件>.ql --format=csv --output=results.csv
      
    • VS Code插件方式:
      • 安装CodeQL插件,导入已创建的数据库(通过侧边栏"Databases"选项添加)
      • 打开编写好的QL文件,点击右上角"Run Query",即可在面板查看结果

四、注意事项

  • 加密后的敏感值无法通过静态检测识别,需结合动态分析或解密逻辑
  • 上述查询会自动遍历YAML的嵌套层级,无需额外处理子映射
  • 可将常用敏感检测规则封装成CodeQL库,方便跨项目复用

内容的提问来源于stack exchange,提问作者expl0it

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:17:08