文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Whispers识别静态结构化文本中的硬编码敏感信息

2024-12-02 11:02

关注

检测功能

支持的格式

Whispers本质上来说是一款结构化的问版本解析工具,而不是一个代码分析工具。

下面列出的是当前版本Whispers支持的数据格式:

Python3文件会以AST进行解析,因为这是原生语言支持。

声明和赋值格式

该工具可以将下列语言文件解析为文本,并检测常见的变量声明和赋值模式:

特殊格式支持

工具安装

通过PyPI安装:

  1. pip3 install whispers 

GitHub安装:

  1. git clone https://github.com/Skyscanner/whispers  
  2. cd whispers  
  3. make install 

工具使用

命令行接口:

  1. whispers --help 
  2.  
  3. whispers --info 
  4.  
  5. whispers source/code/fileOrDir 
  6.  
  7. whispers --config config.yml source/code/fileOrDir 
  8.  
  9. whispers --output /tmp/secrets.yml source/code/fileOrDir 
  10.  
  11. whispers --rules aws-id,aws-secret source/code/fileOrDir 
  12.  
  13. whispers --severity BLOCKER,CRITICAL source/code/fileOrDir 
  14.  
  15. whispers --exitcode 7 source/code/fileOrDir 

Python:

  1. from whispers.cli import parse_args 
  2.  
  3. from whispers.core import run 
  4.  
  5.   
  6.  
  7. src = "tests/fixtures" 
  8.  
  9. configfile = "whispers/config.yml" 
  10.  
  11. args = parse_args(["-c", configfile, src]) 
  12.  
  13. for secret in run(args): 
  14.  
  15.   print(secret) 

工具配置

Whispers工具支持多种配置选项,我们可以根据需要来配置是否在结果中互殴文件路径、密钥或其他值等。config.yml的参考格式如下:

  1. include: 
  2.  
  3.   files: 
  4.  
  5.     - "**test*" 
  6.  
  7.     - "**/tests*" 
  8.  
  9.   keys: 
  10.  
  11.     - ^foo 
  12.  
  13.   values: 
  14.  
  15.     - bar$ 
  16.  
  17.   
  18.  
  19. rules: 
  20.  
  21.   starks: 
  22.  
  23.     message: Whispers from the North 
  24.  
  25.     severity: CRITICAL 
  26.  
  27.     value: 
  28.  
  29.       regex: (Aria|Ned) Stark 
  30.  
  31.       ignorecase: True 

最快的配置方法就是将config.yml文件拷贝至一个新的文件中,然后直接将其以参数形式传递给Whispers:

  1. whispers --config config.yml --rules starks src/file/or/dir 

自定义规则

我们可以通过下列方式,在whispers/rules文件中添加和编辑自己的自定义规则:

  1. rule-id:  # unique rule name 
  2.  
  3.   description: Values formatted like AWS Session Token 
  4.  
  5.   message: AWS Session Token  # report will show this message 
  6.  
  7.   severity: BLOCKER           # one of BLOCKER, CRITICAL, MAJOR, MINOR, INFO 
  8.  
  9.   
  10.  
  11.   key:        # specify key format 
  12.  
  13.     regex: (aws.?session.?token)? 
  14.  
  15.     ignorecase: True   # case-insensitive matching 
  16.  
  17.   
  18.  
  19.   value:      # specify value format 
  20.  
  21.     regex: ^(?=.*[a-z])(?=.*[A-Z])[A-Za-z0-9\+\/]{270,450}$ 
  22.  
  23.     ignorecase: False  # case-sensitive matching 
  24.  
  25.     minlen: 270        # value is at least this long 
  26.  
  27.     isBase64: True     # value is base64-encoded 
  28.  
  29.     isAscii: False     # value is binary data when decoded 
  30.  
  31.     isUri: False       # value is not formatted like a URI 
  32.  
  33.   
  34.  
  35.   similar: 0.35        # maximum allowed similarity between key and value 
  36.  
  37.                        # (1.0 being exactly the same) 

插件

Whispers中所有的解析功能都是通过插件实现的,每一个插件都会使用pairs()方法实现一个类,并返回匹配规则的键值对:

  1. class PluginName: 
  2.  
  3.     def pairs(self, file): 
  4.  
  5.         yield "key", "value" 

项目地址

Whispers:【GitHub传送门

 

来源:FreeBuf内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