Cara Mendeteksi Kerentanan di Repositori Anda secara Gratis

Pemindai gratis dapat mendeteksi dependensi yang rentan, kredensial yang bocor, serta bug injeksi. Kami menguji enam pemindai pada repositori pengujian, lalu menunjukkan cara menguji bug otorisasi yang luput dari semuanya.

Ashley Innocent

Ashley Innocent

5 November 2026

Cara Mendeteksi Kerentanan di Repositori Anda secara Gratis

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

Untuk mendeteksi kerentanan di repositori Anda secara gratis, terapkan tiga lapisan: pemindai dependensi (npm audit, pip-audit, atau OSV-Scanner), pemindai secret (Gitleaks), dan pemindai kode (Semgrep Community Edition). Jalankan semuanya pada setiap pull request. Tidak ada satu pun dari alat ini yang dapat mendeteksi pemeriksaan otorisasi yang terlewat, jadi tambahkan pengujian runtime untuk hal tersebut.

npm audit --audit-level=high
pip-audit -r requirements.txt
gitleaks git . --no-banner
semgrep scan --config p/default --metrics=off --error

Perubahan yang dihadirkan Vercel Security Review

Vercel Security Review adalah kapabilitas Vercel Agent yang telah memasuki tahap public beta sejak 2 November 2026. Fitur ini memindai setiap push ke repositori GitHub yang terhubung, membaca diff beserta kode di sekitarnya, menelusuri bagaimana perubahan tersebut dapat diakses (reachable), dan memeriksa ulang setiap temuan sebelum melaporkannya.

Contoh kasus dari Vercel menjadi alasan artikel ini dibuat. Sebuah perubahan pada endpoint invoice mencari data invoice berdasarkan ID tanpa memeriksa organisasinya, sehingga pengguna mana pun yang telah login dapat mengunduh invoice milik organisasi lain. Ini adalah celah logika (logic flaw), dan pemindai berbasis pola kerap kesulitan mendeteksi celah logika semacam itu.

Berikut rincian siapa saja yang dapat menggunakannya:

Pertanyaan Jawaban
Paket Hanya untuk tim Pro dan Enterprise
Biaya Gratis hingga 10 November 2026, setelah itu berlaku tarif token penyedia ditambah $0,25 per satu juta token
Repositori Repositori GitHub yang terhubung; repositori yang tidak di-deploy di Vercel belum didukung
Cakupan Diff terhadap base branch, atau seluruh source code pada review pertama
Temuan Dashboard kerentanan, GitHub check, dan komentar PR pada repositori privat serta internal

Dokumentasi Vercel juga menegaskan batasannya: fitur ini menganalisis kode, bukan aplikasi yang sedang berjalan, dan ini bukanlah penetration test. Jika Anda tidak memenuhi syarat atau membaca artikel ini setelah periode gratis berakhir, langkah-langkah selanjutnya dalam panduan ini sepenuhnya gratis.

Cakupan yang harus diperiksa dalam pemindaian kerentanan repo

Pemindaian kerentanan repositori yang menyeluruh memeriksa empat hal: celah keamanan yang diketahui pada dependensi, kredensial yang ter-commit ke Git, pola kode yang tidak aman seperti injection, serta logika otorisasi. Tiga aspek pertama memiliki alat pemindai gratis yang sudah matang. Aspek keempat bergantung pada fungsi dan konteks kode Anda, sehingga memerlukan pengujian langsung terhadap API yang sedang berjalan.

Empat lapisan pemindaian repo: dependensi, secret, dan pola kode masing-masing memiliki pemindai gratis, sedangkan logika otorisasi memerlukan pengujian runtime

Kunci (API key) yang dihapus tetap tersimpan dalam riwayat Git, jadi pindai seluruh riwayat dan lakukan rotasi untuk kunci apa pun yang nyata. Untuk kunci pada traffic API dan koleksi pengujian, lihat panduan pemeriksaan kebocoran API key kami.

Perbandingan alat pemindai kerentanan gratis

