AI Hacking - Cách tin tặc sử dụng trí tuệ nhân tạo trong các cuộc tấn công mạng

Đọc ngay
Chúng tôi sử dụng trí tuệ nhân tạo để dịch trang web và trong khi chúng tôi cố gắng đạt được độ chính xác, chúng có thể không phải lúc nào cũng chính xác 100%. Sự hiểu biết của bạn được đánh giá cao.

Phân tích toàn diện về CVE-2024-6778: Lỗ hổng bảo mật Race Condition trong Chrome DevTools

bằng cách OPSWAT
Chia sẻ bài viết này

Trình duyệt web được cài đặt trên hàng tỷ thiết bị trên toàn thế giới, khiến chúng trở thành mục tiêu hàng đầu của tội phạm mạng. Vì các trình duyệt web lớn có lượng người dùng khổng lồ, chỉ một lỗ hổng bảo mật cũng có thể gây ra hậu quả nghiêm trọng. Việc cập nhật trình duyệt là rất quan trọng để luôn được bảo vệ trước các mối đe dọa ngày càng gia tăng.  

Để minh họa mức độ nghiêm trọng của các lỗ hổng bảo mật trên trình duyệt web, các cộng sự của chúng tôi đã tiến hành phân tích chuyên sâu về CVE-2024-6778, một lỗ hổng bảo mật trong các trình duyệt dựa trên Chromium, đặc biệt ảnh hưởng đến Chrome DevTools. Bài viết này cung cấp phân tích chi tiết về các khía cạnh kỹ thuật của lỗ hổng, tác động tiềm ẩn và các chiến lược giảm thiểu.  

Hai nhà nghiên cứu được ghi nhận về lỗ hổng CVE-2024-6778 của Chrome DevTools, với thông tin liên kết với trường đại học được hiển thị

Bối cảnh của CVE-2024-6778

CVE-2024-6778 là một lỗ hổng chạy đua được phát hiện trong Chrome DevTools. Lỗ hổng này cho phép kẻ tấn công chèn mã HTML hoặc JavaScript độc hại vào các trang trình duyệt đặc quyền thông qua các tiện ích mở rộng độc hại. Theo NVD (Cơ sở dữ liệu Lỗ hổng Quốc gia), lỗ hổng này được đánh giá ở mức độ nghiêm trọng cao, với điểm CVSS là 8,8.  

Mức độ nghiêm trọng cao của lỗ hổng này là do khả năng cho phép thực thi mã từ xa, có thể dẫn đến xâm phạm hệ thống, gây tổn hại đến tính bảo mật và giảm tính khả dụng.  

Ảnh chụp màn hình giao diện người dùng hiển thị chi tiết về lỗ hổng CVE-2024-6778 của Chrome DevTools và điểm số mức độ nghiêm trọng cao của CVSS

Tổng quan về bảo mật Chromium

Để hiểu sâu hơn về tác động của CVE-2024-6778, điều quan trọng là phải nắm rõ các khía cạnh chính của mô hình bảo mật Chromium. Chromium là nền tảng mã nguồn mở cho các trình duyệt như Google Chrome, Microsoft Edge, Opera và Brave. Chromium sử dụng mô hình đa quy trình, trong đó mỗi tab, còn được gọi là trình kết xuất, và các thành phần trình duyệt khác nhau chạy trong các quy trình riêng biệt để tăng cường tính ổn định và bảo mật bằng cách hạn chế phạm vi xâm phạm tiềm ẩn. 

Một yếu tố bảo mật cơ bản của Chromium là cơ chế hộp cát, hạn chế các tiến trình render truy cập trực tiếp vào tài nguyên hệ thống. Thay vào đó, tất cả các tương tác được quản lý thông qua các kênh IPC (Giao tiếp giữa các tiến trình) để đảm bảo chỉ các thao tác được ủy quyền mới được thực hiện.  

Không phải tất cả các thành phần trong Chromium đều phải chịu chế độ hộp cát hoàn toàn. Các trang WebUI, chẳng hạn như chrome://settings và chrome://downloads , được hiển thị trong các quy trình kết xuất nhưng hoạt động với các hạn chế hộp cát một phần. Quy trình này cấp cho chúng quyền truy cập vào các API trình duyệt mà thông thường không thể truy cập qua web.

