Lewati ke isi

A02:2021 – Kegagalan Kriptografi

Faktor-Faktor

Klasifikasi CWE Tingkat Kejadian Maksimum Rata-rata Tingkat kejadian Cakupan Maksimum Rata-rata Cakupan Rata-rata Bobot Eksploitasi Rata-rata Bobot Dampak Total Kejadian Total CVEs
29 46.44% 4.49% 79.33% 34.85% 7.29 6.81 233,788 3,075

Ikhtisar

Bergeser satu posisi ke #2, sebelumnya dikenal sebagai Sensitive Data Exposure, yang lebih merupakan gejala yang luas daripada akar penyebab, fokusnya adalah kegagalan yang terkait dengan kriptografi (atau ketiadaannya), yang sering menyebabkan paparan data sensitif. CWE terkenal yang disertakan adalah CWE-259: Use of Hard-coded Password, CWE-327: Broken or Risky Crypto Algorithm, dan CWE-331 Insufficient Entropy.

Deskripsi

Hal pertama adalah menentukan kebutuhan perlindungan data dalam perjalanan dan pada saat istirahat. Misalnya, kata sandi, nomor kartu kredit, catatan kesehatan, informasi pribadi, dan rahasia bisnis yang memerlukan ekstra perlindungan, terutama jika data tersebut termasuk dalam undang-undang privasi, misalnya, General Data Protection Regulation (GDPR) Uni Eropa, atau peraturan, misalnya, perlindungan data keuangan seperti PCI Data Security Standard (PCI DSS). Untuk semua data tersebut:

  • Apakah ada data yang dikirimkan dalam bentuk teks yang jelas? ini menyangkut protokol seperti HTTP, SMTP, and FTP. Lalu lintas internet luar yang berbahaya. Verifikasi semua lalu lintas yang ada di internal, misalnya antara penyeimbang beban, server web, atau sistem back-end.

  • Apakah ada algoritma kriptografi lama atau lemah yang digunakan baik secara default atau dalam kode yang lebih lama?

  • Apakah kunci kripto bawaan sedang digunakan, kunci kripto yang lemah dihasilkan atau digunakan kembali, atau apakah kurangnya manajemen atau rotasi kunci yang tepat?

  • Apakah enkripsi tidak diterapkan, misalnya, apakah ada agen pengguna (browser) yang arahan atau header keamanan hilang?

  • Apakah agen pengguna (misalnya, aplikasi, klien email) tidak memverifikasi jika sertifikat yang diterima server valid?

Lihat ASVS Crypto (V7), Data Protection (V9), dan SSL/TLS (V10)

Cara Mengatasi

Lakukan minimal hal berikut, dan lihat referensi:

  • Mengklasifikasikan data yang diproses, disimpan, atau dikirim oleh aplikasi. Identifikasi data mana yang sensitif menurut undang-undang privasi, persyaratan peraturan, atau kebutuhan bisnis.

  • Tetapkan kontrol sesuai klasifikasi.

  • Jangan menyimpan data sensitif yang tidak perlu. Buang sesegera mungkin atau gunakan tokenisasi yang sesuai dengan PCI DSS atau bahkan pemotongan. Data yang tidak disimpan tidak dapat dicuri.

  • Pastikan untuk mengenkripsi semua data sensitif saat istirahat.

  • Pastikan gunakan standar algoritma, protokol yang mutakhir dan kuat, serta kunci berada pada tempatnya; menggunakan manajemen kunci yang tepat.

  • Enkripsi semua data dalam perjalanan dengan protokol aman seperti TLS dengan cipher perfect forward secrecy (PFS), prioritas cipher oleh server, dan parameter yang aman. Terapkan enkripsi menggunakan arahan seperti HTTP Strict Transport Security (HSTS).

  • Menonaktifkan caching untuk respons yang berisi data sensitif.

  • Simpan kata sandi menggunakan fungsi hashing adaptif dan salted yang kuat dengan faktor kerja (faktor penundaan), seperti Argon2, scrypt, bcrypt, atau PBKDF2.

  • Verifikasi secara independen efektivitas konfigurasi dan pengaturan.

Contoh Skenario Serangan

Skenario #1: Aplikasi mengenkripsi nomor kartu kredit dalam database menggunakan enkripsi database otomatis. Namun, data ini secara otomatis didekripsi ketika diambil, memungkinkan cacat injeksi SQL untuk mengambil nomor kartu kredit dalam teks polos.

Skenario #2: Situs tidak menggunakan atau menerapkan TLS untuk semua halaman atau mendukung enkripsi yang lemah. Penyerang memantau lalu lintas jaringan (misalnya, di jaringan nirkabel yang tidak aman), menurunkan versi koneksi dari HTTPS ke HTTP, memotong permintaan, dan mencuri cookie sesi pengguna. Penyerang kemudian replay cookie ini dan membajak pengguna sesi (dikonfirmasi), mengakses atau memodifikasi data pribadi pengguna. Alih-alih di atas, mereka dapat mengubah semua data yang diangkut, misalnya, penerima mentransfer uang.

Skenario #3: Kata sandi pada database menggunakan hash tanpa salt atau sederhana untuk menyimpan kata sandi semua orang. Cacat unggah file memungkinkan penyerang untuk mengambil basis data kata sandi. Semua unsalted hashes dapat diekspos dengan tabel pelangi dari hash yang telah dihitung sebelumnya. Hash yang dihasilkan oleh fungsi hash sederhana atau cepat dapat dipecahkan oleh GPU, meskipun telah di-salt.

Referensi

Daftar Klasifikasi CWE

CWE-261 Weak Encoding for Password

CWE-296 Improper Following of a Certificate's Chain of Trust

CWE-310 Cryptographic Issues

CWE-319 Cleartext Transmission of Sensitive Information

CWE-321 Use of Hard-coded Cryptographic Key

CWE-322 Key Exchange without Entity Authentication

CWE-323 Reusing a Nonce, Key Pair in Encryption

CWE-324 Use of a Key Past its Expiration Date

CWE-325 Missing Required Cryptographic Step

CWE-326 Inadequate Encryption Strength

CWE-327 Use of a Broken or Risky Cryptographic Algorithm

CWE-328 Reversible One-Way Hash

CWE-329 Not Using a Random IV with CBC Mode

CWE-330 Use of Insufficiently Random Values

CWE-331 Insufficient Entropy

CWE-335 Incorrect Usage of Seeds in Pseudo-Random Number Generator (PRNG)

CWE-336 Same Seed in Pseudo-Random Number Generator (PRNG)

CWE-337 Predictable Seed in Pseudo-Random Number Generator (PRNG)

CWE-338 Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)

CWE-340 Generation of Predictable Numbers or Identifiers

CWE-347 Improper Verification of Cryptographic Signature

CWE-523 Unprotected Transport of Credentials

CWE-720 OWASP Top Ten 2007 Category A9 - Insecure Communications

CWE-757 Selection of Less-Secure Algorithm During Negotiation ('Algorithm Downgrade')

CWE-759 Use of a One-Way Hash without a Salt

CWE-760 Use of a One-Way Hash with a Predictable Salt

CWE-780 Use of RSA Algorithm without OAEP

CWE-818 Insufficient Transport Layer Protection

CWE-916 Use of Password Hash With Insufficient Computational Effort