Otorisasi lokal tanpa kata sandi di Ubuntu

gambar

Hari ini kita akan berbicara tentang bagaimana kita menemukan otorisasi lokal tanpa kata sandi di Ubuntu, yang, sepertinya, tidak akan pernah ditutup. Bagaimana semuanya terjadi, baca di bawah potongan.

Suatu malam musim panas yang indah, penulis artikel menutup sampul laptop yang berfungsi dari Ubuntu 16.04 Desktop ke Unity dan pulang. Malam itu begitu indah sehingga saya memutuskan untuk mengambil cuti beberapa hari, melempar SMS ke bos saya, dan dia membiarkan saya pergi.

Ternyata, tidak semua kolega saya mengalami malam yang sama indahnya. Laptop C4n rusak, jadi dia meminta saya untuk meminjamkannya milik saya, tetapi dengan hard drive-nya. Tentu saja saya mengizinkan.

Dengan ini, penyelidikan kami yang menakjubkan dimulai.

Apa yang terjadi


Pagi berikutnya, c4n membongkar laptop saya dan memasukkan hard drive saya ke sana. Dia membuka tutupnya dan melihat, alih-alih mulai memuat OS-nya, jendela masuk di sistem saya. Itu dapat diklik, dan c4n mulai memasukkan kata sandi acak, namun semuanya sia-sia. Karena frustrasi, dia menekan tombol daya, dan kemudian keajaiban terjadi.

Alih-alih menyalakan kembali komputer, saya berhasil masuk ke sistem saya , dan program dan dokumen terakhir yang saya buka juga ditampilkan. Perlu dicatat bahwa dokumen-dokumen itu tidak hanya diperlihatkan, mereka bekerja untuk diri mereka sendiri! Anda dapat menggulir dokumen dan membuka tab peramban. c4n segera mengambil tangkapan layar untuk saya.

gambar
Bahkan, tangkapan layarnya berbeda. Ketika meninggalkan pekerjaan, saya tidak membiarkan KeePass terbuka dan situs web perusahaan.

Menghadapi otorisasi lokal tanpa kata sandi!

Ketika saya keluar dari liburan, saya bertanya-tanya apa kesalahan dari fenomena ini, apakah itu selalu direproduksi dan apakah itu selalu direproduksi sama, apakah itu direproduksi di semua sistem.

Alasan


Ternyata, kesalahan dari fenomena ini adalah bahwa ketika tutupnya ditutup, laptop saya tidak masuk ke hibernasi, tetapi pergi tidur (yaitu, meninggalkan daya pada RAM), dan setelah membuka tutupnya, OS yang dimuat dan file terbaru tetap di RAM, dengan yang saya bekerja dengan. OS tidak tahu bahwa hard drive telah dilepaskan dari komputer, dan terus berfungsi hingga Anda perlu mengakses hard drive.

Mengapa otorisasi dapat dilewati tetap menjadi misteri bagi kami. Kami berdosa atas pekerjaan modul PAM (Modul Otentikasi Pluggable), yang, kemungkinan besar, tidak ada dalam RAM, dan Ubuntu 16.04 salah memproses ketidakhadiran mereka, tetapi kemudian kami menyadari bahwa masalahnya adalah hal lain.

Apakah selalu direproduksi dan selalu sama?


Eksperimen kami dimulai dengan Ubuntu 16.04. Tindakannya adalah sebagai berikut:

  1. Kami mengirim komputer ke mode tidur.
  2. Kami mengambil hard drive.
  3. Kami membangunkan komputer dari mode tidur.

Lebih lanjut, ternyata, ada beberapa opsi untuk perilaku sistem:

  1. Komputer menunjukkan jendela login, masukkan kata sandi acak => kita melihat jendela pengguna di depan slip (semua jendela berfungsi).
  2. Komputer menunjukkan jendela login, masukkan kata sandi acak => sistem mengatakan bahwa kata sandi salah => tekan tombol daya sekali => kita melihat jendela pengguna sebelum slip (semua jendela berfungsi).
  3. Komputer menunjukkan layar hitam (kursor berjalan di atasnya), tekan tombol acak dan Enter => kita melihat jendela pengguna di depan slip (semua jendela berfungsi).
  4. Komputer menunjukkan layar hitam (kursor berjalan di atasnya), tekan tombol acak dan Enter => tidak ada yang terjadi => tekan tombol daya sekali => kita melihat jendela pengguna sebelum slip (semua jendela berfungsi).

Kemungkinan besar, item 3-4 mirip dengan item 1-2, hanya karena alasan tertentu, grafik tidak menggambar jendela login.

Eksperimen dilakukan berkali-kali, dan setiap saat dimungkinkan untuk mengakses windows pengguna, mis. reproduktifitas adalah 100%. Ini sangat keren untuk bug yang aneh. Benar, perlu dicatat bahwa hanya jendela aktif yang tersedia, kami tidak dapat beralih ke jendela yang diperkecil. Juga, beberapa jendela menghilang setelah beberapa saat, dan kadang-kadang efek logging diamati, tetapi salah satu dari empat metode entri diperbolehkan kembali.

PoC


Kami merekam video pendek yang menunjukkan seluruh proses serangan.


Apakah itu diputar di semua sistem?


Kondisi untuk pengujian adalah adanya semua pembaruan terbaru pada sistem. Mengapa kita membutuhkan bug yang telah lama ditutup?

