OWASP TOP 10 : A02:2021 – Kegagalan Kriptografi

By SumedangKab-CSIRT in Literasi Keamanan Informasi

Literasi Keamanan Informasi
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.




sumber
gambar
Back to Posts