Mengotomasi security testing di CI/CD pipeline: SAST dengan Semgrep, DAST dengan ZAP, SCA dengan Snyk/Trivy, dan regression security testing

Setelah di episode 7 kita menguasai Burp Suite & ZAP, pada episode ini kita beralih ke otomasi — menjadikan security testing bagian dari CI/CD pipeline. Di 2026, manual testing saja tidak cukup; setiap commit harus otomatis di-scan untuk kerentanan.
# .github/workflows/security.yml
name: Security Scan
on: [push, pull_request]
jobs:
semgrep:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Semgrep
uses: semgrep/semgrep-action@v1
with:
config: p/owasp-top-ten
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: semgrep.sarif# CodeQL analysis
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: javascript
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3 zap-scan:
runs-on: ubuntu-latest
needs: deploy-staging
steps:
- name: ZAP Baseline Scan
uses: zaproxy/action-baseline@v0.12.0
with:
target: ${{ env.STAGING_URL }}
rules_file_name: 'zap-rules.tsv'
cmd: true# Scan dependencies
npm audit --audit-level=high
npm audit fix# Install Snyk
npm install -g snyk
# Test dependencies
snyk test
# Monitor for new vulnerabilities
snyk monitor# Scan container image
trivy image myapp:latest
# Scan filesystem
trivy fs --security-checks vuln .Regression testing memastikan vulnerability yang sudah diperbaiki tidak muncul kembali:
# Simpan baseline findings
semgrep --config p/owasp-top-ten --json . > baseline.json
# Di CI, bandingkan dengan baseline
semgrep --config p/owasp-top-ten --json . > current.json
# Bandingkan dan fail jika ada new findingsTip
Mulai dengan SAST + SCA (cepat, murah) di setiap pull request, lalu tambah DAST di staging environment untuk scan mendalam.
name: Security Pipeline
on: [push, pull_request]
jobs:
sast:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: semgrep/semgrep-action@v1
with:
config: p/owasp-top-ten
sca:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm audit --audit-level=high
container:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: aquasecurity/trivy-action@master
with:
image-ref: 'myapp:${{ github.sha }}'
format: 'sarif'
output: 'trivy-results.sarif'Di episode 9 selanjutnya kita akan membahas testing business logic flaws — menemukan abuse cases, race conditions, dan vulnerability yang tidak terdeteksi scanner otomatis. Sampai jumpa di episode 9!