Logo Zephyrnet

APIC / EPIC! Chip Intel bị rò rỉ bí mật ngay cả hạt nhân không nên nhìn thấy…

Ngày:

Đây là BWAIN của tuần này, thuật ngữ nói chung của chúng tôi cho một Lỗi có tên ấn tượng.

BWAIN là một giải thưởng mà chúng tôi đưa ra khi một lỗ hổng an ninh mạng mới không chỉ trở nên thú vị và quan trọng mà còn xuất hiện với biểu trưng, ​​tên miền và trang web của chính nó.

Cái này được gọi là Rò rỉ ÆPIC, một cách chơi chữ của các từ APICEPIC.

Trước đây là viết tắt của Bộ điều khiển ngắt có thể lập trình nâng caovà sau này chỉ đơn giản là từ "sử thi", như trong khổng lồ, lớn, cực, lớn, khổng lồ.

Chữ Æ đã không được sử dụng trong tiếng Anh viết từ thời Saxon. Tên của nó là æsc, phát âm tro (như trên cây), và nó đại diện khá nhiều cho âm của chữ A trong từ ASH hiện đại. Nhưng chúng tôi cho rằng bạn phải phát âm từ ÆPIC ở đây là "APIC-sl-EPIC", hoặc là "ah! -eh? -PIC".

Tất cả về cái gì?

Tất cả những điều này đặt ra năm câu hỏi hấp dẫn:

  • APIC là gìvà tại sao tôi cần nó?
  • Làm thế nào bạn có thể có dữ liệu đó ngay cả hạt nhân không thể nhìn trộm?
  • Điều gì gây ra thất bại kinh hoàng này trong APIC?
  • Liệu các Rò rỉ ÆPIC ảnh hưởng đến tôi?
  • Phải làm gì về nó?

APIC là gì?

Hãy quay lại năm 1981, khi chiếc máy tính IBM PC lần đầu tiên xuất hiện.

PC bao gồm một con chip được gọi là Bộ điều khiển ngắt lập trình Intel 8259A, hoặc PIC. (Các kiểu máy sau này, từ PC AT trở đi, có hai PIC, được xâu chuỗi với nhau, để hỗ trợ nhiều sự kiện ngắt hơn.)

Mục đích của PIC hoàn toàn đúng theo nghĩa đen là làm gián đoạn chương trình đang chạy trên bộ xử lý trung tâm của PC (CPU) bất cứ khi nào có điều gì đó quan trọng về thời gian xảy ra cần được chú ý ngay lập tức.

Những sự cố phần cứng này bao gồm các sự kiện như: bàn phím bị gõ phím; cổng nối tiếp nhận một ký tự; và bộ đếm thời gian phần cứng lặp lại tích tắc.

Nếu không có hệ thống ngắt phần cứng kiểu này, hệ điều hành sẽ cần phải có nhiều lệnh gọi hàm để kiểm tra các lần gõ phím đến một cách thường xuyên, điều này sẽ gây lãng phí sức mạnh của CPU khi không có ai đang gõ, nhưng sẽ không phản hồi đủ khi họ đã làm.

Như bạn có thể tưởng tượng, PIC đã sớm được theo sau bởi một con chip được nâng cấp gọi là APIC, An tiên tiến loại PIC được tích hợp trong chính CPU.

Ngày nay, APIC cung cấp nhiều thứ hơn là chỉ phản hồi từ bàn phím, cổng nối tiếp và bộ đếm thời gian hệ thống.

Sự kiện APIC được kích hoạt bởi (và cung cấp dữ liệu thời gian thực về) các sự kiện như quá nhiệt và cho phép tương tác phần cứng giữa các lõi khác nhau trong bộ xử lý đa lõi hiện đại.

Và các chip Intel ngày nay, nếu chúng ta có thể đơn giản hóa rất nhiều, nói chung có thể được cấu hình để hoạt động theo hai cách khác nhau, được gọi là chế độ xAPICChế độ x2APIC.

Ở đây, xAPIC là cách "kế thừa" để trích xuất dữ liệu từ bộ điều khiển ngắt và x2APIC là cách hiện đại hơn.

Đơn giản hóa hơn nữa, xAPIC dựa trên những gì được gọi là MMIO, viết tắt của đầu vào / đầu ra được ánh xạ bộ nhớ, để đọc dữ liệu ra khỏi APIC khi nó đăng ký một sự kiện quan tâm.

Trong chế độ MMIO, bạn có thể tìm hiểu điều gì đã kích hoạt sự kiện APIC bằng cách đọc từ một vùng cụ thể của bộ nhớ (RAM), vùng này phản chiếu các thanh ghi đầu vào / đầu ra của chính chip APIC.

Dữ liệu xAPIC này được ánh xạ vào một khối bộ nhớ 4096 byte ở đâu đó trong RAM vật lý của máy tính.