Giao diện người dùng cài đặt chính sách Chrome hiển thị tên, giá trị và trạng thái chính sách liên quan đến lỗ hổng CVE-2024-6778 của Chrome DevTools

Ví dụ, trang chrome://policy đóng vai trò quan trọng trong môi trường doanh nghiệp vì nó cho phép quản trị viên và người dùng cấu hình và thực thi các chính sách bảo mật của trình duyệt. Các chính sách này cũng được quản lý thông qua Chính sách Nhóm trên hệ thống Windows.  

chrome://policy có thể tương tác trực tiếp với hệ điều hành, nên đây là mục tiêu giá trị cho kẻ tấn công. Với lỗ hổng CVE-2024-6778 khai thác tình trạng chạy đua (race condition) trong Chrome DevTools, kẻ tấn công có thể chèn mã độc vào các trang này, gây ra rủi ro bảo mật nghiêm trọng.  

Phân tích kỹ thuật của CVE-2024-6778

Khám phá

Lỗ hổng này được phát hiện trong một tính năng thử nghiệm được giới thiệu trong Chrome Enterprise phiên bản 117. Tính năng này cho phép kiểm tra chính sách thông qua trang chrome://policy/test . Do tài liệu chính thức về tính năng này còn hạn chế, các cộng sự của chúng tôi đã tiến hành kiểm tra kỹ lưỡng mã nguồn Chromium, kết hợp với thông tin chi tiết từ tác giả CVE, để hiểu đầy đủ về việc triển khai tính năng này và xác định các lỗ hổng bảo mật liên quan.

Thành phần quản lý chính sách 

OPSWAT phân tích mã nguồn của các nghiên cứu viên cho thấy rằng trong chrome://policy/test, các chính sách được quản lý bằng cách sử dụng Thông tin chính sách giao diện và truyền thông giữa WebUI và các quy trình trình duyệt thông qua PolicyTestBrowserProxy lớp học. Các Thông tin chính sách cấu trúc được định nghĩa như sau:  

Giao diện TypeScript cho PolicyInfo hiển thị các thành phần quản lý chính sách trong lỗ hổng CVE-2024-6778 của Chrome DevTools

Bằng cách kiểm tra thêm lớp chịu trách nhiệm xử lý các chính sách này đã xác định được một phương pháp có tên là applyTestPolicies. Phương pháp này tận dụng một API , setLocalTestPolicies, để áp dụng động một danh sách chính sách.

Đoạn mã hiển thị logic quản lý chính sách liên quan đến lỗ hổng CVE-2024-6778 của Chrome DevTools

Để hiểu rõ hơn về cách các yêu cầu chính sách được xử lý thông qua điều này API , các đồng nghiệp phân tích HandleSetLocalTestPolicies phương pháp trong PolicyUIHandler lớp học: 

Đoạn mã hiển thị logic quản lý chính sách liên quan đến lỗ hổng CVE-2024-6778 của Chrome DevTools

Các HandleSetLocalTestPolicies phương pháp lấy dữ liệu chính sách từ các đối số được cung cấp và lấy một con trỏ tới Nhà cung cấp chính sách kiểm tra cục bộ thông qua trình kết nối chính sách toàn cục của trình duyệt. Sau đó, nó xác minh sự tồn tại của nhà cung cấp này trước khi hướng dẫn hồ sơ người dùng hiện tại sử dụng nó.  

Việc xác minh này được cho là không đủ vì nó chỉ đảm bảo rằng nhà cung cấp kiểm tra cục bộ không phải là null trước khi áp dụng các chính sách. Việc tạo và khởi tạo nhà cung cấp kiểm tra cục bộ được kiểm soát bởi TạoNếuĐượcChoPhép phương pháp:  

Mã C++ cho LocalTestPolicyProvider trong Chrome, liên quan đến chính sách quản lý lỗ hổng CVE-2024-6778 của Chrome DevTools

