Apakah aman membiarkan shell root berjalan di sesi layar terpisah?

20

Saya ingin tahu tentang keamanan meninggalkan root shell berjalan di dalam sesi layar terpisah. Saya biasanya tidak pernah melakukan ini.

Selain potensi akun pengguna non-root saya dikompromikan (kata sandi diekspos, ssh key dikompromikan, dll), apakah ada vektor lain masuk ke sesi layar terpisah, dilindungi kata sandi saya harus khawatir, atau dapat layar terpisah Sesi dianggap lembam?

Michael
sumber
Ini bukan jawaban karena saya tidak mengetahuinya, tetapi saya tidak berpikir itu membuat perbedaan antara melakukan seperti yang Anda katakan dan meninggalkan pekerjaan sudo.
phunehehe
7
@ phunehehe Ada perbedaan karena ketika pekerjaan selesai, sudononaktifkan sementara shell root yang benar tetap terbuka.
Michael

Jawaban:

5

Saya pikir ini adalah masalah keamanan, karena "Selain potensi akun pengguna non-root saya dikompromikan" bisa agak besar.

Tetapi ada peningkatan risiko lain di luar itu. Sebagai contoh, Anda sekarang telah membuka diri untuk mengeksploitasi teoritis yang memungkinkan seseorang untuk mengubah izin di dir soket layar ( /var/run/screenpada sistem saya, tetapi kadang /tmp- kadang digunakan). Eksploitasi itu sekarang memiliki jalan untuk mendapatkan root, yang mungkin tidak sebaliknya.

sudomemiliki kelebihan lain, jika Anda bisa melatih diri untuk menggunakannya untuk setiap perintah daripada melakukannya sudo su -. Ia mencatat tindakan (yang, kecuali Anda masuk dari jarak jauh, tidak meningkatkan keamanan secara berarti, tetapi memberi Anda jejak apa yang telah Anda lakukan). Dan itu membantu mencegah kecelakaan dengan meminta eskalasi yang disengaja untuk setiap perintah, alih-alih beralih ke sesi yang sepenuhnya istimewa.

mattdm
sumber
1
Meskipun tidak ada eksploit yang diketahui sekarang, saya akan terus tidak membiarkan shell root terbuka di layar. Risiko terhadap akun pengguna sudah cukup. Terima kasih.
Michael
-1 Jika saya memiliki exploit yang dapat mengubah izin file saya tidak perlu meretas beberapa layar yang sedang berjalan. Saya dapat melakukan apapun yang saya inginkan dengan sistem.
Let_Me_Be
@Let_Me_Be - tergantung pada hak akses file mana yang memungkinkan Anda untuk diubah. Mungkin Anda hanya dapat melakukan beberapa hal tertentu di bawah hierarki tertentu. Itu tidak terlalu dibuat-buat.
mattdm
Layarnya sendiri memiliki permukaan serangan besar. Saya tidak memiliki serangan penuh untuk ditampilkan , tetapi ada kelemahan yang jelas.
Gilles 'SO- stop being evil'
koreksi saya jika saya salah, tetapi aplikasi layar dihubungkan ke melalui sesi shell (baik langsung di konsol sistem, atau melalui sesi ssh). Sejauh yang saya tahu itu bukan protokol jaringan seperti itu. oleh karena itu seaman sesi ssh atau terminal Anda. jika beberapa memiliki akses ke sesi ssh, atau mesin fisik Anda, semua taruhan dibatalkan. jika mereka memiliki akses yang cukup untuk mendapatkan segala jenis baris perintah di bawah akun pengguna apa pun, maka Anda sebaiknya membuang keamanan mesin Anda.
tidak disinkronkan
10

Jika Anda memiliki shell root di sesi layar (terlepas atau tidak, dilindungi kata sandi atau tidak), dan screenexecutable Anda tidak setxid, maka penyerang yang mendapatkan hak istimewa Anda dapat menjalankan perintah di shell itu. Jika tidak ada yang lain, mereka dapat melakukannya dengan menelusuri proses layar.

