Ngày phát hành ban đầu: Ngày 9 tháng 12 năm 2025
ID KB: 5074596
Bài viết này mô tả một thay đổi chủ yếu ảnh hưởng đến doanh nghiệp hoặc môi trường do bộ phận CNTT quản lý nơi tập lệnh PowerShell được sử dụng để truy xuất tự động hóa và nội dung web. Con người cách sử dụng thiết bị trong cài đặt 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ì các trường hợp này không phổ biến bên ngoài môi trường do CNTT quản lý.
|
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 giờ đây sẽ 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ó thông số đặc biệt.
Cảnh báo Bảo mật: Rủi ro Thực Invoke-WebRequest tập lệnh sẽ 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 và khuyên bạn nên sử dụng tham số -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ệ chống lại nội dung web độc hại bằng cách yêu cầu người dùng chấp thuận trước các hành động tiềm ẩn rủi ro.
Lệnh Invoke-WebRequest của PowerShell tạo 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 tài liệu một thay đổi cứng mà Windows PowerShell 5.1 cố ý hiển thị một 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 mà 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 Windows Cập nhậ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.
Điều gì đã 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ác cấu phần của Internet Explorer (HTMLDocument Interface (mshtml)), có thể thực thi tập lệnh 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 được 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 PowerShell 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 đang tạm thận để cảnh báo bạn rằng 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 bỏ vì lý do an toàn. PowerShell sẽ hiển thị thông báo cho biết lệnh đã bị hủy do lo ngại về bảo mật và đề xuất chạy lại lệnh bằng cách sử dụng tham số -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 HTML đầy đủ), nghĩa là nó 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, việc chọn Có nghĩa là bạn chấp nhận rủi ro và cho phép lệnh chạy như trước đó, trong khi việc chọn Không (mặc định) sẽ dừng hành động để bảo vệ bạn.
-
Tương tác so với Sử dụng theo Tập lệnh: Việc giới thiệu lời nhắc 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 tập lệnh tự động (kịch bản không tương tác như tác vụ đã lên lịch hoặc đường ống CI), lời nhắc này có thể khiến tập lệnh bị 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 thông số an toàn một cách rõ ràng (xem bên dưới), đảm bảo chúng không yêu cầu xác nhận thủ công.
-
Thực hiện hành động
Hầu hết các tập lệnh và lệnh PowerShell sử dụng lệnh Invoke-WebRequest sẽ tiếp tục hoạt động với ít hoặc không sửa đổi. 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 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 đây.
Để tải nội dung, không cần thực hiện hành động nào nếu bạn sử dụng lệnh Invoke-WebRequest điển hình 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 site nâng cao hoặc phân tích HTML DOM. Hành vi mặc định mới an toàn 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) và 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 hiện bất kỳ mã kịch bản trong trang tải. Nếu bạn thường xuyên tải nội dung web một 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 mình để bỏ qua lời nhắc 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 để bao gồm tham số -UseBasicParsing trên cuộc gọi Invoke-WebRequest. Điều này preselects hành vi an toàn để lời nhắc không xuất hiện và kịch bản của bạn tiếp tục chạy mà không bị gián đoạn. Bằng cách làm điều này, bạn đảm bảo rằ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 lợi thế của 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 xuất hiện của cuộc gọi Invoke-WebRequest, hãy khai báo $PSDefaultParameterValues['Invoke-WebRequest:UseBasicParsing'] = $true ở đầu tập lệnh.
-
Khi sử dụng Invoke-WebRequest với tham số -UseBasicParsing , không thể phân tích Mô hình Đối tượng Toàn bộ Tài liệu (DOM) bằng cách sử dụng các cấu phần của Internet Explorer (HTMLDocument Interface (mshtml)).
Đối với các tập lệnh hoặc tự động hóa đối phó với nội dung web không tin cậy hoặc công cộng 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 để an toàn lâu dài. Thay vì dựa vào PowerShell để phân tích và chạy tập lệnh trang web có khả năng nguy hiểm, bạn có thể:
-
Sử dụng các phương pháp hoặc thư viện phân tích thay thế (ví dụ, coi nội dung trang web như văn bản thuần hoặc XML, dùng thư viện phân tích regex hoặc XML/HTML không thực thi tập lệnh).
-
Hiện đại hóa phương pháp tiếp cận của bạn đối với các tương tác web, có lẽ 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ụ chuyên dụng cạo web 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 dùng nữa. Lập kế hoạch viết lại các phần của tập lệnh phụ thuộc vào các tính năng đó để chúng có thể hoạt động trong 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 DOM bằng cách sử dụng các cấu phần Internet Explorer. Phân tích mặc định của nó sẽ truy xuất an toàn nội dung mà không cần thực thi tập lệnh.
-
-
Mục tiêu với refactoring là để đạt được chức năng cần thiết của bạn mà không lộ bản thân để rủi ro bảo mật, do đó bao gồm các mặc định an toàn hơn được giới thiệu bởi sự thay đổi này.
Nếu bạn có một 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 cạo 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ỉ có nghĩa là chọn Có tại lời nhắc xác nhận để cho phép thao tác tiếp tục. Bạn sẽ nhận được lời nhắc về rủi ro bảo mật mỗi khi làm như vậy. Thủ tục mà không có tham số -UseBasicParsing nên được giới hạn trong các kịch bản mà bạn hoàn toàn tin tưởng nội dung web (ví dụ, các ứng dụng web nội bộ dưới sự 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 khích cho các tập lệnh chạy chống lại nội dung web không đáng tin cậy hoặc công cộng, vì nó giới thiệu lại 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 sẵn để tự động đồng ý với lời nhắc, do đó, dựa vào phân tích đầy đủ trong kịch bản là không nên (ngoài việc là nguy hiểm). Hạn chế sử dụng tùy chọn này và chỉ sử dụng làm biện pháp tạm thời.
Câu hỏi thường gặp
Đối với 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 của mình để xử lý nội dung theo cách khác.
Luôn sử dụng tham số -UseBasicParsing với lệnh Invoke-WebRequest trong tập lệnh PowerShell để đảm bảo thực thi an toàn, không tương tác.
Có. Tập lệnh tùy thuộc vào việc phân tích thừa tự phải được cập nhật để chọn tham gia hoặc cấu phần lại.
Thay đổi trong PowerShell được áp dụng cho cả bản cập nhật tiêu chuẩn và cập nhật hotpatch, dẫn đến thay đổi hành vi tương tự.
Có. PowerShell 7 đã sử dụng tính năng phân tích an toàn theo mặc định.
Liên hệ với chủ 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 tin cậy trong khi di chuyển.
Để 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ác 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ự ở các nguồn đáng tin cậy.
-
Lên kế hoạch tái cạo cho nội dung không đáng tin cậy.