Điều này giúp đơn giản hóa việc truy cập dữ liệu, nhưng nó đòi hỏi sự tương tác khó chịu, phức tạp (và, như chúng ta sẽ thấy, có thể nguy hiểm) giữa chip APIC và bộ nhớ hệ thống.

Ngược lại, x2APIC yêu cầu bạn đọc dữ liệu APIC trực tiếp từ chính con chip, sử dụng những gì được gọi là Đăng ký cụ thể kiểu mẫu (MSR).

Theo Intel, tránh phần MMIO của quy trình "Cung cấp khả năng định địa chỉ của bộ xử lý tăng lên đáng kể và một số cải tiến về phân phối gián đoạn."

Đáng chú ý, việc trích xuất dữ liệu APIC trực tiếp từ các thanh ghi trên chip có nghĩa là tổng lượng dữ liệu được hỗ trợ và số lõi CPU tối đa có thể được quản lý cùng một lúc, không bị giới hạn ở 4096 byte có sẵn trong chế độ MMIO.

Làm thế nào bạn có thể có dữ liệu mà ngay cả hạt nhân cũng không thể nhìn thấy?

Bạn có thể đã đoán được rằng dữ liệu kết thúc trong vùng bộ nhớ MMIO khi bạn đang sử dụng chế độ xAPIC không phải lúc nào cũng được quản lý cẩn thận như nó phải được…

… Và do đó một số loại “rò rỉ dữ liệu” vào khu vực MMIO đó là trung tâm của vấn đề này.

Nhưng cho rằng bạn đã cần quyền hạn cấp sysadmin để đọc dữ liệu MMIO ngay từ đầu và do đó bạn gần như chắc chắn có thể lấy được bất kỳ và tất cả dữ liệu trong bộ nhớ…

… Tại sao dữ liệu của người khác lại hiển thị do nhầm lẫn trong vùng dữ liệu APIC MMIO đại diện cho sử thi hở?

Nó có thể làm cho một số kiểu tấn công đánh cắp dữ liệu hoặc cào RAM dễ dàng hơn một chút trong thực tế, nhưng chắc chắn nó sẽ không cung cấp cho bạn khả năng dò tìm bộ nhớ hơn mà bạn đã có trên lý thuyết?

Thật không may, giả định đó không đúng nếu bất kỳ phần mềm nào trên hệ thống đang sử dụng SGX của Intel, viết tắt của Phần mở rộng bảo vệ phần mềm.


TÌM HIỂU THÊM VỀ SGX


SGX được hỗ trợ bởi nhiều CPU Intel gần đây và nó cung cấp một cách để hạt nhân hệ điều hành “niêm phong” một đoạn mã và dữ liệu vào một khối vật lý của RAM để tạo thành cái được gọi là enclave.

Điều này làm cho nó hoạt động, ít nhất là tạm thời, giống như các chip bảo mật đặc biệt trong điện thoại di động được sử dụng để lưu trữ bí mật như khóa giải mã.

Sau khi “khóa” SGX của vùng bao bọc được thiết lập, chỉ mã chương trình chạy bên trong vùng bộ nhớ đã được niêm phong mới có thể đọc và ghi nội dung của RAM đó.

Do đó, các chi tiết nội bộ của bất kỳ tính toán nào xảy ra sau khi kích hoạt enclave sẽ không hiển thị đối với bất kỳ mã, luồng, quy trình hoặc người dùng nào khác trên hệ thống.

Bao gồm cả chính hạt nhân.

Có một cách để gọi mã đã được niêm phong trong enclave và một cách để nó trả về kết quả của các phép tính mà nó có thể thực hiện, nhưng không có cách nào để khôi phục hoặc theo dõi hoặc gỡ lỗi, mã và dữ liệu liên quan của nó trong khi nó chạy.

Enclave thực sự biến thành một hộp đen mà bạn có thể cung cấp dữ liệu đầu vào, chẳng hạn như dữ liệu được ký bằng khóa cá nhân và trích xuất các đầu ra, chẳng hạn như chữ ký số được tạo, nhưng từ đó bạn không thể xóa các khóa mật mã được sử dụng trong quá trình ký kết.

Như bạn có thể tưởng tượng, nếu dữ liệu được cho là được niêm phong bên trong vỏ bọc SGX vô tình bị sao chép vào RAM MMIO được sử dụng để “phản chiếu” dữ liệu APIC khi bạn đang sử dụng chế độ “ánh xạ bộ nhớ” xAPIC…

… Điều đó sẽ vi phạm tính bảo mật của SGX, điều này nói rằng không có dữ liệu nào được xuất hiện từ vùng mã SGX sau khi nó được tạo, trừ khi nó được cố tình xuất bằng mã đã chạy bên trong chính vùng đó.

Điều gì gây ra thất bại kinh hoàng này trong APIC?

Các nhà nghiên cứu đằng sau Giấy rò rỉ ÆPIC đã phát hiện ra điều đó bằng cách sắp xếp để đọc dữ liệu APIC thông qua một chuỗi truy cập bộ nhớ xảo quyệt và bất thường…

