Uap Eskalasi Privilege Lokal Klien Windows 0 hari

Saya sudah mencari kerentanan selama bertahun-tahun, dan, sepertinya, saya telah melihat banyak, tetapi ada bagian dari pekerjaan yang saya tidak bisa biasakan dan saya tidak bisa mengerti. Ini adalah keengganan mutlak vendor untuk menerima informasi tentang kerentanan dan masalah. Saya mengerti bahwa itu sangat tidak menyenangkan ketika mereka secara langsung menunjukkan kepada Anda bahwa Anda melakukan kesalahan dan, kemungkinan besar, bukan salah. Sangat tidak menyenangkan untuk mengkonfirmasi secara publik di sumber terbuka bahwa ada masalah, bahwa karyawan tidak bekerja. Tetapi saya tidak mengerti mengapa informasi kerentanan harus ditolak.


Jadi, pahlawan cerita kita adalah perangkat lunak Valve's Steam. Dan kerentanan hak istimewa eskalasi di dalamnya, yang memungkinkan setiap pengguna untuk menjalankan perintah atas nama NT AUTHORITY \ SYSTEM.

Kerentanan


Kerentanan itu sendiri cukup sederhana. Steam memasang layanan "Steam Client Service" untuk pekerjaannya. Lihatlah deskriptor layanan SDDL :

O:SYG:SYD:(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;RPWP;;;BU)

Di sini kami tertarik pada bagian (A ;; RPWP ;;; BU). Dalam hal ini, entri ini berarti bahwa setiap pengguna dari grup Pengguna dapat memulai dan menghentikan layanan.
Mari kita lihat apa yang dilakukan layanan saat startup. Tidak terlalu menarik, tetapi ada beberapa operasi yang terlihat tidak biasa - layanan ini mencantumkan konten bagian HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam \ Apps dan menetapkan beberapa hak untuk semua subbagian.



Saya bertanya-tanya hak macam apa yang dipamerkan? Kami membuat kunci uji, memulai layanan (log procmon di atas) dan melihat apa yang benar. Di sini juga ditemukan bahwa bagian HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam memiliki hak akses penuh untuk semua pengguna yang diwarisi pada semua subkunci. Sebuah hipotesis lahir bahwa hak yang sama akan ditetapkan untuk semua subbagian HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam \ Apps melalui panggilan ke RegSetKeySecurity . Tetapi bagaimana jika ada symlink di registri dan cabang HKLM \ SOFTWARE \ Wow6432Node \ Valve \ Steam \ Apps \ test akan menunjukkan, misalnya, ke HKLM \ SOFTWARE \ test2 ?

Kami memeriksa dan melihat bahwa hak-hak dalam kasus symlink terdaftar untuk cabang registry target.



Kami memeriksa hak-hak cabang target dan melihat dalam formulir SDDL (melewatkan yang tidak menarik):

(A;ID;KA;;;BU)(A;OICIIOID;GA;;;BU)

Dalam bentuk verbal, ini berarti akses penuh (baca dan tulis) untuk semua pengguna. Ini adalah hak yang ditentukan oleh layanan Steam kepada kantor cabang.

Sekarang primitif telah dipersiapkan untuk mendapatkan kendali atas hampir semua cabang registri, mudah untuk memutar PoC. Saya memilih cabang HKLM \ SYSTEM \ ControlSet001 \ Services \ msiserver - sesuai dengan layanan "Pemasang Windows", yang juga dapat dimulai oleh pengguna, tetapi layanan ini akan bekerja dengan hak istimewa NT AUTHORITY \ SYSTEM. Setelah mendapatkan kontrol atas cabang HKLM \ SYSTEM \ ControlSet001 \ Services \ msiserver, kami mengubah jalur ke executable di tombol ImagePath dan memulai layanan msiserver. File yang dapat dieksekusi kami diluncurkan dengan izin setinggi mungkin - NT AUTHORITY \ SYSTEM.

Kami mengumpulkan semua yang tertulis di atas dalam kode dan mendapatkan eskalasi hak istimewa yang sederhana di komputer Windows mana pun di mana Steam diinstal.

Laporan Kerentanan


Saya mengirim laporan kerentanan ke Valve melalui Hackerone.

Di sini kejutan pertama sudah menunggu saya - sebelum mentransfer kerentanan langsung ke Valve, saya harus terlebih dahulu meyakinkan staf hackerone bahwa saya benar-benar memiliki laporan kerentanan, karena Valve menggunakan fungsi "Dikelola oleh HackerOne" . Saya tidak keberatan - Saya memiliki PoC, yang memanggil konsol atas nama NT AUTHORITY \ SYSTEM - bukti di wajah. Dan saya mendapat penolakan dalam laporan. Alasannya menunjukkan bahwa laporan saya berada di luar ruang lingkup penelitian, karena "Serangan yang memerlukan kemampuan untuk menjatuhkan file di lokasi sewenang-wenang di sistem file pengguna." (serangan membutuhkan kemampuan untuk menemukan file di jalur sistem file yang sewenang-wenang). Reaksi saya: "Saya bahkan tidak memiliki operasi sistem file tunggal, tetapi gagal karena alasan itu, benar-benar?"