Untuk mulai dengan, diputuskan untuk memeriksa apakah bug direproduksi pada PC biasa (bukan laptop) dengan Ubuntu 16,04 dengan Unity. Ada teori bahwa tampilan jendela entah bagaimana dapat dihubungkan ke kartu video. Oleh karena itu, pemeriksaan dilakukan dari PC dengan kartu grafis terintegrasi dan diskrit, dalam semua kasus hasilnya sama - memenuhi bug dengan sempurna.

Selanjutnya adalah Ubuntu 16.04 dengan GNOME. Dan di sini kami kecewa: Saya tidak menemukan bug. Terkadang, ketika keluar dari slip, sistem menunjukkan jendela terakhir selama setengah detik (sangat mungkin untuk merekam video), para peneliti melaporkan ini pada tahun 2011 , dan belum ditutup sejauh ini.

Selanjutnya kami mengambil Arch dengan Wayland dan Xorg - kekecewaan, tidak berhasil. Debian 9 dengan GNOME dan sekali lagi kekecewaan. Itu juga tidak bekerja pada Ubuntu 18.04 baru - tidak mengherankan, karena saat ini kami sudah mulai curiga bahwa masalahnya ada di Unity. Oleh karena itu, kami memutuskan untuk mengambil Ubuntu 14.04 untuk pengujian terbaru, dan juga melihat apa yang terjadi dengan Ubuntu 18.04 jika Anda mengubah window manager dari GNOME ke Unity. Pada Ubuntu 14.04, semuanya bekerja dengan baik (meskipun windows memiliki masa pakai yang jauh lebih pendek daripada pada 04/16). Pada Ubuntu 18,04 dengan Unity, setelah keluar dari slip, sistem langsung lumpuh, dan tidak ada percobaan lebih lanjut yang dapat dilakukan.

Kesimpulan: kami memutuskan bahwa versi Ubuntu dengan Unity yang diinstal secara native rentan, mis. versi

  • 10.10
  • 11,04
  • 11.10
  • 12,04
  • 12.10
  • 04/13
  • 13.10
  • 14,04 (diuji oleh kami)
  • 14.10
  • 04/15
  • 15.10
  • 04.16 (diuji oleh kami)
  • 16.10 (diuji oleh kami)
  • 04.17 (diuji oleh kami)

Daftar yang cukup mengesankan, bukan? Kami telah menguji jauh dari segalanya. Jika seseorang memiliki kesempatan untuk memeriksa versi lain yang belum kami uji, kami dengan senang hati akan menambahkannya ke posting.

Mengapa kita berpikir ini buruk


Kerentanan hanya memungkinkan akses lokal ke data, dan tidak untuk semua orang, tetapi hanya untuk mereka yang terbuka dalam aplikasi dan digunakan. Namun, ini masih cukup kritis, karena:

  1. Data yang digunakan mungkin tidak disimpan ke disk (misalnya, dokumen yang dapat diedit).
  2. Data dapat di direktori rumah terenkripsi (misalnya, file dengan kata sandi).
  3. Data dapat di flash drive terenkripsi.
  4. Data mungkin memerlukan otorisasi tambahan (seperti dalam PoC kami dengan KeePass).

Selain itu, di Unity, siapa pun dapat mengirim komputer ke slip, cukup dari layar login (tanpa otorisasi). Yaitu ini adalah situasi yang sangat nyata bahwa seseorang mengunci layar dan pergi untuk makan siang, pada saat ini penyerang mengirim komputer ke dalam slip, mengeluarkan hard drive dan melihat apa yang dilakukan orang tersebut sebelum ia pergi makan siang. Setelah itu tetap me-restart komputer sudah dengan disk, dan orang itu tidak akan menebak bahwa datanya dapat dikompromikan.

Skeptis akan mengatakan bahwa hasil serupa dapat dengan mudah dicapai dengan melakukan serangan boot dingin, dan hasilnya akan lebih baik, tetapi seberapa sering Anda membawa termos dengan beberapa liter nitrogen cair?

Kami memutuskan bahwa masalahnya sangat penting dan harus ditulis dalam Ubuntu.

Seperti yang kita tulis di Ubuntu


Untuk mendapatkan bug, kami harus mendaftar di launchpad.net , lalu buat deskripsi bug dan tambahkan video dari PoC. Kami mendapat 406 poin rating dan lencana api unggun (apa pun artinya). Mereka mulai menunggu. Kami memulai bug pada 2018-06-18.

Setelah korespondensi yang panjang, Kamerad Marc Deslauriers mengakhiri debat kami dengan pesan yang bermuara pada: β€œKami tidak akan memperbaiki apa pun. Itu sama dengan memiliki akses fisik. "

gambar

Upaya untuk meyakinkan tidak berhasil. Kami dikirim ke total diabaikan selama seminggu. Setelah itu kami diberi izin untuk mempublikasikan penelitian ini:

gambar

UPD: 9 Juli 2018, pukul 16.00, kami memutuskan untuk membuat bug publik (terima kasih amarao ). Dalam diskusi di launchpad, bug dikonfirmasi untuk Mate 18.04, dan bukan hanya untuk Unity. Komunitas juga menegaskan bahwa bug itu ada dan tidak boleh diabaikan.

Source: https://habr.com/ru/post/id416425/


All Articles