Informasi harga dan lisensi diperiksa pada 5 November 2026. Tidak ada satu pun alat command-line berikut yang mewajibkan pembuatan akun atau kartu kredit untuk menjalankan perintah dalam panduan ini.

Alat Mendeteksi Biaya dan lisensi Hal yang perlu diperhatikan
npm audit Celah dependensi npm Gratis, bawaan dari npm Memerlukan file lockfile
pip-audit Celah dependensi Python Gratis, Apache-2.0 Hanya untuk Python
OSV-Scanner Celah dependensi di berbagai ekosistem Gratis, Apache-2.0 Laporan lebih banyak, perlu triase manual
Trivy Dependensi, secret, kesalahan konfigurasi Gratis, Apache-2.0 Kunci versi yang digunakan (lihat di bawah)
Gitleaks Secret dalam riwayat Git Gratis, MIT GitHub Action-nya memerlukan license key gratis untuk organisasi
Semgrep Community Edition Pola kode, beberapa jenis secret Gratis, engine LGPL-2.1 Tidak dapat melacak aliran data di luar satu fungsi atau file
Peringatan Dependabot Celah dependensi Gratis pada repositori publik maupun privat Khusus GitHub
GitHub secret scanning Secret Gratis pada repositori publik; $19 per active committer per bulan pada privat Repositori privat memerlukan Secret Protection
CodeQL Pola kode Gratis pada repositori publik; $30 per active committer per bulan pada privat Repositori privat memerlukan Code Security

Dua catatan penting terkait lisensi: Rules komunitas Semgrep menggunakan Semgrep Rules License, yang mengizinkan penggunaan internal bisnis tetapi melarang pendistribusian ulang atau penawarannya sebagai layanan. Selain itu, jika Anda menggunakan Trivy, perhatikan CVE-2026-33634: penyerang sempat menyusupi sebagian ekosistem Trivy pada Maret 2026. Gunakan rilis versi terbaru dan selalu kunci (pin) setiap action ke SHA commit tertentu.

Memindai repo dengan beberapa perintah: hasil pengujian kami

Kami membuat sebuah API invoice sederhana menggunakan Express dan menyimpannya di repositori lokal. Repositori tersebut sengaja dipasangi empat dependensi npm dan tiga dependensi Python versi lama, dua API key palsu (satu berformat Stripe, satu berformat AWS), celah SQL injection, command injection, serta sebuah route yang dapat mengembalikan data invoice milik organisasi mana pun kepada setiap pengguna yang telah login.

Kemudian kami menjalankan setiap alat pengujian di macOS pada 5 November 2026:

npm audit
pip-audit -r requirements.txt --no-deps --disable-pip
osv-scanner scan source -r .
trivy fs --scanners vuln,secret .
gitleaks git . --no-banner
semgrep scan --config p/default --metrics=off
semgrep scan --config p/nodejsscan --metrics=off
Alat (versi) Terdeteksi Terlewat
npm audit (npm 11.12.1) 9 paket rentan: 6 level tinggi, 3 level rendah Segala hal di luar paket npm
pip-audit 2.10.1 16 advisory pada 3 paket yang dikunci versinya Paket transitif, karena kami menyertakan opsi --no-deps
OSV-Scanner 2.7.0 66 advisory unik pada 15 paket, termasuk paket transitif Python Secret dan bug logika kode
Trivy 0.76.1 33 temuan dependensi dan key berformat Stripe Key berformat AWS
Gitleaks 8.30.1 Key berformat Stripe Key berformat AWS
Semgrep 1.183.0, p/default Key berformat Stripe, command injection, catatan tidak adanya middleware CSRF SQL injection, key berformat AWS
Semgrep 1.183.0, p/nodejsscan SQL injection, command injection, key berformat AWS Key berformat Stripe

Tiga poin penting dari hasil tersebut:

Tidak ada satu pun alat yang menandai celah pada route invoice. Mengingat ini hanya satu repo kecil, anggaplah hasilnya sebagai demonstrasi praktis, bukan benchmark menyeluruh. Kami juga tidak menguji CodeQL dalam percobaan ini.

