关于 code-security
面向编写和审查代码的安全指南技能,覆盖 15 种以上语言、OWASP Top 10、基础设施安全及 28 类规则。它会按语言和代码用途引导检查相关规则,并优先关注高影响问题。
主要功能
- 01覆盖 15 种以上语言
- 02涵盖 28 类安全规则
- 03按语言和代码用途选择规则
- 04提供漏洞与安全代码示例
适用场景
- 01编写代码时检查常见漏洞
- 02审查代码并定位安全问题
- 03检查 Terraform、Kubernetes 和 Docker 配置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ semgrep/ skills --skill code-security安装后在 Claude Code 中输入/code-security确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdrules/_sections.md_template.mdauthentication-jwt.mdbest-practice.mdcode-injection.mdcommand-injection.mdcorrectness.mdcsrf.mddocker.mdgithub-actions.mdinsecure-crypto.mdinsecure-deserialization.mdinsecure-transport.mdkubernetes.mdmaintainability.mdmemory-safety.mdpath-traversal.mdperformance.mdprototype-pollution.mdrace-condition.mdregex-dos.mdsecrets.mdsql-injection.mdssrf.mdterraform-aws.mdterraform-azure.mdterraform-gcp.md详细介绍
代码安全指南
覆盖 15 种以上语言的全面安全规则,帮助编写安全代码。涵盖 OWASP Top 10、基础设施安全和编码最佳实践,共有 28 类规则。
如何使用此技能
主动模式 — 编写或审查代码时,根据所用语言和代码模式自动检查相关漏洞。无需等待用户提出安全相关问题。
响应模式 — 用户询问安全问题时,使用下方的分类找到相关规则文件,然后阅读文件中的详细漏洞代码示例和安全代码示例。
工作流
- 确认语言以及代码的用途(处理输入?查询数据库?读取文件?)
- 检查下方的相关规则 — 优先关注影响严重程度为「严重」和「高」的规则
- 从
rules/中阅读具体规则文件,查看该语言的详细代码示例 - 应用安全模式;如果是在审查代码,则标记存在漏洞的模式
特定语言的优先规则
使用以下语言编写代码时,请先检查这些规则:
| 语言 | 优先检查的规则 |
|---|---|
| Python | SQL 注入、命令注入、路径遍历、代码注入、SSRF、不安全的加密 |
| JavaScript/TypeScript | XSS、原型污染、代码注入、不安全的传输、CSRF |
| Java | SQL 注入、XXE、不安全的反序列化、不安全的加密、SSRF |
| Go | SQL 注入、命令注入、路径遍历、不安全的传输 |
| C/C++ | 内存安全、不安全函数、命令注入、路径遍历 |
| Ruby | SQL 注入、命令注入、代码注入、不安全的反序列化 |
| PHP | SQL 注入、XSS、命令注入、代码注入、路径遍历 |
| HCL/YAML | Terraform(AWS/Azure/GCP)、Kubernetes、Docker、GitHub Actions |
分类
严重影响
- SQL 注入(
rules/sql-injection.md)- 使用参数化查询,绝不拼接用户输入 - 命令注入(
rules/command-injection.md)- 避免在 Shell 命令中使用用户输入,改用安全 API - XSS(
rules/xss.md)- 转义输出,使用框架提供的保护措施 - XXE(
rules/xxe.md)- 在 XML 解析器中禁用外部实体 - 路径遍历(
rules/path-traversal.md)- 验证并清理文件路径 - 不安全的反序列化(
rules/insecure-deserialization.md)- 绝不反序列化不可信数据 - 代码注入(
rules/code-injection.md)- 绝不对用户输入调用 eval() - 硬编码机密(
rules/secrets.md)- 使用环境变量或机密管理器 - 内存安全(
rules/memory-safety.md)- 防止缓冲区溢出和释放后使用(C/C++)
高影响
- 不安全的加密(
rules/insecure-crypto.md)- 使用 SHA-256 或更高强度的算法、AES-256,避免使用 MD5/SHA1/DES - 不安全的传输(
rules/insecure-transport.md)- 使用 HTTPS,并验证证书 - SSRF(
rules/ssrf.md)- 验证 URL,使用允许列表 - JWT 问题(
rules/authentication-jwt.md)- 始终验证签名 - CSRF(
rules/csrf.md)- 在会改变状态的请求中使用 CSRF 令牌 - 原型污染(
rules/prototype-pollution.md)- 验证 JavaScript 中的对象键
基础设施
- Terraform AWS/Azure/GCP(
rules/terraform-aws.md、rules/terraform-azure.md、rules/terraform-gcp.md)- 加密、最小权限、禁止公开访问 - Kubernetes(
rules/kubernetes.md)- 不使用特权容器,以非 root 用户身份运行 - Docker(
rules/docker.md)- 不以 root 身份运行,固定镜像版本 - GitHub Actions(
rules/github-actions.md)- 避免脚本注入,固定 Action 版本
中/低影响
- 正则表达式 DoS(
rules/regex-dos.md)- 避免灾难性回溯 - 竞争条件(
rules/race-condition.md)- 使用适当的同步机制 - 正确性(
rules/correctness.md)- 避免常见的逻辑错误 - 最佳实践(
rules/best-practice.md)- 通用安全编码模式
请参阅 rules/_sections.md,查看包含 CWE/OWASP 参考资料的完整索引。
快速参考
| 漏洞 | 关键防护措施 |
|---|---|
| SQL 注入 | 使用参数化查询 |
| XSS | 对输出进行编码 |
| 命令注入 | 避免使用 shell,改用 API |
| 路径遍历 | 验证路径 |
| SSRF | 使用 URL 允许列表 |
| 密钥 | 使用环境变量 |
| 加密 | SHA-256、AES-256 |
评论
支持 Markdown