stnert / poutine

boostsecurityio/poutine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OpenSSF Best Practices OpenSSF Scorecard build CodeQL Go Reference Go Report Card SLSA 3

poutine

Created by BoostSecurity.io, poutine is a security scanner that detects misconfigurations and vulnerabilities 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-level access, poutine can analyze all the repositories of an organization to quickly gain insights into the security posture of the organization's software supply chain.

Finding raised by poutine about "Arbitrary Code Execution from Untrusted Code Changes"

See the documentation for a list of rules currently supported by poutine.

Why 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.

Getting Started

Installation

To install poutine, download the latest release from the releases page and add the binary to your $PATH.

Homebrew

brew install boostsecurityio/tap/poutine

Docker

docker run -e GH_TOKEN ghcr.io/boostsecurityio/poutine:latest

GitHub Actions

...
jobs:
  poutine:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
      contents: read
    steps:
    - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
#################################################################################################
    - name: poutine - GitHub Actions SAST
      uses: boostsecurityio/poutine-action@main # We recommend to use a tagged version and pin it
#################################################################################################
    - name: Upload poutine SARIF file
      uses: github/codeql-action/upload-sarif@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10
      with:
        sarif_file: results.sarif

Usage

poutine [options] [command] [arguments]

Analyze a local repository

poutine analyze_local .

Analyze a remote GitHub repository

poutine -token "$GH_TOKEN" analyze_repo org/repo

Analyze all repositories in a GitHub organization

poutine -token "$GH_TOKEN" analyze_org org

Analyze all projects in a self-hosted Gitlab instance

poutine -token "$GL_TOKEN" -scm gitlab -scm-base-uri https://gitlab.example.com analyze_org my-org/project

Configuration Options

-token          SCM access token (required for the commands analyze_repo, analyze_org) (env: GH_TOKEN)
-format         Output format (default: pretty, json, sarif)
-scm            SCM platform (default: github, gitlab)
-scm-base-uri   Base URI of the self-hosted SCM instance
-threads        Number of threads to use (default: 2)
-verbose        Enable debug logging

Building from source

Building poutine requires Go 1.22.

git clone https://github.com/boostsecurityio/poutine.git
cd poutine
make build

See Also

For examples of vulnerabilities in GitHub Actions workflows, you can explore the Messy poutine GitHub organization. It showcases real-world vulnerabilities from open-source projects readily exploitable for educational purposes.

To get started with some hints, try using poutine to analyze the messypoutine organization:

poutine -token `gh auth token` analyze_org messypoutine 

You may submit the flags you find in a private vulnerability disclosure.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

About

boostsecurityio/poutine

License:Apache License 2.0


Languages

Language:Go 83.6%Language:Open Policy Agent 16.2%Language:Makefile 0.1%