mcpField
E
elixir-security-review

elixir-security-review

github.com/existential-birds安全85104 次安装11 周前更新
代码仓库

关于 elixir-security-review

面向 Elixir 代码的安全审查技能,按严重、主要和配置问题组织检查项。它强调结合上下文判断,并要求报告问题前核实代码位置与依据。

主要功能

  1. 01代码注入与不安全 term 检查
  2. 02Atom 耗尽风险检查
  3. 03密钥与配置检查
  4. 04ETS 和进程数据检查
  5. 05基于上下文的审查门槛

适用场景

  1. 01合并前审查 Elixir 代码
  2. 02检查外部输入处理
  3. 03审计密钥与运行时配置
  4. 04结合源码上下文核实问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/existential-birds/beagle --skill elixir-security-review

安装后在 Claude Code 中输入/elixir-security-review确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
atom-exhaustion.md
code-injection.md
process-exposure.md

详细介绍

Elixir 安全审查

快速参考

问题类型参考资料
Code.eval_string、binary_to_termreferences/code-injection.md
String.to_atom 的风险references/atom-exhaustion.md
配置、环境变量references/secrets.md
ETS 可见性、进程字典references/process-exposure.md

审查清单

严重(阻止合并)
  • 不对用户输入使用 Code.eval_string/1
  • 不在不可信数据上使用未带 :safe 的 :erlang.binary_to_term/1
  • 不对外部输入使用 String.to_atom/1
  • 源代码中没有硬编码的机密信息
重大
  • ETS 表采用适当的访问控制
  • 进程字典中没有敏感数据
  • 不根据用户输入动态创建模块
  • 文件操作中已防止路径遍历
配置
  • 从环境变量加载机密信息
  • 没有将 config/*.exs 中的机密信息提交到 git
  • 部署机密信息使用运行时配置

有效模式(不要标记)

  • 对编译时常量使用 String.to_atom - 编译时创建的原子是安全的
  • 在 dev/test 中使用 Code.eval_string - 工具可能需要此功能
  • ETS :public 表 - 有意共享时是有效的
  • 使用 :safe 的 binary_to_term - 使用了明确的安全选项

上下文相关规则

问题仅在以下情况下标记
String.to_atom输入来自外部来源(用户、API、文件)
binary_to_term数据来自不可信来源
ETS :public包含敏感数据

硬性门槛(报告前)

对计划报告的每项发现,按顺序完成以下步骤。通过条件满足前不得继续。

  1. 位置依据 — 发现中包含 [FILE:LINE](或行范围),且该位置是从当前文件内容中复制的;路径在此仓库中有效。
  2. 读取相关范围 — 阅读包含被标记代码的完整函数或模块片段,而不只是差异片段或摘要。
  3. 外部数据依据(仅当发现依赖于“用户/不可信输入”时)— 能指出一个具体的入口(例如 conn.params、Jason.decode!/1 的结果、上传的文件路径、来自另一个节点的消息),或者根据上下文相关规则,如果该值是编译时、仅用于测试或内部数据,则放弃该发现。
  4. 协议 — 此项满足 review-verification-protocol 中报告前的步骤(若未满足,则不报告发现)。

提交发现前

每项发现使用以下格式:[FILE:LINE] ISSUE_TITLE。

硬性门槛 4 要求遵循 review-verification-protocol;请将其作为完整的报告前检查清单和问题类型核验流程(其范围超出此技能摘要)。

评论

支持 Markdown