Saya menulis komentar tentang ini dan karyawan lain tiba, yang tetap berusaha untuk memeriksa kerentanannya. Konfirmasikan dan berikan Valve. Hore, tujuannya tercapai. Atau tidak ...?

Waktu berlalu dan laporan kembali ditandai sebagai tidak berlaku. Alasan: "Serangan yang membutuhkan kemampuan untuk menjatuhkan file di lokasi sewenang-wenang di sistem file pengguna" dan "Serangan yang membutuhkan akses fisik ke perangkat pengguna" (serangan itu membutuhkan akses fisik ke perangkat pengguna). Kemudian saya menyadari bahwa serangan eskalasi hak istimewa sama sekali tidak menarik bagi Valve.

Komentar singkat tentang alasannya
Awalnya, saya percaya bahwa laporan yang tidak mengandung kerentanan seperti itu, tetapi menunjukkan beberapa aplikasi aneh dari perangkat lunak yang diinstal, dikeluarkan dari ruang lingkup.

Sebagai contoh, untuk alasan "Serangan yang membutuhkan kemampuan untuk menjatuhkan file di lokasi yang sewenang-wenang pada sistem file pengguna" Saya menyoroti kata-kata kunci, menurut pendapat saya. Menurut saya Valve ingin mengecualikan spekulasi pada topik โ€œbiarkan saya menginstal game di folder yang dapat diakses oleh semua pengguna, maka saya akan menjalankannya dengan hak admin, tanpa memeriksa apakah ada yang mengganti fileโ€, tetapi bagi mereka ini tampaknya menjadi alasan untuk mengecualikan secara umum, segala sesuatu tentang serangan lokal.

Hal yang sama berlaku untuk akses fisik. Bagi saya, akses fisik adalah kemampuan untuk menggunakan obeng untuk membuka sekrup pada hard drive, boot dari media eksternal dan hal-hal menarik lainnya langsung dengan perangkat keras PC. Sangat logis untuk berasumsi bahwa dengan akses seperti itu Anda dapat melakukan hampir semua hal. Serta mengatasi otentikasi dua faktor dengan akses fisik ke telepon. Valve, tampaknya, menganggap tindakan apa pun pada komputer pengguna sebagai fisika. Dan RCE tidak dapat dilarang lama: komputer terhubung ke server oleh gelombang atau kabel - secara fisik!

Karena 45 hari telah berlalu sejak laporan, saya memutuskan untuk secara terbuka mengungkapkan rincian kerentanan, meskipun saya tidak yakin apakah ini akan mendorong pengembang Steam untuk melakukan perubahan.

Statistik kecil: kerentanan diuji pada Windows 8 x64, Windows 8.1 x64 dan Windows 10 x64. Saya tidak tahu fitur penomoran versi perangkat lunak Steam, jadi saya akan memperbaiki versi komponen layanan:

  • SteamService.dll (5.16.86.11, ditandatangani oleh Valve 06/14/2019)
  • SteamService.exe (5.16.86.11, ditandatangani oleh Valve 06/14/2019)

Garis waktu:

15 Juni - laporan kerentanan dikirim.
16 Juni - Ditolak, "Serangan yang membutuhkan kemampuan untuk menjatuhkan file di lokasi sewenang-wenang di sistem file pengguna."
16 Juni - ditemukan kembali dengan komentar.
2 Juli - dikonfirmasi oleh karyawan HackerOne, ditransfer ke Valve.
20 Juli - Menolak, "Serangan yang membutuhkan kemampuan untuk menjatuhkan file di lokasi sewenang-wenang di sistem file pengguna.", "Serangan yang membutuhkan akses fisik ke perangkat pengguna."
7 Agustus - Artikel ini dipublikasikan.

Sedikit spekulasi


Saya sangat kecewa. Perusahaan serius yang menulis kata-kata sombong bahwa keamanan penting membuka komputer Anda untuk akses maksimum ke semua program yang Anda jalankan.

Agak ironis mengetahui bahwa peluncur, yang sebenarnya dirancang untuk menjalankan program pihak ketiga di komputer Anda, memungkinkan mereka untuk mendapatkan hak istimewa maksimal secara diam-diam. Apakah Anda yakin bahwa game gratis yang dibuat dengan lutut oleh pengembang yang tidak dikenal akan berperilaku jujur? Percayalah bahwa untuk diskon 90% Anda tidak akan mendapatkan penambang tersembunyi? Tentu saja, beberapa ancaman akan tetap ada saat bekerja tanpa hak administrator, tetapi hak tinggi program jahat dapat merusak saraf secara signifikan - menonaktifkan antivirus, memperbaikinya ke startup sistem, mengubah hampir semua file, setiap pengguna.

