#4857·trufflehog

版本输入应默认为动作的发布版本, 而非最新版本

作者: martindolezal创建于 2026年4月1日更新于 2026年9月2日
标签enhancement

□ 问题 action.yml'中的version'输入默认为`最': https://GitHub.com/trufflesecurity/trufflehog/blob/main/action.yml 互联网档案馆的存檔,存档日期2014-12-21.

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 输入 : 版本 : 默认: “ slatest” 说明:扫描时使用这个 " 松露 " cli版本。 需要: 错误


这意味着,当用户将行动归结为特定承诺的SHA(如[GitHub的安全加固指 所建议)(https://docs.GitHub.com/en/actions/security-guides/security-hardening- for-ZGitHub-actions#using-Ter-parti-actions)时所显示的Docker图像仍然是ghcr.io/trfflesecurity/trufflehog:latest——一个可随时改变的可变标记.

例如,pitching to the v3.93.8 发布SHA:
`用途:松露安全/松露霍克@6c05c4a00b91a542267d8e32a8254774799d68d#v3.93.8'
仍然导致最新的图像被拉出,而不是v3.93.8. 在工作流程日志中可以看到这一点。 动作码被固定,但实际运行在容器内的扫描器二进制不是.

这就造成了两个层次的供应链问题:

行动代码——通过承诺(SHA)
Docker 图像——未绑定,默认为最新QQ
遵循GitHub建议SHA为动作定下钉子的用户,合理地期望这能为动作的整个行为定下钉子,而不仅仅是包装脚本.

目前的工作
用户必须手动指定带有标签和摘要的版本输入:

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
使用:松露安全/松露霍克@586f66d7886cd0b037c7c245d4a6e34ef357ab10#3.94.1
改为:
版本:"3.94.1@sha256:c6cae63b2ff9254c5f06848d439e31902de625c14f4771d371deff4106688c60".

这虽然可行,但需要用户手动向上浏览图像摘要,并将其与动作版分开维护——Depabot等工具不能自动化,因为版本输入是带有:块的不透明字符串.

拟议解决办法 每一份贴有标签的发布都应将“版本”默认值设定为带有图像摘要的自发布版本,使其完全不可改变。 例如,在v3.94.1发布中:

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 输入 : 版本 : 默认:"3.94.1@sha256:c6cae63b2ff9254c5f06848d439e31902de625c14f4771d371deff4106688c60" 说明:扫描时使用这个 " 松露 " cli版本。 默认动作的发布版本被图像摘要所粘住. 需要: 错误


这样一来,将动作SHA自动将相匹配的Docker图像接上. 版本输入仍然可供需要的用户使用,但默认是安全的和决定性的。

将图像摘要包含在默认情况下可能要求双相放出(先构建并推出图像,再将摘要写回动作.yml,再标记). 如果这太破坏性或不可能,简单地将默认从"最晚"改为发布版本标记(例如"3.94.1")至少可以防止无意的版本漂移,尽管它不会保护被破坏的注册,因为标记是可变的. 只有文摘能提供真正的不可磨灭性.

鉴于最近针对安全工具的供应链攻击:
- 说吧
. . . . . . .

内容来源: trufflesecurity/trufflehog