Pindai repositori GitHub Anda di setiap pull request

Runner bawaan yang disediakan GitHub bersifat gratis untuk repositori publik. Untuk repositori privat, GitHub Free memberikan alokasi bulanan sebesar $12, setara dengan sekitar 2.000 menit pada runner Linux 2-core berdasarkan tarif resmi. Alur kerja (workflow) berikut menggunakan perintah langsung, sehingga organisasi tidak perlu mendaftarkan license key untuk Gitleaks Action:

name: repo-scan
on:
  pull_request:
  push:
    branches: [main]
permissions:
  contents: read
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7 # pin to a commit SHA
        with:
          fetch-depth: 0
      - name: Dependencies (npm)
        run: npm audit --audit-level=high
      - name: Dependencies (Python)
        run: pipx run pip-audit -r requirements.txt
      - name: Secrets
        run: |
          curl -sSL https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz | tar xz gitleaks
          ./gitleaks git . --no-banner
      - name: Code patterns
        run: pipx run semgrep scan --config p/default --config p/nodejsscan --metrics=off --error

Keempat alat pemindai menghasilkan exit code 1 pada repo pengujian kami, dan kode non-zero inilah yang menyebabkan CI job gagal. Hapus langkah pengujian yang tidak relevan dengan tech stack Anda. Untuk menyertakan pengujian API dalam pipeline yang sama, baca panduan Apidog CLI dengan GitHub Actions.

Jangan lupa mengaktifkan peringatan Dependabot. Fitur ini gratis di seluruh paket akun dan langsung bekerja tanpa perlu menunggu adanya pull request.

Celah tersembunyi: bug otorisasi yang luput dari pemindai

Bug otorisasi sangat sulit dideteksi oleh pemindai pola karena struktur kodenya tampak sepenuhnya valid: query benar, parameter sesuai, dan ada middleware auth di bagian depan. Celahnya terletak pada kondisi verifikasi yang hilang, padahal hanya rancangan model data Anda yang menentukan keharusan adanya kondisi tersebut.

// Every scanner passed this
db.query("SELECT * FROM invoices WHERE id = $1", [req.params.id]);

// The fix: scope the lookup to the caller's organization
db.query("SELECT * FROM invoices WHERE id = $1 AND org_id = $2",
  [req.params.id, req.user.orgId]);

Kelemahan ini dikenal sebagai Broken Object Level Authorization, ancaman nomor satu dalam OWASP API Security Top 10 2023. OWASP menyarankan agar pemeriksaan hak akses selalu dijalankan pada setiap request yang menerima parameter ID dari pengguna, serta menulis pengujian otomatis untuk memvalidasi otorisasi sebelum kode masuk tahap deployment.

Memanfaatkan coding agent AI bisa sangat membantu. Kami menghapus semua komentar dari repo pengujian dan meminta Claude Code meninjaunya, baik dengan maupun tanpa petunjuk mengenai batas organisasi. Claude Code berhasil menemukan celah pada route invoice dalam kedua skenario tersebut. Namun, cara ini tidak sepenuhnya berbiaya $0 karena mengonsumsi kuota token agent Anda, serta hasilnya bisa sedikit bervariasi pada tiap pengujian.

Pengujian otomatis (test) memberikan kepastian ya atau tidak yang jelas di setiap pull request. Untuk memperkuat cakupan dari sisi API, pelajari artikel deteksi kerentanan API otomatis, tinjauan alat pemindai keamanan API terbaik, serta daftar periksa pengujian keamanan API kami.

Uji otorisasi menggunakan coding agent bersama Apidog CLI

Anda tidak perlu menulis skenario pengujian ini secara manual untuk setiap route. Serahkan tugas tersebut kepada coding agent dengan bantuan Apidog CLI: alat ini akan membaca rute endpoint Anda, membuat pengujian otomatis untuk setiap resource yang dilindungi, dan menghasilkan test suite yang siap dipasang pada CI. Paket Apidog Free mendukung hingga 4 pengguna.

