安全软件
点击放大

![OpenSSF Best Practices]()
![OpenSSF Scorecard]()
!build
!CodeQL
![Go Reference]()
![Go Report Card]()
![SLSA 3]()
![View site - GH Pages]()
poutineCreated by BoostSecurity.io, poutine is a security scanner that detects misconfigurations and in the build pipelines of a repository. It supports parsing CI workflows from GitHub Actions and Gitlab CI/CD. When given an access token with read-le, poutine can analyze all the repositories of an organization to quickly gain insights into the security posture of the organization's software supply chain.
<table>
<td>
!Finding raised by poutine about "Arbitrary Code Execution from Untrusted Code Changes"
</td>
</table>
See the documentation for a list of rules currently supported by poutine.
poutine?In French, the word "poutine", when not referring to the dish, can be used to mean "messy". Inspired by the complexity and intertwined dependencies of modern open-source projects, poutine reflects both a nod to our Montreal roots and the often messy, complex nature of securing software supply chains.
To install poutine, download the latest release from the releases page and add the binary to your $PATH.
<!-- TODO: cosign instructions? -->
#### Homebrew
#### Docker
#### GitHub Actions
#### Analyze a local repository
#### Analyze a remote GitHub repository
#### Analyze all repositories in a GitHub organization
#### Analyze all projects in a self-hosted Gitlab instance
See .poutine.sample.yml for an example configuration file.
#### check telemetry
By default, poutine reaches out at most once every 24 hours to check whether a newer release is a. The request reports the current poutine , an anonymous instance identifier persisted in ~/.poutine/config.yaml, and a count of CLI in since the last check. No source, repository, or finding data is sent. To disable, use any of:
--disable- flagPOUTINE_DISABLE_=1 en disable: true in .poutine.ymlpoutine supports custom Rego rules to extend its security scanning capabilities. You can write your own rules and include them at runtime.
#### Configuration
Create a .poutine.yml configuration file in your current working directory, or keep it alongside your other GitHub metadata at .github/poutine.yml — both are auto-discovered. When both exist, .poutine.yml at the repo root wins. To use a custom path, pass the --config flag (which takes precedence over both):
In your configuration file, specify the path(s) to your custom rules using the include directive:
#### Writing Custom Rules
Custom Rego rules must:
1. Be saved as *.rego files in the included directory
2. Follow the package naming con: package rules.<rule_name>
3. Define a rule with metadata
4. Define a results set containing findings
Example custom rule:
Key points:
import data.poutine and import rego.v1 for modern Rego syntax and poutine utilitiesrule := poutine.rule(rego.metadata.chain()) to extract metadata from METADATA commentspackage name determines the rule identifier (e.g., package rules.custom_injection → rule ID: custom_injection)title, description, and levellevel to note, warning, or errorpoutine.finding(rule, pkg.purl, {...}) to create findings that match the poutine schemaresults set should contain findings with fields like path, line, job, step, detailsFor more examples, see:
poutine supports skipping (acknowledging) specific findings that are not relevant in your context. This can be useful when:
To acknowledge findings, you can either:
1. Add a skip section to your .poutine.yml configuration file
2. Use the --skip command-line flag (e.g., --skip rule_name) for one-time skipping
#### Configuration File
Add a skip section to your .poutine.yml configuration file. Each skip rule can filter findings by:
job: Filter by job namelevel: Filter by se level (note, warning, error)path: Filter by workflow file pathrule: Filter by rule namepurl: Filter by package URLosv_id: Filter by OSV IDExample configuration:
For more examples, see .poutine.sample.yml.
#### Command Line
You can also skip rules on the command line using the --skip flag. Note that the command-line flag only supports skipping rules by name globally and does not support the granular filtering options (job, path, level, etc.) a in the configuration file.
This is useful for one-time analysis or when you want to temporarily ignore specific rules without modifying your configuration file. For more granular control (e.g., skipping a rule only in specific workflows), use the configuration file instead.
poutine can be integrated with AI coding assistants like Claude Code, Gemini, etc. through the Model Context Protocol (MCP). This allows AI assistants to analyze repositories and CI/CD pipelines directly from your de en.
For detailed setup instructions for your specific AI coding tool, see the MCP Integration Guide.
Building poutine requires Go 1.26+.
For examples of in GitHub Actions workflows, you can explore the Messy poutine GitHub organization. It showcases real-world from open-source projects readily exploitable for educational purposes.
To get started with some hints, try using poutine to analyze the messypoutine organization:
You may submit the flags you find in a private disclosure.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
开发语言:Go
Star 数:522
该项目属于安全软件方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕poutine, a supply chain vulnerability scanner for build pipelines展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | poutine - poutine, a supply chain vulnerability scanner for |
| 所属分类 | 安全软件 |
| 发布作者 | admin |
| 发布时间 | 2026-10-05 22:36:10 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 368 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |