Semgrep adalah alat analisis statis yang cepat, bersumber terbuka, yang mencari kode, menemukan bug, dan menerapkan pagar pembatas yang aman serta standar pengkodean. Semgrep mendukung 30+ bahasa dan dapat dijalankan dalam IDE, sebagai pemeriksaan pra-komitmen, dan sebagai bagian dari alur kerja CI/CD.
Semgrep adalah grep semantik untuk kode. Saat menjalankan grep "2"
hanya akan cocok dengan string yang tepat 2 , Semgrep akan cocok dengan x = 1; y = x + 1
saat mencari 2 . Aturan Semgrep terlihat seperti kode yang sudah Anda tulis; tidak ada pohon sintaksis abstrak, gulat regex, atau DSL yang menyakitkan.
Perhatikan bahwa dalam konteks keamanan, Semgrep OSS akan kehilangan banyak hal positif karena hanya dapat menganalisis kode dalam batas-batas satu fungsi atau file. Jika Anda ingin menggunakan Semgrep untuk tujuan keamanan ( SAST , SCA , atau pemindaian rahasia ), Platform Semgrep AppSec sangat disarankan karena menambahkan kemampuan penting berikut:
Platform Semgrep AppSec bekerja secara langsung dengan 20.000+ aturan kepemilikan di SAST, SCA, dan rahasia. Aturan Pro ditulis dan dikelola oleh tim peneliti keamanan Semgrep dan sangat akurat, yang berarti tim AppSec dapat merasa percaya diri menyampaikan temuan langsung ke pengembang tanpa memperlambatnya.
Semgrep menganalisis kode secara lokal di komputer Anda atau di lingkungan build Anda: secara default, kode tidak pernah diunggah . Memulai →.
Kode Semgrep mendukung 30+ bahasa, termasuk:
Apex · Bash · C · C++ · C# · Clojure · Dart · Dockerfile · Elixir · HTML · Buka · Java · JavaScript · JSX · JSON · Julia · Jsonnet · Kotlin · Lisp · Lua · OCaml · PHP · Python · R · Ruby · Karat · Scala · Skema · Soliditas · Swift · Terraform · TypeScript · TSX · YAML · XML · Generik (ERB, Jinja, dll.)
Semgrep Supply Chain mendukung 12 bahasa di 15 manajer paket, termasuk:
C# (NuGet) · Dart (Pub) · Go (Modul Go, go mod
) · Java (Gradle, Maven) · Javascript/TypeScript (npm, Yarn, Yarn 2, Yarn 3, pnpm) · Kotlin (Gradle, Maven) · PHP (Komposer) · Python (pip, pip-tool, Pipenv, Puisi) · Ruby (RubyGems) · Rust (Cargo) · Scala (Maven) · Cepat (SwiftPM)
Untuk informasi lebih lanjut, lihat Bahasa yang didukung.
Untuk pengguna baru, kami menyarankan untuk memulai dengan Platform Semgrep AppSec karena platform ini menyediakan antarmuka visual, proyek demo, alur kerja triase hasil dan eksplorasi, serta mempercepat penyiapan di CI/CD. Pemindaian masih bersifat lokal dan kode belum diunggah. Alternatifnya, Anda juga dapat memulai dengan CLI dan menavigasi keluaran terminal untuk menjalankan pencarian satu kali.
Daftar di segrep.dev
Jelajahi temuan demo untuk mempelajari cara kerja Semgrep
Pindai proyek Anda dengan membuka Projects > Scan New Project > Run scan in CI
Pilih sistem kontrol versi Anda dan ikuti langkah-langkah orientasi untuk menambahkan proyek Anda. Setelah pengaturan ini, Semgrep akan memindai proyek Anda setelah setiap permintaan penarikan.
[Opsional] Jika Anda ingin menjalankan Semgrep secara lokal, ikuti langkah-langkah di bagian CLI.
Jika ada kendala silahkan minta bantuan di Semgrep Slack.
# For macOS
$ brew install semgrep
# For Ubuntu/WSL/Linux/macOS
$ python3 -m pip install semgrep
# To try Semgrep without installation run via Docker
$ docker run -it -v "${PWD}:/src" semgrep/semgrep semgrep login
$ docker run -e SEMGREP_APP_TOKEN=<TOKEN> --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci
semgrep login
untuk membuat akun Anda dan login ke Semgrep.Masuk ke Semgrep memberi Anda akses ke:
Buka direktori root aplikasi Anda dan jalankan semgrep ci
. Ini akan memindai proyek Anda untuk memeriksa kerentanan dalam kode sumber Anda dan ketergantungannya.
Coba tulis kueri Anda sendiri secara interaktif dengan -e
. Misalnya, periksa Python == yang sisi kiri dan kanannya sama (berpotensi bug): $ semgrep -e '$X == $X' --lang=py path/to/src
Ekosistem Semgrep meliputi hal-hal berikut:
Semgrep OSS - Mesin analisis program sumber terbuka di jantung segalanya. Cocok untuk kasus penggunaan ad-hoc dengan toleransi tinggi terhadap kesalahan positif - konsultan pemikiran, auditor keamanan, atau pentester.
Platform Semgrep AppSec - Atur dan skalakan pemindaian SAST, SCA, dan Rahasia dengan mudah di seluruh organisasi, tanpa risiko membebani pengembang. Sesuaikan temuan mana yang dilihat pengembang, di mana mereka melihatnya, dan integrasikan dengan penyedia CI seperti GitHub, GitLab, CircleCI, dan banyak lagi. Termasuk tingkatan gratis dan berbayar.
Semgrep Code (SAST) - Buat kemajuan nyata pada simpanan kerentanan Anda dengan SAST yang meminimalkan kebisingan dan memberdayakan pengembang untuk memperbaiki masalah mereka sendiri dengan cepat, bahkan jika mereka tidak memiliki pengetahuan keamanan. Pagar pembatas yang aman dan mudah diterapkan serta panduan remediasi langkah demi langkah yang disesuaikan berarti pengembang benar-benar memperbaiki masalah karena mereka tidak merasa melambat.
Semgrep Supply Chain (SSC) - Pemindai ketergantungan sinyal tinggi yang mendeteksi kerentanan yang dapat dijangkau di pustaka dan fungsi sumber terbuka pihak ketiga.
Rahasia Semgrep (Pemindaian rahasia) - Deteksi rahasia yang menggunakan analisis semantik, analisis entropi yang ditingkatkan, dan validasi untuk secara akurat memunculkan kredensial sensitif dalam alur kerja pengembang.
Semgrep Assistant (AI) - Asisten adalah insinyur AppSec bertenaga AI yang membantu pengembang dan tim AppSec memprioritaskan, melakukan triase, dan memulihkan temuan Semgrep dalam skala besar. Manusia menyetujui keputusan triase otomatis Asisten sebanyak 97%, dan menilai panduan remediasi yang dihasilkan sebanyak 80% bermanfaat. Untuk ringkasan cara kerja Asisten, baca ringkasan ini.
Sumber daya tambahan:
Bergabunglah dengan ratusan ribu pengembang dan teknisi keamanan lain yang sudah menggunakan Semgrep di perusahaan seperti GitLab, Dropbox, Slack, Figma, Shopify, HashiCorp, Snowflake, dan Trail of Bits.
Semgrep dikembangkan dan didukung secara komersial oleh Semgrep, Inc., sebuah perusahaan keamanan perangkat lunak.
Aturan Semgrep terlihat seperti kode yang sudah Anda tulis; tidak ada pohon sintaksis abstrak, gulat regex, atau DSL yang menyakitkan. Berikut aturan singkat untuk menemukan pernyataan Python print()
.
Jalankan secara online di Semgrep's Playground dengan mengklik di sini.
Kunjungi Dokumen > Contoh aturan untuk kasus penggunaan dan ide.
Kasus penggunaan | Aturan Semgrep |
---|---|
Larang API berbahaya | Cegah penggunaan exec |
Rute pencarian dan otentikasi | Ekstrak rute Musim Semi |
Terapkan penggunaan default aman | Atur cookie Flask dengan aman |
Data tercemar mengalir ke wastafel | Aliran data ExpressJS ke sandbox.run |
Menerapkan praktik terbaik proyek | Gunakan asserEqual untuk pemeriksaan ==, Selalu periksa panggilan subproses |
Kodifikasi pengetahuan spesifik proyek | Verifikasi transaksi sebelum melakukannya |
Audit hotspot keamanan | Menemukan XSS di Apache Airflow, kredensial Hardcoded |
File konfigurasi audit | Temukan kegunaan S3 ARN |
Bermigrasi dari API yang tidak digunakan lagi | DES sudah tidak digunakan lagi, API Flask tidak digunakan lagi, API Bokeh tidak digunakan lagi |
Terapkan perbaikan otomatis | Gunakan mendengarkanAndServeTLS |
Kunjungi Docs > Extensions untuk mempelajari tentang penggunaan Semgrep di editor Anda atau pra-komit. Ketika diintegrasikan ke dalam CI dan dikonfigurasi untuk memindai permintaan penarikan, Semgrep hanya akan melaporkan masalah yang disebabkan oleh permintaan penarikan tersebut; ini memungkinkan Anda mulai menggunakan Semgrep tanpa memperbaiki atau mengabaikan masalah yang sudah ada sebelumnya!
Telusuri dokumentasi Semgrep selengkapnya di situs web. Jika Anda baru mengenal Semgrep, lihat Dokumen > Memulai atau tutorial interaktif.
Menggunakan konfigurasi jarak jauh dari Registri (seperti --config=p/ci
) melaporkan metrik aturan pseudonim ke semgrep.dev.
Menggunakan konfigurasi dari file lokal (seperti --config=xyz.yml
) tidak mengaktifkan metrik.
Untuk menonaktifkan metrik aturan Registri, gunakan --metrics=off
.
Kebijakan privasi Semgrep menjelaskan prinsip-prinsip yang memandu keputusan pengumpulan data dan perincian data yang dikumpulkan dan tidak dikumpulkan ketika metrik diaktifkan.
Untuk memutakhirkan, jalankan perintah di bawah ini yang terkait dengan cara Anda menginstal Semgrep:
# Using Homebrew
$ brew upgrade semgrep
# Using pip
$ python3 -m pip install --upgrade semgrep
# Using Docker
$ docker pull semgrep/semgrep:latest