Ketika saya google pertanyaan ini, saya hanya mendapatkan semua jenis informasi tentang cara melindungi data sensitif, cara mengenkripsi swap, dan bagaimana "berbahaya" bisa menjaga pertukaran "normal" dalam sistem linux.
Tetapi saya tidak dapat menemukan perangkat lunak, metode atau "cara" untuk benar-benar mendapatkan (membaca) bagian data dari partisi swap.
Jadi pertanyaan saya adalah, sebagai warga negara "normal" yang tinggal di Eropa Barat, apakah benar-benar perlu untuk menghapus atau mengenkripsi swap di komputer saya? Dan sebelum seseorang menjawab "ya", dapatkah saya memiliki contoh tentang bagaimana saya bisa menguji, dan mengeluarkan swap saya sendiri, sehingga saya benar-benar dapat melihat data apa yang tidak dilindungi meskipun rumah saya yang dienkripsi?
sumber
Jawaban:
Ini adalah penilaian pribadi, penilaian yang tergantung pada seberapa besar Anda menghargai privasi data Anda, dan seberapa besar Anda ingin melindungi data Anda dari terekspos jika jatuh ke tangan penyerang. Misalkan Anda memiliki laptop, dan suatu hari dicuri - seberapa besar kemungkinan pencuri akan mencoba mengekstrak kata sandi atau kunci enkripsi atau data pribadi, dan apakah Anda peduli? Banyak orang tidak peduli, tetapi ada yang tidak. Diakui, sebagian besar pencuri hanya akan menjual laptop untuk keuntungan finansial langsung, tetapi ada kasus di mana penyerang mungkin termotivasi untuk melangkah lebih jauh dalam upaya mengakses data itu sendiri.
Memori proses apa pun berpotensi ditukar ke ruang swap. Memori yang bocor bisa berbahaya - contoh nyata Heartbleed - lihat Bagaimana saya menggunakan Heartbleed untuk mencuri kunci kripto pribadi sebuah situs . Memori yang diekspos oleh Heartbleed hanya milik satu proses tunggal, sedangkan memori yang berpotensi diekspos oleh ruang swap Anda milik setiap proses. Bayangkan sebuah proses yang berisi kunci pribadi, atau daftar kata sandi (mis. Browser web) sedang ditukar - item-item itu akan muncul, dalam plaintext, di ruang swap. Mengekstraksi mereka adalah masalah memilah-milah memori untuk pola data tertentu - itu bisa berupa data ASCII plaintext yang terlihat melalui
strings
, atau bisa lebih terlibat, seperti di Heartbleed (di mana tesnya adalah bahwa beberapa byte berturut-turut adalah pembagi kunci kripto publik). Jika Anda memiliki partisi yang dienkripsi / rumah, maka hal yang jelas untuk dicari adalah blok data yang membentuk kunci enkripsi yang akan membuka kunci data pengguna.Contoh kerja:
lakukan
bash -c 'echo SECRET=PASSWORD > /dev/null; sleep 1000'
untuk membuat proses bash dengan beberapa data rahasia di tumpukannyalakukan
sysctl vm.swappiness=100
untuk meningkatkan swappiness (tidak perlu, tetapi dapat membuat contoh lebih mudah)jalankan
top -c
, tekan f, aktifkan kolom SWAP, tekan q untuk kembali ke tampilan proses teratas, gulir ke bawah sampai Anda melihatbash -c
prosesnyadi terminal lain, simpan program Chimnay Kanchi dari Linux: Bagaimana cara memuat memori sistem? untuk
usemem.c
, kompilasigcc -o usemem usemem.c
, dan jalankanusemem &
berulang kali di terminal. Ini akan menggunakan hingga 512MB blok memori sekaligus. (Tidak masalah apa yang menyebabkan memori untuk ditukar, bisa jadi penggunaan sistem normal, proses lari, atau serangan yang disengaja, hasil akhirnya adalah sama)lihat top, tunggu
bash -c
sampai ditukar (nilai kolom SWAP> 0)sekarang jalankan di
strings /dev/sdaX | grep SECRET
mana X adalah parititon swap AndaSelamat - Anda baru saja mengekstraksi data "rahasia" dari partisi swap. Anda akan melihat banyak salinan teks SECRET diikuti oleh "kata sandi", salinan yang menyertakan baris perintah penuh bocor dari proses bash induk, proses teratas, dan proses 'bash -c'. Baris-baris yang tidak termasuk baris perintah penuh telah bocor dari proses 'bash -c'.
Untuk membuktikan bahwa rahasia bocor dari memori proses, dan bukan hanya baris perintah, tambahkan baris
unsigned char secret[] = "SECRET=XXXX";
ke usemem.c (tepat di bawahunsigned long mem;
garis). Kompilasi ulang dan jalankanusemem &
berulang kali, danstrings /dev/sdaX | grep SECRET
lagi. Kali ini Anda akan melihat rahasia 'XXXX' bocor.sumber
Pertanyaan ini membawa kita ke diskusi tentang masalah antara pengembangan perangkat lunak, seperti perangkat lunak menjaga data sensitif dalam memori dan enkripsi data.
Jadi untuk memulai Anda harus membaca beberapa artikel pengembangan perangkat lunak praktis dan enkripsi data.
Mulai membaca artikel ini: http://www.ibm.com/developerworks/library/s-data.html?ns-311
Semoga ini bisa membantu.
sumber