Tanggal penerbitan asli: 9 Desember 2025
ID KB: 5074596
Artikel ini menguraikan perubahan yang terutama memengaruhi lingkungan yang dikelola perusahaan atau TI di mana skrip PowerShell digunakan untuk pengambilan konten web dan otomatisasi. Orang menggunakan perangkat dalam pengaturan pribadi atau rumah umumnya tidak perlu melakukan tindakan apa pun, karena skenario ini jarang dilakukan di luar lingkungan yang dikelola TI.
|
Ubah tanggal |
Ubah deskripsi |
|
20 Desember 2025 |
|
Rangkuman
Windows PowerShell 5.1 kini menampilkan perintah konfirmasi keamanan ketika menggunakan perintah Invoke-WebRequest untuk mengambil halaman web tanpa parameter khusus.
Peringatan Keamanan: Risiko Skrip Eksekusi Invoke-WebRequest menguraikan konten halaman web. Kode skrip di halaman web mungkin dijalankan saat halaman dipilah.
TINDAKAN YANG DISARANKAN: Gunakan tombol -UseBasicParsing untuk menghindari eksekusi kode skrip.
Ingin melanjutkan?
Perintah ini memperingatkan bahwa skrip di halaman dapat berjalan selama penguraian dan saran menggunakan parameter -UseBasicParsing untuk menghindari eksekusi skrip apa pun. Pengguna harus memilih untuk melanjutkan atau membatalkan operasi. Perubahan ini membantu melindungi terhadap konten web berbahaya dengan mengharuskan persetujuan pengguna sebelum tindakan yang berpotensi berisiko.
Perintah Invoke-WebRequest PowerShell membuat permintaan HTTP atau HTTPS ke server web dan mengembalikan hasilnya. Artikel ini mendokumen perubahan pengerasan di mana Windows PowerShell 5.1 sengaja menampilkan perintah konfirmasi keamanan saat menggunakan perintah Invoke-WebRequest untuk mengambil halaman web tanpa parameter khusus. Perilaku ini terjadi setelah klien dan server Windows yang didukung telah menginstal Windows Updates dirilis pada dan setelah 9 Desember 2025. Untuk informasi selengkapnya, lihat CVE-2025-54100.
Apa yang Berubah?
-
Perilaku sebelumnya
-
Penguraian Model Objek Dokumen Penuh (DOM) menggunakan komponen Internet Explorer (HTMLDocument Interface (mshtml)), yang dapat menjalankan skrip dari konten yang diunduh.
-
-
Perilaku baru
-
Perintah Konfirmasi Keamanan: Setelah menginstal pembaruan Windows yang dirilis pada atau setelah 9 Desember 2025, menjalankan perintah Invoke-WebRequest (juga dikenal sebagai lengkungan) di PowerShell 5.1 akan memicu perintah keamanan (ketika tidak ada parameter khusus yang digunakan). Perintah muncul di konsol PowerShell dengan peringatan tentang Risiko Eksekusi Skrip. Ini berarti PowerShell berhenti sebentar untuk memperingatkan Anda bahwa tanpa tindakan pencegahan, konten skrip halaman web bisa dijalankan pada sistem Anda saat diproses. Secara default, jika Anda menekan Enter (atau memilih Tidak), operasi akan dibatalkan demi keamanan. PowerShell akan memperlihatkan pesan bahwa pesan dibatalkan karena masalah keamanan dan menyarankan untuk menjalankan kembali perintah menggunakan parameter -UseBasicParsing untuk pemrosesan yang aman. Jika Anda memilih Ya, PowerShell akan melanjutkan untuk menguraikan halaman menggunakan metode lama (penguraian HTML penuh), yang berarti akan memuat konten dan skrip yang disematkan seperti yang digunakan. Pada dasarnya, memilih Ya berarti Anda menerima risiko dan mengizinkan perintah berjalan seperti sebelumnya, sementara memilih Tidak (default) menghentikan tindakan untuk melindungi Anda.
-
Interaktif vs. Penggunaan Skrip: Pengenalan perintah ini terutama mempengaruhi penggunaan interaktif. Dalam sesi interaktif, Anda akan melihat peringatan dan harus merespons. Untuk skrip otomatis (skenario non-interaktif seperti tugas terjadwal atau saluran pipa CI), perintah ini dapat menyebabkan skrip berhenti merespons saat menunggu input. Untuk menghindari hal tersebut, sebaiknya perbarui skrip tersebut untuk menggunakan parameter aman secara eksplisit (lihat di bawah ini), memastikan skrip tersebut tidak memerlukan konfirmasi manual.
-
Ambil tindakan
Sebagian besar skrip dan perintah PowerShell yang menggunakan perintah Invoke-WebRequest akan terus berfungsi dengan sedikit atau tanpa modifikasi. Misalnya, skrip yang hanya mengunduh konten atau bekerja dengan isi respons karena teks atau data tidak terpengaruh dan tidak memerlukan perubahan.Â
Jika Anda memiliki skrip yang terpengaruh oleh perubahan ini, gunakan salah satu pendekatan berikut ini.
Untuk mengambil konten, tidak diperlukan tindakan jika penggunaan perintah Invoke-WebRequest umumnya adalah mengambil konten (seperti mengunduh file atau membaca teks statis) dan Anda tidak mengandalkan interaksi situs tingkat lanjut atau penguraian DOM HTML. Perilaku default baru lebih aman—skrip yang disematkan dalam konten web tidak akan berjalan tanpa izin Anda—dan ini adalah konfigurasi yang disarankan untuk sebagian besar skenario.Â
Untuk penggunaan interaktif, cukup respons Tidak ke perintah keamanan baru (atau tekan Enter untuk menerima default) dan jalankan kembali perintah Anda dengan parameter -UseBasicParsing untuk mengambil konten dengan aman. Tindakan ini tidak akan mengeksekusi kode skrip apa pun di halaman yang disambungkan. Jika Anda sering mengambil konten web secara interaktif, pertimbangkan untuk menggunakan parameter -UseBasicParsing secara default dalam perintah Anda untuk melewati perintah sekaligus dan memastikan keamanan maksimum.Â
Untuk skrip otomatis atau tugas terjadwal, perbarui untuk menyertakan parameter -UseBasicMenyiapkan parameter pada panggilan Invoke-WebRequest. Tindakan ini akan memilih perilaku aman sehingga perintah tidak muncul dan skrip Anda terus berjalan tanpa gangguan. Dengan melakukan ini, Anda memastikan bahwa otomatisasi anda berjalan dengan mulus setelah pembaruan sambil tetap memanfaatkan keamanan yang disempurnakan.
-
Untuk skrip yang berjalan dengan opsi -NoProfile: Jika skrip memiliki banyak kemunculan panggilan Invoke-WebRequest, deklarasi $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true di bagian atas skrip.
-
Ketika Invoke-WebRequest digunakan dengan parameter -UseBasicParsing , penguraian Full Document Object Model (DOM) menggunakan komponen Internet Explorer (HTMLDocument Interface (mshtml)) tidak dimungkinkan.
Untuk skrip atau otomatisasi yang menangani konten web publik atau tidak tepercaya dan memerlukan pemrosesan struktur atau formulir HTML, pertimbangkan untuk memfaktor ulang atau memperbaruinya untuk keamanan jangka panjang. Daripada mengandalkan PowerShell untuk menguraikan dan menjalankan skrip halaman web yang berpotensi berbahaya, Anda dapat:Â
-
Gunakan metode atau pustaka pemilahan alternatif (misalnya, perlakukan konten halaman web sebagai teks biasa atau XML, menggunakan pustaka penguraian XML/HTML atau regex atau XML/HTML yang tidak menjalankan skrip).
-
Modernisasikan pendekatan Anda terhadap interaksi web, mungkin dengan menggunakan PowerShell Core yang lebih baru (versi 7.x atau yang lebih baru) yang tidak bergantung pada mesin Internet Explorer dan menghindari skrip yang berjalan, atau dengan menggunakan alat scraping web khusus yang menangani konten dengan lebih aman. Batasi keterganian pada fitur khusus Internet Explorer, karena Internet Explorer sudah tidak digunakan lagi. Rencanakan untuk menulis ulang bagian skrip Anda yang bergantung pada fitur tersebut sehingga mereka bisa bekerja di lingkungan tempat konten web ditangani dengan aman.
-
Invoke-WebRequest di PowerShell Core (versi 7.x atau yang lebih baru) tidak mendukung penguraian DOM menggunakan komponen Internet Explorer. Penguraian defaultnya akan mengambil konten dengan aman tanpa eksekusi skrip.
-
-
Tujuan dengan refactoring adalah untuk mencapai fungsionalitas yang Diperlukan tanpa mengekspos diri Anda pada risiko keamanan, sehingga merangkul default yang lebih aman yang diperkenalkan oleh perubahan ini.
Jika Anda memiliki kebutuhan khusus untuk menggunakan kapabilitas penguraian HTML penuh perintah Invoke-WebRequest (seperti berinteraksi dengan bidang formulir atau data terstruktur kerokan) dan Anda mempercayai sumber konten web, Anda masih bisa melanjutkan perilaku penguraian warisan berdasarkan kasus demi kasus. Dalam sesi interaktif, ini berarti memilih Ya pada perintah konfirmasi untuk memungkinkan operasi dilanjutkan. Anda akan menerima pengingat risiko keamanan setiap kali Anda melakukannya. Melanjutkan tanpa parameter -UseBasicParsing harus terbatas pada skenario di mana Anda sepenuhnya mempercayai konten web (misalnya, aplikasi web internal di bawah kontrol Anda atau situs web aman yang diketahui).Â
Penting:Â Pendekatan ini tidak disarankan untuk skrip yang berjalan terhadap konten web publik atau tidak tepercaya, karena ini memperkenalkan kembali risiko eksekusi skrip diam yang ditujukan untuk mengurangi pembaruan ini. Juga, untuk otomatisasi non-interaktif, tidak ada mekanisme bawaan untuk secara otomatis menyetujui perintah, jadi mengandalkan penguraian penuh dalam skrip tidak disarankan (selain berisiko). Gunakan opsi ini seperlunya dan hanya sebagai ukuran sementara.
Pertanyaan umum​​​​​​​
Untuk sebagian besar kasus, skrip yang mengunduh file atau mengambil konten web sebagai teks akan tetap berfungsi. Untuk menghindari perintah, tambahkan parameter -UseBasicParsing.
 Skrip menggunakan penguraian HTML tingkat lanjut (seperti formulir atau DOM) dapat menggantung atau membuat output data mentah, bukan objek terstruktur; Anda harus beralih ke penguraian dasar atau mengubah skrip untuk menangani konten secara berbeda.Â
Selalu gunakan parameter -UseBasicParsing dengan perintah Invoke-WebRequest dalam skrip PowerShell untuk memastikan eksekusi yang aman dan tidak interaktif. Â
Bisa. Skrip tergantung pada penguraian warisan harus diperbarui untuk memilih atau memfaktor ulang.
Perubahan di PowerShell berlaku untuk pembaruan standar dan pembaruan hotpatch, yang mengakibatkan perubahan perilaku yang sama.
Bisa. PowerShell 7 sudah menggunakan penguraian aman secara default.
Hubungi pemilik modul untuk paket dukungan. Gunakan opt-in untuk sementara waktu untuk konten tepercaya saat melakukan migrasi.
Untuk mempersiapkan dan memvalidasi perubahan ini, kami menyarankan agar Anda:Â
-
Identifikasi skrip menggunakan fitur DOM.
-
Uji otomatisasi dengan default baru.
-
Batasi pilihan warisan untuk sumber tepercaya.
-
Merencanakan refactoring untuk konten yang tidak tepercaya.