Jika layar setuid atau setgid, dan sesi dilepaskan dan dilindungi kata sandi, maka pada prinsipnya dibutuhkan kata sandi layar untuk menjalankan perintah di shell itu. Jika prinsip ini berlaku, seseorang yang hanya mengkompromikan akun Anda harus meletakkan trojan di tempatnya dan menunggu Anda mengetikkan kata sandi. Namun permukaan serangan (yaitu jumlah tempat di mana sesuatu bisa salah karena bug atau kesalahan konfigurasi) sangat besar dan tidak nyaman. Selain fitur keamanan sistem dasar, Anda mempercayai:

  • layar untuk memeriksa kata sandi dengan benar.
  • layar untuk mencegah akses ke sesi dengan cara lain.
  • layar untuk menggunakan mekanisme kontrol akses OS dengan benar (misalnya izin pada pipa).
  • kernel untuk melakukan pemeriksaan keamanan ptrace dengan benar (ini adalah sumber kerentanan yang sering terjadi).
  • shell yang berjalan tidak melakukan hal bodoh.
  • beberapa fitur lain untuk tidak menggigit Anda.

"Beberapa fitur lain untuk tidak menggigitmu": ya, itu tidak jelas. Tapi itu selalu menjadi perhatian dalam keamanan. Anda mungkin tergoda untuk menganggap ini hanya angan-angan belaka, tetapi apakah Anda benar-benar memikirkan segalanya? Sebagai contoh…

Selama Anda dapat menulis ke perangkat terminal, Anda dapat menyuntikkan data ke input shell itu. Di bawah konfigurasi default layar pada mesin saya:

printf '\ekfoo\017bar\e\\' >/dev/pts/33
printf '\e[21t' >/dev/pts/33

Ini memasukkan ␛]lfoobar␛laliran input shell. \ekadalah urutan kontrol yang memungkinkan aplikasi (atau apa pun yang dapat menulis ke perangkat terminal) mengatur judul jendela (lihat bagian “Penamaan jendela” di manual layar ), dan \e[21tmenjadikan terminal melaporkan judulnya pada input standar aplikasi ( layar tidak mendokumentasikan urutan ini, tetapi menerapkannya; Anda dapat menemukannya CSI Ps ; Ps ; Ps ; tdi bawah dalam daftar urutan kontrol xterm . Faktanya, setidaknya di bawah layar 4.0.3, semua karakter kontrol dilepaskan dari judul yang dilaporkan, sehingga shell membaca lfoobar(dengan asumsi ␛]tidak terikat pada perintah pengeditan) dan tidak ada baris baru. Jadi penyerang tidak dapat benar-benar mengeksekusi perintah seperti itu, tetapi dapat memasukkan perintah sepertichmod u+s /bin/sh diikuti oleh banyak ruang dan prompt yang sepertinya terlihat.

Layar mengimplementasikan beberapa rangkaian kontrol berisiko serupa lainnya, saya tidak tahu apa potensi mereka untuk kerentanan. Tapi semoga saat ini Anda dapat melihat bahwa perlindungan yang ditawarkan oleh sandi sesi layar tidak terlalu bagus. Alat keamanan khusus seperti sudo jauh lebih kecil kemungkinannya untuk memiliki kerentanan.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
+1 Jawaban luar biasa. Terima kasih telah meluangkan waktu untuk menjelaskan semuanya.
Michael
1

Pipa yang dibuat oleh layar hanya dapat diakses oleh pemilik, oleh karena itu ini seharusnya tidak menjadi masalah keamanan.

Biarkan aku menjadi
sumber
5
Anda menggunakan "are" di bagian pertama kalimat Anda di mana Anda mungkin bermaksud "seharusnya". Jangan membiasakan diri membuat asumsi.
Shadur
1
Uh? Pipa yang dibuat oleh layar hanya dapat diakses oleh pemilik (jika Anda tidak secara manual chmod).
Let_Me_Be