Skip to content

security

security #57

Workflow file for this run

---
name: security
on:
schedule:
- cron: "0 2 * * *"
workflow_call:
concurrency:
group: security-${{ github.ref }}
cancel-in-progress: true
jobs:
gitleaks:
name: gitleaks
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
trivy:
name: trivy fs scan
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: aquasecurity/trivy-action@master
with:
scan-type: fs
scan-ref: .
format: table
exit-code: "1"
severity: CRITICAL,HIGH
cargo-audit:
name: cargo audit
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo install cargo-audit --locked
- run: cargo audit
govulncheck:
name: govulncheck
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
matrix:
service: [gateway-go, indexer-go]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: "1.25"
- run: go install golang.org/x/vuln/cmd/govulncheck@latest
- run: govulncheck ./...
working-directory: services/${{ matrix.service }}
slither:
name: slither
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: foundry-rs/foundry-toolchain@v1
- run: forge build
working-directory: contracts/evm
- uses: crytic/slither-action@v0.4.0
with:
target: contracts/evm
slither-config: contracts/evm/slither.config.json
slither-args: "--exclude-dependencies"
fail-on: medium
echidna:
name: echidna invariants
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: foundry-rs/foundry-toolchain@v1
- run: forge build
working-directory: contracts/evm
- uses: crytic/echidna-action@v2
with:
files: contracts/evm
contract: TituInvariant
test-mode: property
test-limit: 200000
continue-on-error: true