Wednesday, February 10, 2016

Software Keamanan

 banyak kerentanan hasil dari praktek pemrograman yang buruk
 Sepuluh besar Keamanan Aplikasi Open Web termasuk 5 kelemahan perangkat lunak terkait
 Kurang pengecekan / validasi input Program
 Pentingnya kesadaran akan keamanan



Software Kualitas vs Keamanan
 kualitas perangkat lunak dan keandalan
• Kegagalan disengaja program
• dari input yang tak terduga secara teoritis acak
• meningkatkan menggunakan desain terstruktur dan pengujian
• tidak berapa banyak bug, tapi seberapa sering dipicu
 keamanan perangkat lunak terkait
• tetapi penyerang memilih distribusi input, khusus menargetkan kode buggy untuk mengeksploitasi
• dipicu oleh input sering sangat tidak mungkin
• yang tes umum don 't mengidentifikasi

Defensive Programming
 bentuk desain defensif untuk memastikan fungsi lanjutan dari perangkat lunak meskipun penggunaan yang tak terduga
 membutuhkan perhatian semua aspek eksekusi program, lingkungan, data diolah
 juga disebut pemrograman aman
 berasumsi apa-apa, periksa semua potensi kesalahan
 bukan hanya berfokus pada pemecahan tugas
 harus memvalidasi semua asumsi

Keamanan oleh Desain
 keamanan dan keandalan desain umum gol dalam kebanyakan disiplin ilmu teknik
 masyarakat tidak toleran jembatan / pesawat kegagalan dll
 pengembangan perangkat lunak tidak matang
 tingkat kegagalan yang jauh lebih tinggi ditoleransi
 walaupun memiliki sejumlah pengembangan perangkat lunak dan kualitas standar
 Fokus utama adalah pengembangan umum siklus hidup
 semakin mengidentifikasi keamanan sebagai tujuan utama

Penanganan Program Masukan
 salah menangani gagal sangat umum
 input sumber data dari luar
 Data dibaca dari keyboard, berkas, jaringan
 juga lingkungan eksekusi, data config
 harus mengidentifikasi semua sumber data
 dan eksplisit memvalidasi asumsi pada ukuran dan jenis nilai sebelum digunakan

Masukan Ukuran & Buffer Overflow
 sering memiliki asumsi tentang ukuran buffer
 misalnya. bahwa input pengguna hanya baris teks
 ukuran buffer sesuai tetapi gagal untuk memverifikasi ukuran
 sehingga buffer overflow
 pengujian mungkin tidak mengidentifikasi kerentanan
 karena fokus pada "normal, diharapkan" input
 aman coding memperlakukan semua masukan sebagai berbahaya
 maka harus proses sehingga untuk melindungi Program

Interpretasi Masukan
 masukan Program mungkin biner atau teks
 interpretasi biner tergantung pada encoding dan biasanya aplikasi spesifik
 teks dikodekan dalam karakter set misalnya ASCII
 internasionalisasi telah meningkat berbagai
 juga perlu memvalidasi interpretasi sebelum digunakan
 misalnya nama file, URL, alamat email, identifier
 kegagalan untuk memvalidasi dapat mengakibatkan kerentanan dieksploitasi

Serangan injeksi
 kelemahan yang berkaitan dengan penanganan yang tidak valid masukan yang kemudian mempengaruhi pelaksanaan program
 sering ketika lulus sebagai parameter untuk program pembantu atau utilitas lain atau subsistem
 paling sering terjadi pada bahasa scripting
 mendorong penggunaan kembali program lain / modul
 sering terlihat di skrip CGI web

Perl Script Tidak Aman

Script Aman
 kontra serangan dengan memvalidasi masukan
 dibandingkan dengan pola yang menolak masukan tidak valid
 lihat contoh penambahan skrip:

SQL Injection
 serangan injeksi lain secara luas dieksploitasi
 ketika input digunakan dalam query SQL ke database
 mirip dengan perintah injeksi
 SQL meta-karakter keprihatinan
 harus memeriksa dan memvalidasi masukan untuk ini

Kode Injeksi
 Varian lanjut
 masukan termasuk kode yang kemudian dieksekusi
 jenis serangan secara luas dieksploitasi

Menyeberangi Serangan Site Scripting
 serangan di mana masukan dari satu pengguna output kemudian ke pengguna lain
 XSS sering terlihat di scripted aplikasi web
 dengan kode script termasuk dalam output ke browser
 script didukung, misalnya Javascript, ActiveX
 diasumsikan berasal dari aplikasi di situs
 XSS refleksi
 kode berbahaya ke situs yang disediakan
 kemudian ditampilkan ke pengguna lain

XSS Contoh
 Buku tamu, wiki, blog dll
 di mana komentar termasuk kode script
• misalnya untuk mengumpulkan rincian cookie melihat pengguna
 perlu memvalidasi data yang diberikan
 termasuk menangani berbagai pengkodean mungkin
 Serangan kedua input dan output yang penanganan

Memvalidasi input Sintaks
 untuk memastikan input data memenuhi asumsi
• misalnya adalah dicetak, HTML, email, userid dll
 dibandingkan dengan apa yang dikenal diterima
 tidak diketahui berbahaya
• seperti dapat melewatkan masalah, metode memotong baru
 biasanya menggunakan kalimat biasa
• pola karakter menggambarkan masukan yang diijinkan
• Rincian bervariasi antara bahasa
 masukan buruk baik ditolak atau diubah

Encodings alternatif
 mungkin memiliki beberapa alat encoding teks
• karena bentuk terstruktur data, misalnya HTML
• atau melalui penggunaan beberapa set karakter besar
 Unicode digunakan untuk internasionalisasi
• menggunakan 16-bit nilai karakter
• UTF-8 encode sebagai urutan byte 1-4

• memiliki varian berlebihan
- misalnya / 2F adalah, C0 AF, AF 80 E0
- maka jika memblokir nama file mutlak periksa semua!
 harus canonicalize masukan sebelum memeriksa

Memvalidasi Numeric ( angka ) Masukan
 mungkin memiliki data mewakili nilai-nilai numeric
 internal disimpan dalam nilai berukuran tetap
• misalnya 8, 16, 32, bilangan bulat 64-bit atau 32, 64, 96 pelampung
• ditandatangani atau unsigned
 harus benar menginterpretasikan bentuk teks
 dan kemudian memproses secara konsisten
• telah masalah yang membandingkan menandatangani ke unsigned
• misalnya besar positif unsigned negatif ditandatangani
• dapat digunakan untuk buffer overflow cek

Masukan Fuzzing
 Metode pengujian kuat menggunakan berbagai macam input secara acak
• untuk menguji apakah program / fungsi benar menangani input yang abnormal
• sederhana, bebas dari asumsi, murah
• assist dengan keandalan serta keamanan
 juga dapat menggunakan template untuk menghasilkan kelas input masalah yang diketahui
• maka bisa kehilangan bug

No comments:

Post a Comment