Lab ini adalah bagian dari sesi Software and Data Integrity Failures (OWASP A08:2021) pada bootcamp cybersecurity Dibimbing.id.
Setelah menyelesaikan lab ini, peserta akan mampu:
- Mengidentifikasi kerentanan supply chain dalam pipeline CI/CD
- Memahami pentingnya integritas data dan software dalam DevSecOps
- Melakukan audit keamanan pada workflow GitHub Actions
- Menerapkan teknik mitigasi seperti SHA256 checksum verification dan dependency pinning
- Membandingkan praktik insecure vs secure dalam CI/CD pipeline
- Mengobservasi bagaimana security gates memblokir kode vulnerable
Repository ini memiliki tiga branch untuk pembelajaran:
| Branch | Kode | Pipeline | Hasil | Tujuan |
|---|---|---|---|---|
insecure |
❌ Vulnerable | ❌ Tidak aman | ✅ Pass | Untuk di-audit |
devsecops |
❌ Vulnerable | ✅ Strict gates | ❌ Fail | Demo security gate |
secure |
✅ Aman | ✅ Aman | ✅ Pass | Reference solution |
┌─────────────────────────────────────────────────────────────────┐
│ LEARNING PATH │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. insecure ──▶ 2. devsecops ──▶ 3. secure │
│ (audit) (observe) (learn fix) │
│ │
└─────────────────────────────────────────────────────────────────┘
# Clone repository
git clone https://github.com/batamhacker/secure-pipeline-audit.git
cd secure-pipeline-audit
# 1. Audit branch insecure
git checkout insecure
cat .github/workflows/pipeline.yml
cat src/app.py
# 2. Observasi security gate di branch devsecops
git checkout devsecops
# Jalankan workflow di GitHub Actions - akan GAGAL!
# 3. Pelajari solusi di branch secure
git checkout secure
git diff insecure secure -- .github/workflows/pipeline.ymlDefinisi: Serangan yang menargetkan elemen kurang aman dalam rantai pasokan software, seperti dependencies, build tools, atau CI/CD pipeline.
Contoh Nyata - SolarWinds Attack (2020):
- Attacker menyusup ke sistem build SolarWinds
- Menyisipkan backdoor (SUNBURST) ke dalam update software Orion
- 18.000+ organisasi terinfeksi termasuk pemerintah AS
- Tidak terdeteksi selama berbulan-bulan karena update ditandatangani dengan sertifikat valid
Dalam Lab Ini:
- Branch
insecuremendemonstrasikan vektor serangan serupa - Branch
devsecopsmenunjukkan bagaimana security gate mendeteksi serangan - Branch
securemenunjukkan cara mitigasi yang benar
| Teknik | Implementasi di Lab |
|---|---|
| Code Signing | SHA256 checksum verification di branch secure |
| Dependency Pinning | requirements.txt dengan version pinning |
| SAST | Bandit untuk static analysis |
| Dependency Scanning | pip-audit untuk vulnerability scanning |
| Security Gates | Pipeline yang memblokir kode vulnerable (branch devsecops) |
| Least Privilege | Minimal permissions di workflow |
git checkout insecureTugas: Gunakan AUDIT_CHECKLIST.md untuk mengidentifikasi semua kerentanan di:
.github/workflows/pipeline.ymlsrc/app.pysrc/requirements.txt
git checkout devsecops- Fork repository ini
- Buka tab Actions
- Jalankan workflow
- Observasi: Pipeline akan GAGAL karena security tools mendeteksi vulnerabilities
Ini adalah expected behavior! Security gate bekerja dengan benar memblokir kode vulnerable.
git checkout secure
# Bandingkan dengan insecure
git diff insecure secure -- .github/workflows/pipeline.yml
git diff insecure secure -- src/app.py# Di Linux/Mac
sha256sum src/app.py
# Di Windows PowerShell
Get-FileHash src/app.py -Algorithm SHA256
# Online tool: https://emn178.github.io/online-tools/sha256_checksum.htmlWorkflow (pipeline.yml):
- Unpinned GitHub Actions (supply chain risk)
-
curl | bashdari sumber eksternal - Tidak ada dependency scanning
- Tidak ada integrity verification
- Secrets di-print ke log
- Permissions terlalu permissive
Kode (app.py):
- Hardcoded credentials
- Penggunaan
eval()pada input - Insecure deserialization (pickle)
- Download dan execute remote code
- Tidak ada input validation
Pipeline akan mendeteksi:
- 🚨 Bandit:
eval()usage (B307) - 🚨 Bandit:
exec()usage (B102) - 🚨 Bandit:
pickleusage (B301) - 🚨 Secrets scanner: Hardcoded API keys
- 🚨 Secrets scanner: Hardcoded passwords
Hasil: ❌ Pipeline GAGAL (ini benar!)
Workflow (pipeline.yml):
- Actions di-pin dengan SHA commit hash
- Tidak ada remote script execution
- Dependency scanning dengan pip-audit
- SHA256 checksum verification
- Static analysis dengan Bandit
- Minimal permissions
Kode (app.py):
- Tidak ada hardcoded secrets
- Safe expression evaluation (AST-based)
- Input validation
- Tidak ada insecure deserialization
| Tool | Fungsi |
|---|---|
| SHA256 Hash Generator | Verifikasi integritas file |
| Bandit | Static Application Security Testing (SAST) untuk Python |
| pip-audit | Dependency vulnerability scanning |
| GitHub Actions | CI/CD platform |
- OWASP A08:2021 - Software and Data Integrity Failures
- GitHub Actions Security Hardening
- SolarWinds Attack Analysis
- Supply Chain Security Best Practices
- OWASP DevSecOps Guideline
PERINGATAN: Kode di branch
insecuredandevsecopssengaja dibuat vulnerable untuk tujuan edukasi. JANGAN gunakan pattern tersebut di environment production.
Lab ini dibuat untuk sesi bootcamp Dibimbing.id - Day 23: Software and Data Integrity Failures
Instructor: Irwan Puspito