github/securitylab
GitHub: github/securitylab
这是 GitHub 安全实验室维护的安全研究资源仓库,提供 CodeQL 查询示例、漏洞披露最佳实践和概念验证代码供社区学习参考。
Stars: 1597 | Forks: 281
# GitHub 安全实验室
这是 [GitHub 安全实验室](https://securitylab.github.com/) 的主要 git 仓库。
我们将其用于以下主要目的:
* 我们在 [docs](/docs) 中与社区分享有关安全研究和漏洞披露的最佳实践
* 我们使用 [issues on this repo](https://github.com/github/securitylab/issues?q=is%3Aissue+is%3Aopen+label%3A%22All+For+One%22) 来追踪 CodeQL [bounty requests](https://securitylab.github.com/bounties)。
* 我们用它来发布一些概念验证漏洞利用程序(在漏洞修复后)。这些 PoC 可以在 [SecurityExploits](SecurityExploits) 子目录中找到。
* CodeQL 查询的示例,可以在 [CodeQL_Queries](CodeQL_Queries) 子目录中找到。
## CodeQL 资源
**此部分由您掌控!** 您想与社区分享一个很酷的 CodeQL 查询吗?或者很棒的教程或视频,或一些有用的工具?我们欢迎您的贡献。请提交 pull request。请参阅下面的 [Contributing](#Contributing)。
### 官方资源
* [CodeQL 文档](https://codeql.github.com/docs/)
* [CodeQL GitHub 仓库](https://github.com/github/codeql)
### 示例查询
* Java
* [Apache Struts CVE-2018-11776](CodeQL_Queries/java/Apache_Struts_CVE-2018-11776)
* [Spring 应用程序中的不安全 JMS 反序列化](https://github.com/silentsignal/jms-codeql/)
* C/C++
* [Apple XNU icmp_error CVE-2018-4407](CodeQL_Queries/cpp/XNU_icmp_error_CVE-2018-4407)
* [Facebook Fizz 整数溢出漏洞 (CVE-2019-3560)](CodeQL_Queries/cpp/Facebook_Fizz_CVE-2019-3560)
* [libssh2 中的错误代码处理](CodeQL_Queries/cpp/libssh2_eating_error_codes)
* [Itergator](https://github.com/trailofbits/itergator) — 迭代器失效的库和查询([博客文章](https://blog.trailofbits.com/2020/10/09/detecting-iterator-invalidation-with-codeql/))
* Javascript
* [Etherpad CVE-2018-6835](CodeQL_Queries/javascript/Etherpad_CVE-2018-6835)
* C#
* [C# Zip Slip 演示](CodeQL_Queries/csharp/ZipSlip)
* GitHub Actions:
* [带有显式 pull request 检出的 pull_request_target](https://github.com/github/codeql/blob/main/javascript/ql/src/experimental/Security/CWE-094/UntrustedCheckout.ql)
* [从用户可控的 Actions 上下文进行命令注入](https://github.com/github/codeql/blob/main/javascript/ql/src/experimental/Security/CWE-094/ExpressionInjection.ql)
### 文章
* [CodeQL 实践入门](https://jorgectf.gitlab.io/blog/post/practical-codeql-introduction/)
### 视频
* 会议演讲/研讨会:
* [使用 CodeQL 查找 JavaScript 中的安全漏洞 - GitHub Satellite 2020](https://www.youtube.com/watch?v=pYzfGaLTqC0)
* [使用 CodeQL 查找 Java 中的安全漏洞 - GitHub Satellite 2020](https://www.youtube.com/watch?v=nvCd0Ee4FgE)
* [CodeQL 作为审计预言机 - POC 2020](https://www.youtube.com/watch?v=XmAEgl8bVhg)
* [mbuf-oflow:在 iOS/MacOS 网络代码中查找漏洞](https://www.youtube.com/watch?v=0EHP2gzwVAY)
* 来自 Semmle 时代的 CodeQL 演示(简短的 YouTube 视频):
* [PII 数据泄露:使用 CodeQL 识别日志中的个人信息](https://www.youtube.com/watch?v=hHaOxbyqy44)
* [漏洞狩猎:利用 QL 寻找漏洞](https://www.youtube.com/watch?v=irrYp3wdtsw)
* [在 Java 中查找不安全反序列化](https://www.youtube.com/watch?v=XsUcSd75K00)
* [在 Libssh2 中查找整数溢出](https://www.youtube.com/watch?v=czXicfULOfk)
### 工具
* 编辑器插件
* [Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql)(官方)
* [Neovim](https://github.com/pwntester/codeql.nvim)
* [Emacs](https://github.com/anticomputer/emacs-codeql)
* 代码生成
* [cqlgen](https://github.com/gagliardetto/cqlgen) — 用 Go 编写的 CodeQL 生成库。
* [codemill](https://github.com/gagliardetto/codemill) — 面向 Go 的 CodeQL 模型生成器,带有 Web UI。
## 免责声明
GitHub 安全实验室的建议是慷慨提供的,最终由接收者决定是否采纳。这适用于我们通过书面或音频内容、会议、社区空间中的回答或非正式办公时间提供的建议。
## 贡献
我们欢迎对 [CodeQL_Queries](CodeQL_Queries) 子目录和本 README 的 [CodeQL 资源](#codeql-resources) 部分做出贡献。
如果您编写了一个很棒的 CodeQL 想与社区分享,请提交 pull request 将其添加到 [CodeQL_Queries](CodeQL_Queries) 子目录。将您的查询放在自己的新子目录中。例如:`CodeQL_Queries/cpp/mynewsubdir/mycoolquery.ql`。当然,如果您认为您的查询可能有资格获得 [bounty](https://securitylab.github.com/bounties),那么您应该改为向 [codeql](https://github.com/github/codeql) 仓库提交 pull request,因为我们不为此仓库中的查询提供奖励。此仓库中的查询通常是高度专业化的查询,只对特定代码库有意义,例如专门针对 [Chrome](CodeQL_Queries/cpp/Chrome) 或 [Apache Struts](CodeQL_Queries/java/Apache_Struts_CVE-2018-11776) 的查询,或帮助您探索代码而不一定发现漏洞的实用查询。此类查询不适合 [codeql](https://github.com/github/codeql) 仓库,该仓库仅用于通用查询。
如果您想在本 README 的 [CodeQL 资源](#codeql-resources) 部分添加链接,以分享一个不错的视频或很棒的工具,只需在相应部分添加另一个项目符号即可。
* 每个项目符号应由一个超链接标题和简短描述组成。如果标题已经不言自明,则简短描述是可选的。
* 请将新项目符号添加在列表底部。将来,我们可能会选择其他排序方式,例如按字母顺序排序,但目前它只是一个顺序列表。
请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)、[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) 和 [LICENSE.md](LICENSE.md),了解我们关于贡献指南和许可证的更多信息。
标签:Apache Struts, C/C++安全, CodeQL, CVE-2018-11776, CVE-2018-4407, CVE-2019-3560, C#安全, GHAS, GitHub Security Lab, JavaScript安全, Java安全, JS文件枚举, PoC, Spring Framework, UML, 二进制分析, 云安全运维, 安全专业人员, 安全最佳实践, 安全评估工具, 客户端加密, 提示注入防御, 数据可视化, 暴力破解, 概念验证, 源代码安全, 漏洞修复, 漏洞披露, 网络安全培训, 错误基检测, 静态代码分析