Trong vòng TạoNếuĐượcChoPhép phương pháp, giá trị trả về hoàn toàn phụ thuộc vào kết quả của IsPolicyTestingEnabled chức năng. Chức năng này xác định xem một Nhà cung cấp chính sách kiểm tra cục bộ phiên bản được tạo ra dựa trên sự kết hợp giữa tùy chọn của người dùng và kênh phát hành của trình duyệt: 

Mã C++ kiểm tra trạng thái thử nghiệm chính sách, liên quan đến lỗ hổng CVE-2024-6778 của Chrome DevTools trong quản lý chính sách

Từ dịch vụ ưu tiên luôn được đặt thành null mỗi lần IsPolicyTestingEnabled() được gọi, điều kiện đầu tiên sẽ bị bỏ qua, khiến quyết định kích hoạt chỉ dựa vào kênh phát hành của trình duyệt.

Trong các bản dựng Chromium không có thương hiệu, kênh phát hành mặc định là Kênh::KHÔNG RÕ. Theo logic của hàm, Kênh::KHÔNG RÕ được đối xử giống như Kênh::MẶC ĐỊNH, cho phép tính năng kiểm tra chính sách theo mặc định. Phân tích luồng mã cho thấy rằng riêng tư API setLocalTestPolicies có thể được gọi thông qua WebUI để áp dụng các chính sách mà không có bất kỳ hạn chế truy cập có ý nghĩa nào. 

Khai thác

Bằng cách xác định và tận dụng quyền riêng tư này API , kẻ tấn công có thể tùy ý áp dụng các chính sách thông qua WebUI, cho phép thao túng các cài đặt như BrowserSwitcherEnabled, BrowserSwitcherUrlList, Đường dẫn trình duyệt thay thế, Và AlternativeBrowserParameters để thực hiện các lệnh. Ví dụ, bằng cách thiết lập Đường dẫn trình duyệt thay thế để powershell và AlternativeBrowserParameters ĐẾN ["tính toán"], các lệnh shell tùy ý có thể được thực thi khi truy cập vào một URL cụ thể.

Áp dụng Chính sách người dùng độc hại tùy ý thông qua Riêng tư API

Để chứng minh cách các chính sách có thể được áp dụng bằng cách sử dụng riêng tư setLocalTestPolicies API được xác định trong phân tích trước đó, mã JavaScript sau đây là một tập lệnh thiết lập Cho phép Khủng longTrứng Phục sinh chính sách và áp dụng nó một cách hiệu quả thông qua Giao diện web by invoking setLocalTestPolicies:

Mã JavaScript thiết lập chính sách Chrome thông qua riêng tư API , minh họa lỗ hổng CVE-2024-6778 của Chrome DevTools

Chính sách có thể được áp dụng thành công để vô hiệu hóa Cho phép Khủng longTrứng Phục sinh cài đặt.

Chrome DevTools hiển thị các thay đổi chính sách thông qua riêng tư API , minh họa lỗ hổng CVE-2024-6778 của Chrome DevTools

Để có tác động lớn hơn, kẻ tấn công có thể nhắm mục tiêu vào Trình duyệt chuyển đổi chính sách:

Cấu hình JSON hiển thị chính sách chuyển đổi trình duyệt, liên quan đến lỗ hổng CVE-2024-6778 Chrome DevTools và riêng tư API lạm dụng

Chính sách này cho phép trình duyệt gọi một đường dẫn trình duyệt thay thế nếu URL khớp với một số điều kiện nhất định. Có thể khai thác chính sách này bằng cách cấu hình đường dẫn này để trỏ đến một tệp thực thi hệ thống nhằm thực thi các lệnh của hệ điều hành. Đoạn mã JavaScript sau minh họa cách tiếp cận này:

Mã JavaScript khai thác lỗ hổng CVE-2024-6778 của Chrome DevTools để thiết lập chính sách người dùng độc hại thông qua quyền riêng tư API

Tập lệnh này thực hiện các nhiệm vụ sau: 

  • Cho phép Trình duyệt chuyển đổi tính năng cho example.com 
  • Đặt đường dẫn trình duyệt thay thế tới powerShell 
  • Thực hiện tính toán bất cứ khi nào URL được chỉ định được truy cập.
