Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Untuk membaca tentang dasar-dasar mode cetak yang dilindungi Windows untuk perusahaan, lihat Mode cetak yang dilindungi Windows untuk perusahaan.
Sistem cetak Windows sejak dulu sering menjadi target serangan, dan bug cetak mencakup 9% dari semua kasus yang dilaporkan ke Pusat Tanggap Keamanan Microsoft (MSRC) dalam tiga tahun terakhir. Layanan Spooler, yang menangani manajemen printer, konversi data, dan banyak tugas lainnya, adalah inti dari sistem Windows Print. Proses ini berjalan sebagai SYSTEM, yang merupakan salah satu tingkat hak istimewa tertinggi di Windows, itulah sebabnya target yang begitu menarik. Spooler juga dapat diakses secara luas oleh pengguna standar dan memuat kode pihak ketiga sesuai permintaan. Driver ini secara historis diperlukan untuk mendukung berbagai printer selama waktu ketika industri tidak memiliki standar seragam untuk penanganan dokumen dan komunikasi printer. Ekosistem driver yang luas dari berbagai produsen ini memungkinkan Windows untuk mendukung berbagai printer lama dan lebih dari 40 Page Description Languages (PDL) mereka. Namun, kompleksitas itu menyulitkan untuk memiliki serangkaian kriteria umum. Kompleksitas ini menghadirkan banyak tantangan keamanan yang membatasi kemampuan Microsoft untuk menyediakan opsi yang lebih aman bagi pengguna. Artikel ini membahas tantangan yang terkait dengan mengamankan tumpukan cetak dan membagikan beberapa informasi yang dapat membantu pengguna saat ini. Ini juga memberikan pratinjau kolaborasi antara tim Microsoft Offensive Research & Security Engineering (MORSE) dan tim Windows Print tentang apa yang kami pikir akan menjadi masa depan Windows Printing, revisi berbasis IPP ke tumpukan cetak yang tidak lagi memuat driver pihak ketiga dan berjalan dengan permukaan serangan yang berkurang.
Masalah pengemudi
Model keamanan untuk driver cetak bergantung pada model tanggung jawab bersama di mana tumpukan pencetakan Windows dan driver pihak ketiga masing-masing harus memainkan peran dalam menyediakan fungsionalitas dan menegakkan janji keamanan sambil menghindari memperkenalkan kerentanan. Ini seperti subsistem lain di Windows, tetapi pencetakan adalah skenario yang menantang karena pelanggan ingin prosesnya menjadi tanpa gesekan saat memuat kode jarak jauh ke dalam proses sistem yang sangat istimewa.
Memuat kode dari pihak ketiga menghadirkan beberapa tantangan dari perspektif keamanan. Anda tidak hanya harus memastikan bahwa Anda memuat kode yang ingin Anda muat, kode tersebut dapat mengubah perilaku aplikasi Anda dengan cara yang tidak terduga. Misalnya, driver mendukung logika penguraian yang kompleks yang dapat menyebabkan bug yang memungkinkan penguasaan penuh terhadap Spooler atau proses cetak terkait. Jika kerentanan ditemukan dalam driver, Microsoft bergantung pada pihak ketiga untuk memperbarui driver. Ketika penerbit tidak lagi ada atau mempertimbangkan produk lama di luar dukungan, tidak ada cara yang jelas untuk mengatasi kerentanan.
Ketergantungan pada driver pihak ketiga dalam model tanggung jawab bersama membatasi kelincahan dan opsi Microsoft untuk mengamankan pelanggan. Kami sering berada di ujung tombak perlindungan keamanan baru tetapi tidak dapat menyebarkannya secara seragam saat menjalankan kode pihak ketiga.
Kompatibilitas
Salah satu tantangan dengan driver cetak adalah usia mereka. Banyak driver cetak berusia puluhan tahun dan tidak kompatibel dengan mitigasi keamanan modern seperti Control Flow Guard (CFG), Control Flow Enforcement Technology (CET), Arbitrary Code Guard (ACG) dan banyak perlindungan lain yang telah diterapkan Microsoft selama bertahun-tahun. Perlindungan ini sering "semua atau tidak sama sekali" yang berarti bahwa semua biner yang berpartisipasi harus mengambil langkah-langkah agar kompatibel agar perlindungan menjadi efektif. Karena tidak setiap produsen cetak telah mengambil langkah-langkah yang diperlukan untuk memperbarui driver ini, layanan Cetak saat ini tidak mendapat manfaat dari mitigasi eksploitasi modern ini. Jika kerentanan ditemukan, penyerang lebih cenderung memiliki keberhasilan mengeksploitasinya.
Izin berlebihan
Rangkaian cetak Windows mempertahankan banyak aspek dari desain aslinya yang telah berusia lebih dari dua dekade. Print Spooler berjalan sebagai SYSTEM dengan hak istimewa khusus yang membuatnya lebih kuat daripada akun Administrator standar di Windows. Driver yang dimuat ke spooler (termasuk driver pihak ketiga) berjalan pada tingkat hak istimewa ini untuk pencetakan dokumen dasar dan penanganan permintaan pengguna. Setiap kali menerima permintaan pengguna, Spooler harus menentukan tingkat akses yang tepat untuk tugas tersebut, yang ternyata bisa sulit.
Salah satu alasan Spooler mempertahankan izin ini adalah karena kekhawatiran kompatibilitas dengan versi sebelumnya. Ribuan driver, yang dibuat selama 30 tahun, digunakan di Windows dan mengidentifikasi semua kemungkinan risiko bagi pengguna sulit.
Solusi yang ideal adalah menghapus driver sepenuhnya dan memindahkan Spooler ke model keamanan hak istimewa paling sedikit. Beberapa operasi mungkin memerlukan hak istimewa tingkat SISTEM tetapi yang paling pasti tidak. Tantangan yang sering kami hadapi di Microsoft adalah solusi apa pun harus mempertimbangkan persyaratan kompatibilitas pelanggan kami. Menyeimbangkan kebutuhan ini dengan keinginan untuk meningkatkan keamanan adalah tugas yang sulit. Untungnya, kami pikir kami memiliki solusi.
Dasar-dasar IPP
IPP adalah protokol berbasis HTTP dan mendukung banyak metode autentikasi yang diharapkan dari HTTP. Setiap permintaan IPP adalah pesan HTTP POST dan printer diidentifikasi menggunakan URI seperti ipps://printer.example.com/ipp/print. IPP mendukung semua operasi umum yang diharapkan dari printer seperti:
Create-Job: Membuat pekerjaan cetak baru
Kirim Dokumen: Menambahkan dokumen ke pekerjaan cetak
Print-Job: Membuat pekerjaan cetak baru dengan satu dokumen
Get-Printer-Attributes: Dapatkan status dan kemampuan Printer
Get-Jobs: Mendapatkan daftar pekerjaan yang diantrekan
Get-Job-Attributes: Dapatkan status dan opsi pekerjaan
Cancel-Job: Membatalkan pekerjaan yang diantrekan
Pencetakan tanpa driver mendukung sejumlah PDL terbatas berdasarkan standar publik seperti PWG Raster dan PDF. Ini membatasi jumlah unik format yang harus ditangani sistem operasi untuk konversi dan sangat menyederhanakan kode. Penyajian sisi klien digunakan untuk menghasilkan dokumen akhir yang dikirim ke printer.
Aplikasi Dukungan Cetak (PSA)
PSA memungkinkan OEM dan IHV printer untuk memperluas dukungan IPP kami yang ada untuk kebutuhan spesifik mereka. Tidak semua printer mendukung fitur dan opsi konfigurasi yang sama. PSA memungkinkan pengalaman pengguna yang disesuaikan tanpa mengorbankan pengalaman yang diharapkan pengguna.
Titik dan Cetak
Titik dan Cetak adalah fitur yang memungkinkan pengguna untuk terhubung ke printer jarak jauh tanpa menyediakan driver, dan memiliki semua driver yang diperlukan yang diinstal pada klien. Point and Print tetap dengan IPP, tetapi berfungsi berbeda. Kita tidak lagi harus menginstal driver, tetapi beberapa konfigurasi dasar diperlukan untuk mengatur printer. Proses ini berfungsi sebagai berikut dengan IPP:
Klien dan server Windows membuat koneksi melalui RPC
Server dan klien menggunakan driver Microsoft IPP kotak masuk mereka
Server menggunakan IPP untuk berkomunikasi dengan printer
PSA diinstal, jika tersedia
Keamanan
Pencetakan berbasis IPP di Windows saat ini menghapus kebutuhan akan driver pihak ketiga. IPP mendukung enkripsi transportasi, dan dengan sejumlah terbatas PDL yang didukung, kompleksitas penguraian berkurang secara substansial. Ini adalah peningkatan yang bermakna atas model yang memerlukan pengemudi.
Pencetakan IPP di Windows saat ini sudah merupakan langkah maju yang bagus dari perspektif keamanan, dan kami mendorong pengguna untuk beralih jika memungkinkan. Kami juga mendorong administrator untuk memprioritaskan tindakan ini di seluruh armada Anda.
Keamanan penampung dalam mode cetak yang dilindungi Windows
Mode cetak yang dilindungi Windows dibangun pada tumpukan cetak IPP yang ada di mana hanya printer bersertifikat Mopria yang didukung, dan menonaktifkan kemampuan untuk memuat driver pihak ketiga. Dengan melakukan ini, kita dapat membuat peningkatan bermakna pada keamanan cetak di Windows yang tidak mungkin terjadi sebaliknya. Tujuan kami adalah untuk pada akhirnya memberikan konfigurasi default yang paling aman dan memberikan fleksibilitas untuk kembali ke pencetakan warisan (berbasis driver) kapan saja, jika pengguna menemukan printer mereka tidak kompatibel. Untuk menggunakan mode cetak yang dilindungi Windows, pastikan printer mengaktifkan IPP.
Ketika pengguna mengaktifkan mode cetak terlindungi Windows, operasi spooler normal ditunda ke proses Spooler baru yang menerapkan peningkatan mode cetak terlindungi Windows. Mari kita lihat beberapa perubahan tersebut.
Konfigurasi cetak terbatas dan aman
Dalam mode cetak yang dilindungi Windows, banyak konfigurasi warisan tidak lagi valid. Serangan umum pada Windows akan menyalahgunakan fakta bahwa pemantau port printer dapat menjadi Dynamic Link Library (DLL), dan penyerang akan menyalahgunakan ini untuk memuat kode berbahaya. Penyerang juga akan menggunakan tautan simbolis untuk mengelabui Spooler agar memuat kode berbahaya, dan itu tidak lagi mungkin. Ada banyak API warisan yang diperbarui untuk membatasi konfigurasi ke nilai yang masuk akal hanya saat menggunakan IPP. Ini membatasi kesempatan bagi penyerang untuk menggunakan Spooler untuk memodifikasi file pada sistem.
Pemblokiran modul
API yang memungkinkan pemuatan modul akan dimodifikasi untuk mencegah pemuatan modul baru. Misalnya, AddPrintProviderW, dan panggilan lainnya, akan mengakibatkan pemuatan modul yang mungkin berbahaya. Kami juga akan memberlakukan pembatasan yang memastikan bahwa hanya biner yang ditandatangani oleh Microsoft yang diperlukan untuk IPP yang dapat dimuat.
Penyajian XPS per pengguna
Penyajian XPS berjalan atas nama pengguna, bukan SYSTEM, dalam mode cetak yang dilindungi Windows. Sebagian besar pekerjaan cetak di Windows saat ini melibatkan beberapa konversi XPS dan proses yang menangani tugas ini (PrintFilterPipelineSVC) adalah sumber dari banyak kerentanan kerusakan memori. Seperti halnya masalah lain, dengan menjalankan proses ini sebagai pengguna, dampak bug ini diminimalkan.
Hak istimewa yang lebih rendah untuk tugas Penampung umum
Menghapus driver juga memungkinkan kami untuk mengambil tugas umum yang dilakukan oleh proses Spooler dan memindahkannya ke proses yang dijalankan sebagai pengguna. Jika proses ini memiliki kerentanan kerusakan memori, dampak tersebut terbatas pada tindakan yang hanya dapat dilakukan pengguna.
Proses Spooler Worker baru memiliki token terbatas baru yang menghapus banyak hak istimewa seperti SeTcbPrivilege, SeAssignPrimaryTokenPrivilege, dan tidak lagi berjalan di SYSTEM IL.
Mitigasi Biner
Dengan menghapus biner pihak ketiga, kami sekarang dapat mengaktifkan banyak mitigasi biner yang telah diinvestasikan Microsoft selama bertahun-tahun. Proses dalam mode cetak yang dilindungi Windows berjalan dengan banyak mitigasi biner baru. Berikut adalah beberapa sorotan:
Control Flow Enforcement Technology (CFG, CET) – Mitigasi berbasis perangkat keras yang membantu mengurangi serangan berbasis Return Oriented Programming (ROP).
Pembuatan Proses Anak Dinonaktifkan – Pembuatan proses anak diblokir. Ini mencegah penyerang menelurkan proses baru jika mereka berhasil mendapatkan eksekusi kode di Spooler.
Penjaga Pengalihan – mencegah banyak serangan pengalihan jalur umum yang sering menargetkan Print Spooler.
Penjaga Kode Arbitrer – mencegah pembuatan kode dinamis dalam proses.
Perlindungan ini membuatnya lebih sulit untuk menyalahgunakan kerentanan jika ditemukan.
Point and Print dengan mode cetak terlindungi Windows
Seperti disebutkan di atas, Point and Print biasanya memungkinkan pemuatan driver serta konfigurasi printer IPP. Beberapa pengguna mungkin memiliki lingkungan dengan hanya printer IPP, tetapi penyerang berbahaya dapat berpura-pura menjadi printer dan mengelabui pengguna untuk menginstal driver. Mode cetak yang dilindungi Windows mencegah Point dan Print menginstal driver pihak ketiga, mengurangi risiko ini.
Artikel terkait
Artikel | Deskripsi |
---|---|
Gambaran umum mode cetak yang dilindungi Windows | Menyediakan gambaran umum mode cetak yang dilindungi Windows, manfaatnya, dan cara menggunakannya. |
Mode cetak terproteksi Windows untuk perusahaan | Menyediakan panduan untuk perusahaan yang menggunakan mode cetak yang dilindungi Windows. |
Temukan platform cetak modern | Memberikan gambaran umum tentang platform cetak modern, dan keamanan, kompatibilitas, dan manfaat keandalannya atas driver printer warisan. |
Akhir paket layanan untuk driver printer pihak ketiga pada Windows | Menyediakan informasi tentang penghentian dukungan untuk driver cetak Windows v3 dan v4 lama. |
panduan desain Aplikasi Dukungan Cetak | Memberikan panduan dan contoh untuk OEM printer dan IHV yang menerapkan aplikasi dukungan cetak (PSA) untuk perangkat mereka. |
Panduan Desain API Aplikasi Pendukung Cetak v3 | Memberikan panduan dan contoh untuk OEM printer dan IHV yang mengimplementasikan Aplikasi Dukungan Cetak (PSA) v3 untuk perangkat mereka. |
Panduan Desain API Print Support App v4 | Memberikan panduan dan contoh untuk OEM printer dan IHV yang mengimplementasikan Aplikasi Dukungan Cetak (PSA) v4 untuk perangkat mereka. |
Spesifikasi Manifes MSIX untuk Dukungan Cetak Printer Virtual | Menyediakan panduan dan contoh-contoh manifes MSIX untuk OEM printer dan IHV yang mengimplementasikan Printer Virtual Penunjang Cetak. |
asosiasi aplikasi dukungan cetak | Menyediakan panduan dan contoh untuk mengaitkan aplikasi dukungan cetak (PSA) dengan printer. |