Elixir Security Review

自动检测 Elixir 代码中的注入、原子耗尽和密钥管理漏洞,保障代码安全。

已扫描
适合谁
Elixir 开发者、代码安全审计人员
不适合谁
非 Elixir 项目维护者、无代码审查需求的普通用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @anderskev/elixir-security-review

Skill 说明

命令、参数、文件名以原文为准

Elixir 安全审查

快速参考

问题类型参考文档
Code.eval_stringbinary_to_term[references/code-injection.md](references/code-injection.md)
String.to_atom 的风险[references/atom-exhaustion.md](references/atom-exhaustion.md)
配置、环境变量[references/secrets.md](references/secrets.md)
ETS 可见性、进程字典[references/process-exposure.md](references/process-exposure.md)

审查清单

严重(阻止合并)

  • [ ] 用户输入中未使用 Code.eval_string/1
  • [ ] 未经信任的数据未使用 :safe 选项调用 :erlang.binary_to_term/1
  • [ ] 外部输入中未使用 String.to_atom/1
  • [ ] 源码中未硬编码密钥

重要

  • [ ] ETS 表使用了适当的访问控制
  • [ ] 进程字典中未存储敏感数据
  • [ ] 未根据用户输入动态创建模块
  • [ ] 文件操作中防止路径遍历攻击

配置要求

  • [ ] 密钥从环境变量加载
  • [ ] 配置文件 config/*.exs 中未提交密钥
  • [ ] 部署密钥使用运行时配置

合法模式(不标记)

  • **编译时常量上的 String.to_atom** — 编译时创建的原子是安全的
  • **开发/测试环境中的 Code.eval_string** — 工具链可能需要此功能
  • **公开访问的 ETS 表(:public)** — 明确设计为共享时合法
  • **使用 :safe 选项的 binary_to_term** — 显式启用安全模式

上下文敏感规则

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

硬性检查项(报告前必须完成)

针对每个计划报告的问题,按顺序完成以下步骤。未通过前一步不得进入下一步。

  1. 定位标识 — 报告包含 [FILE:LINE](或行范围),且该位置来自当前文件内容,路径在本仓库中可解析。
  2. 上下文阅读 — 已完整阅读包含可疑代码的函数或模块部分,而非仅查看 diff 片段或摘要。
  3. 外部输入声明(若问题依赖“用户/不可信输入”)—— 能明确指出一个具体的数据入口(如 conn.paramsJason.decode!/1 的结果、上传文件路径、来自其他节点的消息),或因值为编译时确定、仅用于测试或内部使用而放弃该发现。
  4. 协议验证 — 已满足 [review-verification-protocol](../review-verification-protocol/SKILL.md) 中的预报告步骤(若未满足,则不生成报告)。

提交前准备

每条发现请使用如下格式:[FILE:LINE] 问题标题

硬性检查项 4 要求使用 [review-verification-protocol](../review-verification-protocol/SKILL.md);将其作为完整的预报告检查清单和问题类型验证依据(其内容超出本技能摘要范围)。

A
@anderskev

已收录 7 个 Skill

相关推荐