menjadi warga negara "normal" yang tinggal di Eropa barat, apakah benar-benar perlu untuk menghapus atau mengenkripsi swap di komputer saya?
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.
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?
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 melaluistrings
, 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 tumpukannya
lakukan 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 melihat bash -c
prosesnya
di terminal lain, simpan program Chimnay Kanchi dari Linux: Bagaimana cara memuat memori sistem? untuk usemem.c
, kompilasi gcc -o usemem usemem.c
, dan jalankan usemem &
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 Anda
Selamat - 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 bawah unsigned long mem;
garis). Kompilasi ulang dan jalankan usemem &
berulang kali, dan strings /dev/sdaX | grep SECRET
lagi. Kali ini Anda akan melihat rahasia 'XXXX' bocor.