Keamanan aplikasi dimulai dari kode itu sendiri. Semgrep adalah static application security testing (SAST) tool yang mampu mendeteksi vulnerability di first-party code dengan cepat dan akurat. Artikel ini akan membahas cara mengintegrasikan Semgrep ke dalam CI/CD pipeline agar setiap commit terscan secara otomatis.
Menemukan bug keamanan di production sudah terlalu terlambat. Dengan SAST, tim developer bisa mengidentifikasi issue seperti SQL injection, XSS, dan broken authentication sejak di tahap development. Semgrep menonjol karena rule-nya transparan, mudah dikustomisasi, dan mendukung banyak bahasa pemrograman populer.
Repository yang menggunakan Git (GitHub, GitLab, atau Bitbucket)
Akun Semgrep (bisa gratis dengan Semgrep Community Edition)
CI/CD runner yang aktif
Node.js atau Python di environment lokal (opsional, untuk test)
Untuk eksplorasi awal, install Semgrep di komputer lokal menggunakan pip:
pip install semgrepAtau via Homebrew untuk macOS:
brew install semgrepVerifikasi instalasi:
semgrep --versionPindah ke direktori project dan jalankan scan dengan rule dari Semgrep Registry:
cd my-project
semgrep --config=auto .Flag --config=auto akan otomatis mendeteksi bahasa dan menjalankan rule yang paling relevan. Output akan menampilkan file, baris, dan severity dari setiap finding.
Semgrep menggunakan pola yang ditulis dalam YAML. Contoh rule untuk mendeteksi penggunaan eval di JavaScript:
rules:
- id: detect-eval
pattern: eval(...)
languages: [javascript]
message: "Avoid using eval() due to security risks"
severity: ERRORSimpan file di .semgrep/custom-rules.yml dan jalankan:
semgrep --config .semgrep/custom-rules.yml .Kamu juga bisa menambahkan data flow analysis untuk menangkap vulnerability yang lebih kompleks, seperti input user yang tidak tersanitasi sebelum masuk ke query database.
Buat file .github/workflows/semgrep.yml:
name: Semgrep SAST Scan
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
semgrep:
runs-on: ubuntu-latest
container:
image: semgrep/semgrep
steps:
- uses: actions/checkout@v4
- run: semgrep ciWorkflow di atas akan menjalankan Semgrep setiap kali ada push atau pull request ke branch utama. Jika ingin upload hasil ke dashboard Semgrep AppSec Platform, tambahkan environment variable SEMGREP_APP_TOKEN.
Setelah scan berjalan, kamu akan mendapatkan daftar finding dengan kategori severity: ERROR, WARNING, atau INFO. Lakukan triase dengan tim:
ERROR: Wajib diperbaiki sebelum merge
WARNING: Dievaluasi berdasarkan konteks bisnis
INFO: Dokumentasikan sebagai technical debt
Gunakan fitur // nosemgrep comment di kode jika sebuah finding adalah false positive, tapi pastikan ada approval dari security lead.
Untuk project besar, scan bisa dilambatkan oleh banyak file yang tidak relevan. Tambahkan file .semgrepignore:
node_modules/
dist/
*.test.js
vendor/Semgrep juga mendukung differential scan yang hanya memeriksa file yang berubah dalam satu commit, menghemat waktu CI secara signifikan. Dokumentasi lengkap dan source code tersedia di repository GitHub Semgrep.
Mengintegrasikan Semgrep ke CI/CD adalah langkah konkret untuk mengamankan software development lifecycle. Dengan scan otomatis di setiap commit, tim bisa menemukan dan memperbaiki vulnerability lebih awal. Bagi tim developer Indonesia yang ingin meningkatkan security posture tanpa mengorbankan velocity, Semgrep adalah tool yang patut dicoba.
Dapatkan feedback, users, dan eksposur dari komunitas kreator, developer, dan entrepreneur digital Indonesia.
Submit Produk → Pelajari Dulu