Memperbaiki kerentanan kode dan mengelola perbedaan

CodeMender dapat otomatis membuat, memvalidasi, dan menerapkan patch kode sumber untuk kerentanan yang terverifikasi, serta mengujinya di sandbox lokal Anda untuk mencegah regresi.

Membuat perbaikan kerentanan

Gunakan cm fix untuk membuat patch keamanan yang divalidasi untuk temuan yang diverifikasi:

cm fix FINDING_ID

Saat Anda menjalankan cm fix, CodeMender akan melakukan langkah-langkah validasi berikut:

  1. Membuat kandidat patch menggunakan mesin penalaran yang dihosting di cloud.
  2. Menerapkan patch ke salinan kode sumber di dalam sandbox lokal Anda.
  3. Mengompilasi dan menguji codebase dengan menjalankan build.command yang dikonfigurasi untuk memastikan build project dan pengujian unit lulus.
  4. Menjalankan ulang eksploitasi PoC yang telah diverifikasi untuk mengonfirmasi bahwa kerentanan tidak dapat dieksploitasi lagi.

Secara default, CodeMender akan meminta Anda mengonfirmasi setiap modifikasi file sebelum menulisnya ke disk di ruang kerja Anda. Setelah semua pemeriksaan lulus, CodeMender akan menerapkan patch yang diverifikasi ke ruang kerja Anda. Kemudian, Anda dapat melakukan staging perubahan.

Memperbaiki tanda

  • Berikan konteks perbaikan (-c / --context): Berikan batasan arsitektur atau panduan coding:
    cm fix FINDING_ID -c "Use the safe parameterized database helper in src/db/query.go"
  • Perintah persetujuan otomatis (-y / --yes): Menyetujui otomatis semua penulisan file dan perintah konfirmasi selama proses perbaikan:
    cm fix FINDING_ID -y
    Catatan: Anda juga dapat menonaktifkan perintah konfirmasi interaktif di config.yaml dengan menetapkan tools.confirm_writes: false dan tools.confirm_commands: false.
  • Kontrol sandbox (--sandbox): Aktifkan atau nonaktifkan sandbox tingkat OS secara eksplisit untuk operasi ini (misalnya, --sandbox=false untuk menonaktifkan):
    cm fix FINDING_ID --sandbox=false
  • Mengabaikan batas jalur (--allow-all-paths): Nonaktifkan pemeriksaan batas jalur ruang kerja untuk operasi ini agar alat agen dapat mengakses jalur di luar root project dan project_paths yang dikonfigurasi (gabungkan dengan --sandbox=false untuk mengakses jalur host yang tidak dipasang di dalam sandbox):
    cm fix FINDING_ID --allow-all-paths
  • Kebijakan perintah bypass (--allow-all-commands): Menonaktifkan penerapan daftar yang tidak diizinkan command_policy.yaml untuk operasi ini:
    cm fix FINDING_ID --allow-all-commands
  • Bypass cache (--no-cache): Memaksa CodeMender untuk membuat patch baru:
    cm fix FINDING_ID --no-cache

Memeriksa dan mengelola diff VCS lokal

CodeMender menyertakan perintah VCS bawaan untuk membantu Anda memeriksa, melakukan staging, dan mengelola perubahan kode yang diperkenalkan patch sebelum Anda melakukan commit:

  • Melihat status repositori: Periksa file mana yang diubah atau dibuat CodeMender di ruang kerja lokal Anda.

    cm vcs status

  • Memeriksa perbedaan: Tinjau perbedaan terpadu baris demi baris dari semua modifikasi kode yang belum di-commit yang dihasilkan agen.

    cm vcs diff

  • Menyiapkan perubahan: Tambahkan modifikasi patch yang telah diverifikasi ke lingkungan staging lokal Anda agar Anda dapat menguji dan meng-commit-nya.

    cm vcs stage

  • Mengembalikan perubahan sesi: Menghapus semua perubahan file lokal yang dibuat CodeMender selama sesi saat ini dan memulihkan repositori Anda ke status dasar pengukuran.

    cm vcs reset