CodeQL 文档

硬编码数据被解释为代码

ID: rb/hardcoded-data-interpreted-as-code
Kind: path-problem
Security severity: 9.1
Severity: error
Precision: medium
Tags:
   - security
   - external/cwe/cwe-506
Query suites:
   - ruby-security-extended.qls
   - ruby-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

将硬编码数据(例如包含十六进制数字的字符串文字)解释为代码或导入路径,这在恶意后门代码中很常见,这些代码已植入原本受信任的代码库中,并试图隐藏其真实目的,使其不会被普通读者或自动扫描工具发现。

建议

仔细检查有问题的代码,以确定其来源和真实目的。如果代码是良性的,应该始终可以重写它,而无需依赖动态解释数据作为代码,从而提高清晰度和安全性。

示例

例如,以下简化的 Ruby 版本的后门代码片段,使用这种混淆技术,该代码片段是在流行的 JavaScript event-stream npm 包的依赖项中发现的

def e(r)
  [r].pack 'H*'
end

# BAD: hexadecimal constant decoded and interpreted as import path
require e("2e2f746573742f64617461")

虽然这仅显示了代码的前几行,但它已经看起来非常可疑,因为它获取一个硬编码的字符串文字,对其进行十六进制解码,然后将其用作导入路径。这样做的唯一原因是隐藏要导入的文件的名称。

参考资料

  • ©GitHub, Inc.
  • 条款
  • 隐私