npm install -g apidog-cli@latest
apidog auth login --with-token <YOUR_TOKEN>
apidog skill install

Anda memerlukan lingkungan staging/testing dengan dua organisasi contoh (seeded) dan masing-masing satu akun pengguna. Cukup berikan satu prompt berikut kepada coding agent Anda:

Read the routes in src/. For each route that returns data owned by an
organization, create an Apidog test scenario in project <id>: log in as
the Org A test user, request an Org B resource by ID, and assert the
status is 403 or 404. Add an Org A request for its own resource and
assert 200, so a broken login can't pass. Group the scenarios in a test
suite, run it against the staging environment, and summarize failures.

Agent akan menganalisis struktur payload, membuat skenario pengujian, lalu mengeksekusi test suite tersebut:

apidog cli-schema get test-scenario-create
apidog cli-schema validate test-scenario-create --file scenario.json
apidog test-scenario create --project <id> --file scenario.json
apidog test-scenario import-steps <scenarioId> --project <id> --source endpoint --ids <endpointIds>
apidog test-suite create --project <id> --file suite.json
apidog run --test-suite <suiteId> --project <id> -e <envId> -r cli,junit
Diagram urutan: pengguna uji di Org A login, memperoleh token, meminta invoice milik Org B, lalu tes dinyatakan berhasil jika mengembalikan status 403 atau 404 dan gagal jika mengembalikan 200

Validasi positif (positive check) ini sangat krusial. Tanpa validasi ini, kesalahan konfigurasi seperti salah mengetik base URL juga akan memicu respons 404, yang membuat pengujian lolos karena alasan yang salah.

Tambahkan perintah apidog run yang sama ke dalam workflow CI di atas, dengan target deployment preview atau staging yang menggunakan data tiruan—jangan pernah mengujinya langsung pada data produksi. Panduan lengkap opsi flag tersedia di referensi perintah apidog run, dan artikel Apidog CLI di Claude Code menjelaskan panduan integrasi agent selangkah demi selangkah.

button

FAQ

Apa metode gratis terbaik untuk mendeteksi kerentanan di repositori? Gabungkan pemindai dependensi, Gitleaks, dan Semgrep Community Edition, kemudian tambahkan pengujian runtime untuk memvalidasi otorisasi. Tidak ada satu alat pun yang mampu mencakup semua celah dalam pengujian kami.

Apakah Vercel Security Review gratis? Hanya gratis hingga 10 November 2026 dan khusus untuk tim dengan paket Pro atau Enterprise. Setelah periode tersebut, Anda akan dikenai biaya token penyedia ditambah $0,25 per satu juta token. Repositori yang tidak di-deploy di Vercel saat ini belum didukung.

Apakah fitur secret scanning di GitHub gratis untuk repositori privat? Tidak. Secret scanning dan CodeQL gratis untuk repositori publik, tetapi repositori privat memerlukan GitHub Secret Protection ($19) atau GitHub Code Security ($30) per active committer per bulan. Namun, notifikasi Dependabot tetap gratis untuk kedua jenis repositori.

Bisakah Semgrep menemukan celah pada otorisasi? Semgrep tidak mendeteksi celah pada route invoice kami saat menggunakan ruleset yang tersedia. Community Edition belum mendukung pelacakan alur data lintas fungsi atau file, meskipun Anda tetap bisa menulis aturan khusus (custom rules) yang disesuaikan dengan pola kode proyek Anda.

Apakah alat pemindai otomatis dapat menggantikan penetration test? Tidak. Pemindai otomatis dan pengujian unit hanya memeriksa pola yang telah dikenal dan skenario yang sudah Anda tentukan. Penetration test bertujuan mengungkap celah yang belum terpikirkan sebelumnya, dan dokumentasi resmi Vercel pun menegaskan bahwa review otomatis mereka bukanlah pengganti penetration test.

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.