Lưu ý
- Ngày xuất bản ban đầu: Ngày 9 tháng 12 năm 2025
- ID KB: 5074596
Lưu ý
Bài viết này mô tả một thay đổi chủ yếu ảnh hưởng đến môi trường doanh nghiệp hoặc môi trường được quản lý bởi CNTT, nơi các tập lệnh PowerShell được sử dụng để tự động hóa và truy xuất nội dung web. People sử dụng thiết bị trong môi trường cá nhân hoặc gia đình thường không cần thực hiện bất kỳ hành động nào vì những trường hợp này không phổ biến bên ngoài môi trường do bộ phận CNTT quản lý.
Nhật ký thay đổi
| Thay đổi ngày | Thay đổi mô tả |
|---|---|
| Ngày 20 tháng 12 năm 2025 |
|
Tóm tắt
Windows PowerShell 5.1 hiện hiển thị lời nhắc xác nhận bảo mật khi sử dụng lệnh Invoke-WebRequest để tải trang web không có tham số đặc biệt.
Lưu ý
- Cảnh báo bảo mật: Rủi ro thực thi tập lệnh Invoke-WebRequest phân tích cú pháp nội dung của trang web. Mã tập lệnh trong trang web có thể chạy khi trang được phân tích.
- HÀNH ĐỘNG ĐƯỢC ĐỀ XUẤT: Sử dụng khóa chuyển -UseBasicParsing để tránh thực thi mã tập lệnh.
- Bạn có muốn tiếp tục không?
Lời nhắc này cảnh báo rằng các tập lệnh trong trang có thể chạy trong quá trình phân tích cú pháp và khuyên bạn nên sử dụng
-UseBasicParsing để tránh bất kỳ thực thi tập lệnh nào. Người dùng phải chọn tiếp tục hoặc hủy thao tác. Thay đổi này giúp bảo vệ khỏi nội dung web độc hại bằng cách yêu cầu sự đồng ý của người dùng trước khi có hành động rủi ro tiềm ẩn.
Lệnh Invoke-WebRequest của PowerShell thực hiện yêu cầu HTTP hoặc HTTPS đến máy chủ web và trả về kết quả. Bài viết này ghi lại một thay đổi cứng nhắc khi Windows PowerShell 5.1 cố ý hiển thị lời nhắc xác nhận bảo mật khi sử dụng lệnh Invoke-WebRequest để tải các trang web không có tham số đặc biệt. Hành vi này xảy ra sau khi máy khách và máy chủ Windows được hỗ trợ đã cài đặt các Bản Cập nhật Windows được phát hành vào và sau ngày 9 tháng 12 năm 2025. Để biết thêm thông tin, hãy xem CVE-2025-54100.
Nội dung nào đã thay đổi?
Hành vi trước đó
- Phân tích Mô hình Đối tượng Tài liệu Đầy đủ (DOM) bằng cách sử dụng các thành phần Internet Explorer (Giao diện HTMLDocument (mshtml)), có thể thực thi script từ nội dung đã tải xuống.
Hành vi mới
Lời nhắc xác nhận bảo mật: Sau khi cài đặt các bản cập nhật Windows được phát hành vào hoặc sau ngày 9 tháng 12 năm 2025, việc chạy lệnh Invoke-WebRequest (còn gọi là curl) trong PowerShell 5.1 sẽ kích hoạt lời nhắc bảo mật (khi không có tham số đặc biệt nào được sử dụng). Lời nhắc xuất hiện trong bảng điều khiển Windows PowerShell cùng với cảnh báo về Rủi ro thực thi Tập lệnh.
Điều này có nghĩa là PowerShell sẽ tạm dừng để cảnh báo bạn rằng nếu không có biện pháp phòng ngừa, nội dung tập lệnh trang web có thể thực thi trên hệ thống của bạn khi nó được xử lý. Theo mặc định, nếu bạn nhấn Enter (hoặc chọn Không), thao tác sẽ bị hủy vì an toàn. PowerShell sẽ hiển thị thông báo cho biết nó đã bị hủy bỏ do các mối lo ngại về bảo mật và đề xuất chạy lại lệnh bằng cách sử dụng
-UseBasicParsing để xử lý an toàn. Nếu bạn chọn Có, PowerShell sẽ tiến hành phân tích trang bằng phương pháp cũ hơn (phân tích cú pháp HTML đầy đủ), nghĩa là PowerShell sẽ tải nội dung và bất kỳ tập lệnh nhúng nào như trước đây. Về cơ bản, chọn Có có nghĩa là bạn chấp nhận rủi ro và cho phép lệnh chạy như trước đây, trong khi chọn Không ( mặc định) sẽ dừng hành động để bảo vệ bạn.Sử dụng tương tác so với theo kịch bản: Việc đưa ra yêu cầu này chủ yếu ảnh hưởng đến việc sử dụng tương tác. Trong các phiên tương tác, bạn sẽ thấy cảnh báo và phải phản hồi. Đối với các tập lệnh tự động (các kịch bản không tương tác như tác vụ đã lên lịch hoặc quy trình CI), lời nhắc này có thể khiến tập lệnh treo trong khi chờ đầu vào. Để tránh điều đó, chúng tôi khuyên bạn nên cập nhật các tập lệnh đó để sử dụng rõ ràng các tham số an toàn (xem bên dưới), đảm bảo chúng không yêu cầu xác nhận thủ công.
Hành động
Hầu hết các tập lệnh và tập lệnh PowerShell sử dụng lệnh Invoke-WebRequest sẽ tiếp tục hoạt động mà không cần sửa đổi hoặc sửa đổi rất ít. Ví dụ: các tập lệnh chỉ tải xuống nội dung hoặc làm việc với nội dung phản hồi dưới dạng văn bản hoặc dữ liệu sẽ không bị ảnh hưởng và không yêu cầu thay đổi.
Nếu bạn có tập lệnh bị ảnh hưởng bởi thay đổi này, hãy sử dụng một trong các phương pháp sau.
Tùy chọn 1: Sử dụng mặc định bảo mật mới
Để tìm nạp nội dung, không cần thực hiện thêm hành động nào nếu cách sử dụng lệnh Invoke-WebRequest thông thường là để tải nội dung (như tải xuống tệp hoặc đọc văn bản tĩnh) và bạn không dựa vào tương tác trang nâng cao hoặc phân tích cú pháp HTML DOM. Hành vi mặc định mới bảo mật hơn—các tập lệnh được nhúng trong nội dung web sẽ không chạy mà không có sự cho phép của bạn—và đây là cấu hình được đề xuất cho hầu hết các kịch bản.
Để sử dụng tương tác, chỉ cần trả lời Không cho lời nhắc bảo mật mới (hoặc nhấn Enter để chấp nhận mặc định), rồi chạy lại lệnh của bạn với tham số -UseBasicParsing để truy xuất nội dung một cách an toàn. Điều này sẽ tránh thực thi bất kỳ mã tập lệnh nào trong trang được tải vào. Nếu bạn thường xuyên tải nội dung web theo cách tương tác, hãy cân nhắc sử dụng tham số -UseBasicParsing theo mặc định trong các lệnh của bạn để bỏ qua yêu cầu hoàn toàn và đảm bảo an toàn tối đa.
Đối với các tập lệnh tự động hoặc tác vụ đã lên lịch, hãy cập nhật chúng để tích hợp tham số -UseBasicParsing trên các lệnh gọi Invoke-WebRequest . Thao tác này sẽ chọn trước hành vi an toàn để lời nhắc không xuất hiện và tập lệnh của bạn tiếp tục chạy mà không bị gián đoạn. Bằng cách này, bạn đảm bảo rằng hoạt động tự động hóa của bạn chạy liền mạch sau khi cập nhật trong khi vẫn tận dụng được phần bảo mật được cải thiện.
- Đối với các tập lệnh chạy với tùy chọn -NoProfile: Nếu tập lệnh có nhiều lần gọi Invoke-WebRequest , hãy khai báo $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true ở đầu tập lệnh.
- Khi Invoke-WebRequest được sử dụng với tham số -UseBasicParsing , không thể phân tích Mô hình Đối tượng Tài liệu Đầy đủ (DOM) bằng cách sử dụng các cấu phần Internet Explorer (Giao diện HTMLDocument (mshtml)).
Tùy chọn 2: Tập lệnh tái cấu trúc để bảo mật lâu dài
Đối với các tập lệnh hoặc tự động hóa xử lý nội dung web không đáng tin cậy hoặc công khai và yêu cầu xử lý các cấu trúc hoặc biểu mẫu HTML, hãy cân nhắc tái cấu trúc hoặc cập nhật chúng để đảm bảo an toàn lâu dài. Thay vì dựa vào PowerShell để phân tích cú pháp và chạy các tập lệnh trang web tiềm tàng nguy hiểm, bạn có thể:
Sử dụng các phương pháp phân tích hoặc thư viện thay thế (ví dụ: xử lý nội dung trang web là văn bản thuần hoặc XML, sử dụng regex hoặc thư viện phân tích XML/HTML không thực thi tập lệnh).
Hiện đại hóa cách tiếp cận của bạn đối với các tương tác web, có thể bằng cách sử dụng PowerShell Core mới hơn (phiên bản 7.x trở lên) không phụ thuộc vào công cụ của Internet Explorer và tránh chạy tập lệnh hoặc bằng cách sử dụng các công cụ thu thập dữ liệu web chuyên dụng xử lý nội dung an toàn hơn. Giới hạn sự phụ thuộc vào các tính năng cụ thể của Internet Explorer vì Internet Explorer đã không còn được chấp nhận. Lên kế hoạch viết lại các phần tập lệnh phụ thuộc vào các tính năng đó để chúng có thể hoạt động trong một môi trường nơi nội dung web được xử lý an toàn.
- Invoke-WebRequest trong PowerShell Core (phiên bản 7.x trở lên) không hỗ trợ phân tích cú pháp DOM bằng các thành phần Internet Explorer. Việc phân tích cú pháp mặc định của nó sẽ truy xuất nội dung một cách an toàn mà không cần thực thi tập lệnh.
Mục tiêu của việc tái cấu trúc là đạt được chức năng cần thiết của bạn mà không phải để bạn gặp phải rủi ro bảo mật, từ đó chấp nhận các mặc định an toàn hơn do thay đổi này đưa vào.
Tùy chọn 3: Chọn tham gia vào hành vi kế thừa (chỉ các trường hợp đáng tin cậy)
Nếu bạn có nhu cầu cụ thể để sử dụng các chức năng phân tích HTML đầy đủ của lệnh Invoke-WebRequest (chẳng hạn như tương tác với các trường biểu mẫu hoặc thu thập dữ liệu có cấu trúc) và bạn tin cậy nguồn của nội dung web, bạn vẫn có thể tiếp tục hành vi phân tích kế thừa trên cơ sở từng trường hợp. Trong các phiên tương tác, điều này chỉ đơn giản có nghĩa là chọn Có tại lời nhắc xác nhận để cho phép tiếp tục thao tác. Bạn sẽ nhận được lời nhắc về rủi ro bảo mật mỗi khi bạn làm như vậy. Nên giới hạn tiến hành mà không có tham số -UseBasicParsing trong các kịch bản mà bạn hoàn toàn tin tưởng vào nội dung web (ví dụ: các ứng dụng web nội bộ dưới quyền kiểm soát của bạn hoặc các trang web an toàn đã biết).
Quan trọng
Phương pháp này không được khuyến nghị cho các tập lệnh chạy đối với nội dung web công khai hoặc không đáng tin cậy vì phương pháp này tái gây ra nguy cơ thực thi tập lệnh im lặng mà bản cập nhật này nhằm giảm thiểu. Ngoài ra, đối với tự động hóa không tương tác, không có cơ chế tích hợp để tự động đồng ý với lời nhắc, vì vậy không nên dựa vào việc phân tích đầy đủ trong tập lệnh (ngoài việc có rủi ro). Hạn chế sử dụng tùy chọn này và chỉ như biện pháp tạm thời.
Câu hỏi thường gặp
Thay đổi này có ảnh hưởng đến tập lệnh của tôi không?
Trong hầu hết các trường hợp, các tập lệnh tải xuống tệp hoặc tải nội dung web dưới dạng văn bản sẽ vẫn hoạt động. Để tránh lời nhắc, hãy thêm tham số -UseBasicParsing .
Các tập lệnh sử dụng phân tích HTML nâng cao (như biểu mẫu hoặc DOM) có thể treo hoặc xuất dữ liệu thô thay vì các đối tượng có cấu trúc; Bạn sẽ cần chuyển sang phân tích cơ bản hoặc sửa đổi tập lệnh để xử lý nội dung theo cách khác nhau.
Làm cách nào để tránh lời nhắc xác nhận mới trong tập lệnh của mình?
Luôn sử dụng tham số -UseBasicParsing với lệnh Invoke-WebRequest trong các tập lệnh PowerShell để đảm bảo thực thi an toàn, không tương tác.
Thay đổi này có yêu cầu thực hiện bất kỳ hành động nào đối với các tập lệnh cũ không?
Có. Các tập lệnh phụ thuộc vào phân tích phiên bản cũ phải được cập nhật để chọn tham gia hoặc tái cấu hình.
Thay đổi này được phản ánh như thế nào trong bản cập nhật hotpatch và bản cập nhật tiêu chuẩn?
Thay đổi trong PowerShell có thể áp dụng cho cả bản cập nhật tiêu chuẩn và cập nhật bản vá nóng, dẫn đến cùng một thay đổi hành vi.
Thay đổi này có phù hợp với PowerShell 7 không?
Có. PowerShell 7 đã sử dụng phân tích phân tích an toàn theo mặc định.
Tôi nên làm gì với các tập lệnh hoặc mô-đun của bên thứ ba?
Liên hệ với người sở hữu mô-đun để biết các gói hỗ trợ. Sử dụng tùy chọn tham gia tạm thời cho nội dung đáng tin cậy trong khi di chuyển.
Làm thế nào để tôi xác nhận rằng môi trường của tôi đã sẵn sàng?
Để chuẩn bị và xác thực thay đổi này, chúng tôi khuyên bạn:
- Xác định tập lệnh bằng cách sử dụng tính năng DOM.
- Kiểm tra tự động hóa với mặc định mới.
- Giới hạn chọn tham gia thừa tự chỉ ở các nguồn đáng tin cậy.
- Lập kế hoạch tái cấu trúc cho nội dung không đáng tin cậy.