Giao diện người dùng hiển thị chính sách Chrome, mã DevTools và ứng dụng máy tính, minh họa lỗ hổng CVE-2024-6778 của Chrome DevTools

Mô phỏng tiện ích mở rộng Chrome độc hại

Xác định riêng tư API Việc cho phép áp dụng các chính sách này sẽ tạo ra một hướng tấn công đáng kể cho kẻ tấn công. Để khai thác lỗ hổng này một cách hiệu quả, kẻ tấn công sẽ cần phát triển một tiện ích mở rộng Chrome độc hại sử dụng Chrome DevTools. API để thực thi mã JavaScript độc hại.  

Để chứng minh tác động tiềm ẩn trong thế giới thực, các nghiên cứu viên của chúng tôi đã mô phỏng một tình huống trong đó tiện ích mở rộng Chrome độc hại được cài đặt trên trình duyệt dễ bị tấn công và được sử dụng để thực hiện cuộc tấn công. API chrome.devtools trong Tiện ích mở rộng Chrome cho phép các nhà phát triển mở rộng và tương tác với giao diện DevTools của Chrome.  

Tuy nhiên, thực hiện DevTools API thông qua một phần mở rộng đưa ra một số thách thức nhất định phải được bỏ qua. Đầu tiên, DevTools API chỉ hoạt động khi DevTools được mở và đang tích cực kiểm tra một trang web. Thứ hai, DevTools API không cho phép thực thi mã trên giao diện người dùng web, WebUI. Giới hạn này giúp duy trì tính bảo mật và tính toàn vẹn của WebUI trong quá trình phát triển và kiểm tra.

Dấu hiệu cho thấy Javascript đang được thực thi thông qua tải lại API

Phân tích sâu hơn cho thấy hàm chrome.devtools.inspectedWindow.reload thiếu khả năng xác minh để xác nhận liệu tiện ích mở rộng có được phép chạy tập lệnh trên trang được kiểm tra hay không. Mức độ phòng thủ duy nhất của nó là máy chủ tiện ích mở rộng devtools, vốn sẽ chặn quyền truy cập khi URL của trang được kiểm tra thay đổi.  

Sơ đồ khối hiển thị hành vi checkedWindow.reload() đối với lỗ hổng CVE-2024-6778 của Chrome DevTools thông qua tải lại API

Các trang About:blank kế thừa quyền và nguồn gốc của trang đã mở chúng. Điều này có nghĩa là khả năng thực thi mã trên about:blank khi được chuyển hướng từ các tín hiệu WebUI là một lỗ hổng bảo mật tiềm ẩn.

Thực thi mã trên webUI thông qua tải lại API