Karena popularitas Steam, jumlah calon korban sangat besar. Pada 2015, jumlah akun Steam aktif diperkirakan 125 juta. Ya, tidak semua pengguna Steam memiliki OS Windows, tetapi yang paling pasti, dan beberapa pengguna memiliki beberapa akun "langsung" di mesin yang sama. Namun besarnya masalah masih mengesankan.
Atau mungkin semua ini sengaja dibiarkan? Mungkin Steam adalah semacam pintu belakang yang sah? Tidak mungkin untuk menetapkan ini dengan tepat, tetapi mari kita bandingkan faktanya:

  1. Ada kerentanan yang mudah dieksploitasi (dan, dilihat dari pesan di Twitter , bukan satu).
  2. Ini cukup mudah dikenali - saya tidak yakin bahwa saya adalah orang pertama yang menemukannya, tetapi setidaknya yang pertama saya jelaskan secara publik.
  3. Keengganan untuk menerima laporan tentang kerentanan semacam itu dan yang serupa (ruang lingkupnya dipilih secara khusus sehingga eskalasi hak istimewa tidak berlaku).

Saya benar-benar tidak suka semua ini. Saya tidak akan mendesak Anda untuk menghapus Steam, tetapi saya mengusulkan untuk sangat berhati-hati dengan apa yang dilakukannya. Keamanan Anda dipertaruhkan.

Bonus


Faktanya adalah bahwa dalam proses mempersiapkan artikel ini peristiwa yang agak menarik terjadi, sehubungan dengan itu saya memutuskan untuk menambah garis waktu.

20 Juli - setelah menolak laporan itu, saya memperingatkan h1 bahwa saya akan secara terbuka mengungkapkan rincian kerentanan setelah 30 Juli.
2 Agustus - karyawan h1 lainnya dilaporkan dalam laporan tertutup dan mengatakan bahwa mereka tidak mengizinkan saya untuk mengungkapkan.

Artikel ini disiapkan untuk publikasi pada 30 Juli (tanggal ini dipilih pada tingkat 45 hari setelah mengirim laporan), tetapi ditunda. Maka, dua minggu kemudian dari pesan saya pada 20 Juli, seseorang muncul yang memberi tahu saya: "kami tidak memberikan izin untuk mengungkapkan kerentanan". Bahkan, ternyata: kami menandai laporan Anda sebagai tidak pantas, kami menutup diskusi, kami tidak menganggap perlu untuk menjelaskan apa pun kepada Anda, dan kami hanya tidak ingin Anda menerbitkannya. Tidak ada sepatah kata pun dari Valve. Tidak kawan, itu tidak akan berhasil. Anda tidak menghargai pekerjaan saya, saya tidak akan menghargai karya Anda - Saya tidak melihat alasan untuk tidak menerbitkan laporan ini untuk semua orang. Kemungkinan besar saya akan dilarang pada h1 karena ini, tetapi saya tidak akan kecewa.

UPD Ternyata kemarin (6 Agustus) pembaruan Steam dirilis. Tidak, itu tidak memperbaiki apa pun.
Versi file: 5.27.59.20 tanda tangan tertanggal 08/08/2019.

Setelah pengungkapan


Kami terus memperbarui timeline:

7 Agustus (setelah publikasi) - laporan h1 ditemukan kembali. Saya menerima sepucuk surat, intinya sulit untuk disingkat, tetapi yang paling penting adalah bahwa beberapa argumen yang meyakinkan perlu dibawa ke kesimpulan bahwa konsekuensi dari kerentanan itu signifikan. Ada "Valve tidak akan memperbaiki sesuatu yang telah mereka tentukan sebagai N / A." Kata-kata ini sekali lagi menegaskan keyakinan saya bahwa saya benar dalam hal saya melakukan pengungkapan detail secara publik.

7 Agustus - Matt Nelson menulis bahwa kerentanan yang dia laporkan persis sama dengan saya. Yang menegaskan tesis saya tentang kemudahan menemukannya. Dia membuka PoC- nya.


9 Agustus - Steam Beta menerima pembaruan di mana salah satu barisnya adalah "Eksploitasi eskalasi hak istimewa diperbaiki menggunakan tautan simbolis dalam registri Windows". Ada kecurigaan bahwa perbaikan tersebut dapat dielakkan, tetapi untuk saat ini persediaan di popcorn.

13 Agustus - Steam menerima pembaruan di mana salah satu barisnya adalah "Eksploitasi eskalasi hak istimewa diperbaiki menggunakan tautan simbolis dalam registri Windows". Tampaknya layanan tidak mengekspos hak dalam registri, jadi kami dapat menganggap bahwa itu sudah diperbaiki.

15 Agustus - peneliti menunjukkan bahwa tambalan dapat dielakkan , kerentanannya masih relevan. Pintasan - Anda dapat mengembalikan versi layanan sebelumnya (sebelum tambalan).

20 Agustus - Valve melarang saya dalam program mereka pada H1. Sisa dari H1 tersedia untuk saya.

Artikel ini dalam bahasa Inggris.

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


All Articles