… Họ có thể lừa bộ xử lý lấp đầy không gian APIC MMIO không chỉ với dữ liệu mới nhận được từ chính APIC, mà còn với dữ liệu vừa mới được CPU sử dụng gần đây cho một số mục đích khác.

Hành vi này là một tác dụng phụ của thực tế là mặc dù trang bộ nhớ APIC MMIO có kích thước 4096 byte, chip APIC ở chế độ xAPIC không thực sự tạo ra dữ liệu có giá trị 4096 byte và CPU không phải lúc nào cũng trung hòa chính xác các phần không sử dụng của vùng MMIO bằng cách điền vào nó bằng các số không trước.

Thay vào đó, dữ liệu cũ còn sót lại trong bộ đệm CPU được ghi ra ngoài cùng với dữ liệu mới nhận được từ chính chip APIC.

Như các nhà nghiên cứu đã nói, lỗi này tóm tắt thành những gì được gọi là đọc bộ nhớ chưa được khởi tạo, nơi bạn vô tình sử dụng lại dữ liệu còn sót lại của người khác trong RAM vì cả họ và bạn đều không xóa những bí mật trước đó của nó.

ÆPIC Leak có ảnh hưởng đến tôi không?

Để biết danh sách đầy đủ các chip bị ảnh hưởng, hãy xem Tư vấn riêng của Intel.

Theo như chúng tôi có thể nói, nếu bạn có bộ xử lý Intel thế hệ thứ 10 hoặc 11, có thể bạn sẽ bị ảnh hưởng.

Nhưng nếu bạn có một CPU thế hệ thứ 12 hoàn toàn mới (mới nhất tại thời điểm viết bài), thì có vẻ như chỉ các chip cấp máy chủ mới bị ảnh hưởng.

Trớ trêu thay, trong các chip máy tính xách tay thế hệ 12, Intel đã từ bỏ SGX, vì vậy lỗi này không áp dụng vì không thể có bất kỳ vỏ bọc SGX “kín” nào có thể bị rò rỉ.

Tất nhiên, ngay cả trên một con chip có khả năng dễ bị tấn công, nếu bạn không dựa vào bất kỳ phần mềm nào sử dụng SGX, thì lỗi cũng không áp dụng.

Và lỗi, được gọi là CVE-2022-21233, chỉ có thể bị khai thác bởi kẻ tấn công đã có quyền truy cập cục bộ, cấp quản trị (gốc) vào máy tính của bạn.

Người dùng thường xuyên không thể truy cập vào khối dữ liệu APIC MMIO, và do đó không có cách nào để xem trộm bất cứ thứ gì trong đó, chưa nói đến dữ liệu bí mật có thể đã bị rò rỉ từ một vùng mã hóa SGX.

Cũng thế, máy ảo khách (Máy ảo) đang chạy dưới sự kiểm soát của hệ điều hành máy chủ trong một siêu giám sát như HyperV, VMWare hoặc VirtualBox gần như chắc chắn không thể sử dụng thủ thuật này để lấy cắp bí mật từ các khách khác hoặc chính máy chủ.

Đó là bởi vì các máy ảo khách thường không có quyền truy cập vào mạch APIC thực trong bộ xử lý máy chủ; thay vào đó, mỗi khách sẽ nhận được APIC mô phỏng của riêng mình, duy nhất cho máy ảo đó.

Phải làm gì?

Đừng hoảng sợ.

Trên máy tính xách tay hoặc máy tính để bàn, bạn có thể hoàn toàn không gặp rủi ro, vì bạn có một máy tính cũ hơn (hoặc may mắn là bạn, một thương hiệu mới!), Hoặc vì bạn không dựa vào SGX.

Và ngay cả khi bạn mạo hiểm, bất kỳ ai xâm nhập vào máy tính xách tay của bạn với tư cách là quản trị viên / người chủ có thể đã đủ sức gây ra cho bạn một thế giới rắc rối rồi.

Nếu bạn có các máy chủ dễ bị tấn công và bạn đang dựa vào SGX như một phần của bảo mật hoạt động của mình, hãy xem tư vấn bảo mật của Intel INTEL-SA-00657 để bảo vệ và giảm thiểu thông tin.

Theo các nhà nghiên cứu đã viết ra điều này, “Intel [đã] phát hành các bản cập nhật Bộ phát triển phần mềm và mã vi mô SGX để khắc phục sự cố.”

Nhóm nhân Linux dường như cũng đang làm việc ngay bây giờ trên một bản vá cho phép bạn định cấu hình hệ thống của mình để nó luôn sử dụng x2APIC (như bạn sẽ nhớ trước đó, không truyền dữ liệu APIC qua bộ nhớ dùng chung), và sẽ ngăn hệ thống bị buộc trở lại chế độ xAPIC sau khi khởi động.


tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?