Tình trạng chạy đua trong chrome.devtools.inspectedWindow.reload() cho phép thực thi mã trên các trang WebUI của Chrome (ví dụ: chrome://policy), thường được bảo vệ. Lỗ hổng này lợi dụng việc tải lại API Khả năng chèn JavaScript trong quá trình chuyển đổi trang. Cách thức hoạt động như sau:

  • WebUI mục tiêu: Mở trang WebUI (ví dụ: chrome://policy) trong một tab và đính kèm DevTools.
  • Inject Script: Sử dụng reload() API với một injectScript tham số để chạy JavaScript tùy ý trong quá trình tải lại.
  • Khai thác tình trạng chạy đua: Tình trạng chạy đua xảy ra khi quá trình tải lại được kích hoạt trước khi cơ chế bảo mật của WebUI được khởi tạo hoàn toàn, cho phép tập lệnh được đưa vào thực thi.

Trong bối cảnh điều hướng từ trang about:blank đến chrome://policy:  

Sơ đồ hiển thị lỗ hổng CVE-2024-6778 của Chrome DevTools thông qua tải lại API và thiết lập nguồn gốc trong quá trình điều hướng

Vì chỉ xác minh URL thay vì xác minh nguồn gốc của trang nên sẽ có một khoảng thời gian ngắn sau khi điều hướng, trong đó nguồn gốc phản ánh trang mới trong khi URL vẫn không thay đổi.

Nếu như chrome.devtools.inspectedWindow.reload được gọi trong cửa sổ này, nó có thể vô tình thực thi JavaScript trên trang đích.

Cải thiện độ tin cậy cho điều kiện chạy đua

Việc khai thác tình trạng chạy đua vốn không đáng tin cậy do phụ thuộc vào thời gian. Ngoài ra, việc tải lại nhanh hoặc các tập lệnh bị lỗi có thể gây ra sự cố sập trang. Một cách tiếp cận mới để cải thiện độ tin cậy là cố tình gây ra sự cố sập trang, vì các lệnh được đưa ra thông qua DevTools thường bị hủy trong quá trình sập, nhưng Trang.tải lại được ánh xạ tới chrome.devtools.inspectedWindow.reload() được đưa vào danh sách trắng và thực hiện sau khi trang tải lại.

Mã C++ xử lý các thông báo đang chờ xử lý trong Chrome DevTools, liên quan đến tình trạng chạy đua lỗ hổng CVE-2024-6778 của Chrome DevTools

Sau đây là mô hình quy trình làm việc để làm sập một trang bằng cách đẩy các lệnh tiếp theo:  

Sơ đồ hiển thị quy trình xử lý lỗ hổng CVE-2024-6778 của Chrome DevTools để cải thiện độ tin cậy của tình trạng chạy đua

Câu lệnh gỡ lỗi trong Content Script có thể gây ra sự cố

Việc sử dụng trình gỡ lỗi hai lần liên tiếp sẽ làm gián đoạn quá trình điều hướng trong tập lệnh nội dung. Nó có thể dẫn đến sự cố bằng cách đặt trạng thái cam kết điều hướng vào trạng thái không lường trước được. Vấn đề này phát sinh khi RenderFrameImpl::SynchronouslyCommitAboutBlankForBug778318 được thực hiện, thay đổi _navigation_commit_state đến một giá trị không ngờ tới.

Đoạn mã hiển thị kiểm tra cam kết điều hướng liên quan đến sự cố lỗ hổng CVE-2024-6778 của Chrome DevTools\
Đoạn mã hiển thị logic trạng thái cam kết điều hướng liên quan đến sự cố lỗ hổng CVE-2024-6778 của Chrome DevTools

Lời gọi đầu tiên tạm dừng thực thi, để lại trạng thái cam kết điều hướng trong trạng thái không nhất quán, và tạm dừng thứ hai trong KIỂM TRA_EQ kiểm tra, không vượt qua được xác thực trạng thái và gây ra sự cố.

Khắc phục

Việc không thường xuyên cập nhật phiên bản trình duyệt có thể khiến thiết bị của bạn phải đối mặt với các mối đe dọa bảo mật nghiêm trọng, đặc biệt là các mối đe dọa liên quan đến CVE (Lỗ hổng và Điểm phơi nhiễm Phổ biến). Để giúp giảm thiểu rủi ro này, MetaDefender Endpoint™ cung cấp khả năng bảo vệ mạnh mẽ bằng cách phát hiện phiên bản trình duyệt của bạn và kiểm tra các lỗ hổng, bao gồm các CVE đã biết như CVE-2024-6778.  

MetaDefender Endpoint đảm bảo ứng dụng của bạn được cập nhật và đánh dấu bất kỳ phiên bản lỗi thời hoặc bị nhiễm nào. Công cụ này cũng liệt kê các ứng dụng đã cài đặt có lỗ hổng bảo mật đã biết, được phân loại theo mức độ nghiêm trọng của CVE và đề xuất các bản sửa lỗi để giảm thiểu hiệu quả các mối đe dọa tiềm ẩn. Để xem bản demo trực tiếp về cách thực hiện MetaDefender Endpoint có thể giúp bạn giảm thiểu những rủi ro đó, hãy liên hệ với một trong những chuyên gia của chúng tôi ngay hôm nay. 

Luôn cập nhật với OPSWAT!

Đăng ký ngay hôm nay để nhận thông tin cập nhật mới nhất về công ty, câu chuyện, thông tin sự kiện và nhiều thông tin khác.