ZenHammer: Tấn công Rowhammer nhắm vào các nền tảng dựa trên AMD Zen
(comsec.ethz.ch)- Bit flip Rowhammer xảy ra ngay cả trên các hệ thống DDR4 AMD Zen 2 và Zen 3 đã áp dụng biện pháp giảm thiểu TRR, cho thấy nền tảng AMD cũng có thể trở thành bề mặt tấn công thực tế
- Nhóm nghiên cứu đã đảo ngược kỹ thuật các hàm địa chỉ DRAM bí mật bằng kỹ thuật DRAMA được điều chỉnh cho AMD, và xác nhận rằng cần xử lý offset địa chỉ vật lý do cơ chế ánh xạ lại địa chỉ hệ thống
- Fuzzer ZenHammer gây ra bit flip trên 7 thiết bị ở Zen 2 và 6 thiết bị ở Zen 3 trong số 10 thiết bị DDR4, bao gồm Samsung, Micron và SK Hynix; các thiết bị Zen 3 cho kết quả dễ bị tấn công hơn Intel Coffee Lake
- Các tấn công hiện có vào bảng trang, làm hỏng khóa công khai RSA-2048 và
sudoers.solần lượt có thể cấu hình trên 7/6/4 thiết bị, với thời gian trung bình để tìm bit flip có thể khai thác là 164/267/209 giây - Trong đánh giá DDR5 trên Zen 4, khoảng 42.000 bit flip xảy ra trên 1 trong 10 thiết bị, nhưng thất bại trên 9 thiết bị còn lại, cho thấy DDR5 cần nghiên cứu thêm về mẫu tấn công
Bit flip Rowhammer cũng xảy ra trên AMD Zen
- ZenHammer gây ra bit flip Rowhammer trên các hệ thống AMD Zen 2 và Zen 3 trong thiết bị DDR4 đã áp dụng biện pháp giảm thiểu TRR
- Xác nhận rằng hệ thống AMD cũng có thể có lỗ hổng Rowhammer, tương tự hệ thống Intel
- Với thị phần CPU desktop x86 của AMD vào khoảng 36%, bề mặt tấn công không hề nhỏ
- Thiết bị DRAM một khi đã triển khai thì khó sửa đổi dễ dàng, và các nghiên cứu trước đây đã cho thấy tấn công Rowhammer có thể thực tế trong nhiều môi trường
Đảo ngược hàm địa chỉ DRAM của AMD và tối ưu hóa hammering
- Áp dụng kỹ thuật DRAMA cho hệ thống AMD để đảo ngược kỹ thuật các hàm địa chỉ DRAM bí mật
- Thay đổi các routine đo thời gian để thu được kết quả ổn định hơn
- Do cơ chế ánh xạ lại địa chỉ hệ thống, cần áp dụng offset địa chỉ vật lý trước khi khôi phục hàm địa chỉ DRAM; nhờ đó khôi phục hoàn chỉnh hàm địa chỉ
- Chỉ sử dụng các hàm địa chỉ đã khôi phục thì số bit flip bị hạn chế
- Trên Zen 2, bit flip chỉ được xác nhận ở 5 trong 10 thiết bị
- Trên Zen 3, bit flip không được xác nhận ở thiết bị nào trong 10 thiết bị
Đồng bộ refresh và chuỗi lệnh
- Giống các nghiên cứu trước như SMASH và Blacksmith, đồng bộ refresh là yếu tố quan trọng để gây ra bit flip
- Trên AMD, phương pháp thực hiện đo thời gian liên tục trên các hàng không lặp lại tỏ ra hiệu quả cho việc đồng bộ refresh chính xác và đáng tin cậy
- Trên các hệ thống AMD Zen+/3, tỉ lệ kích hoạt của mẫu Rowhammer không đồng nhất thấp hơn đáng kể so với Intel Coffee Lake
- Chuỗi lệnh hammering tối ưu là dùng lệnh tải thông thường
MOVvàCLFLUSHOPTđể flush aggressor khỏi cache, theo kiểu “scatter” flush ngay sau khi truy cập aggressor - Khác với Zen 2, trên Zen 3 không cần fence tường minh sau khi flush
- Loại fence và chính sách lập lịch fence cũng ảnh hưởng đến kết quả; nhóm nghiên cứu đề xuất 6 chính sách nhận dạng mẫu và né cache, rồi thử nghiệm 6 giờ cho từng thiết bị
- Trên phần lớn thiết bị Zen 2,
SP_nonelà tối ưu - Trong hầu hết trường hợp trên Zen 3,
SP_pairphù hợp hơn
- Trên phần lớn thiết bị Zen 2,
Kết quả đánh giá DDR4 và khả năng khai thác
- Đánh giá được thực hiện trên 10 thiết bị DRAM DDR4, bao gồm Samsung, Micron và SK Hynix
- Fuzzer ZenHammer được chạy 3 giờ cho mỗi tổ hợp giữa từng loại fence
mfence,sfencevà từng chính sách lập lịch fence - Sau mỗi lần chạy, minisweep được thực hiện trên phạm vi 4MiB với tất cả mẫu tìm được để xác định mẫu tối ưu, rồi sweep mẫu tối ưu của chính sách tối ưu trên vùng bộ nhớ liên tục 256MB
- Kết quả là bit flip xảy ra trên 7 thiết bị ở Zen 2 và 6 thiết bị ở Zen 3 trong số 10 thiết bị DRAM DDR4
- Khả năng khai thác bit flip được đánh giá bằng ba tấn công từ nghiên cứu trước
- Tấn công page frame number của mục nhập bảng trang để pivot sang trang bảng trang do kẻ tấn công kiểm soát
- Tấn công khóa công khai RSA-2048 cho phép khôi phục khóa riêng liên quan dùng trong xác thực SSH host
- Tấn công logic xác minh mật khẩu của thư viện
sudoers.so, cho phép giành quyền root
- Các tấn công hiện có lần lượt có thể cấu hình trên 7/6/4 thiết bị, với thời gian trung bình để tìm bit flip có thể khai thác là 164/267/209 giây
Đánh giá DDR5, mã nguồn công khai và lịch trình công bố
- Nhóm cũng đảo ngược kỹ thuật hàm DRAM DDR5 trên AMD Zen 4 và đánh giá 10 thiết bị DDR5
- ZenHammer gây ra khoảng 42.000 bit flip trên 1 trong 10 thiết bị DDR5
- Đây là trường hợp đầu tiên được công khai báo cáo về bit flip DDR5 trên hệ thống thương mại phổ thông
- Trên 9 thiết bị DDR5 còn lại không xảy ra bit flip, nên cần nghiên cứu thêm để tìm các mẫu hiệu quả hơn cho thiết bị DDR5
- Toàn bộ chi tiết có trong bài báo sẽ được trình bày tại USENIX Security 2024 vào tháng 8/2024
- Mã fuzzer ZenHammer có trên GitHub, có thể dùng để đánh giá liệu thiết bị DRAM có xảy ra bit flip trên CPU AMD Zen 2/3/4 hay không
- Nhóm cho rằng Rowhammer là vấn đề đã biết trên toàn ngành nên không cần quy trình công bố thông thường, nhưng đã thông báo cho AMD vào 26/02/2024 và theo yêu cầu của AMD đã không công bố cho đến 25/03/2024
- Trang này từng vô tình được đưa online trong một thời gian ngắn vào 21/03/2024
Các hạn chế thực tiễn trong FAQ
- Lý do hệ thống AMD trước đây ít được đề cập là trong nghiên cứu Rowhammer ban đầu, số bit flip trên hệ thống Intel lớn hơn nhiều; các nghiên cứu tiếp theo cũng chủ yếu tập trung vào Intel; và thông tin về vi kiến trúc CPU Intel được biết đến nhiều hơn AMD
- Trong 10 thiết bị DDR4, bit flip không xảy ra trên 3 thiết bị với Zen 2 và 4 thiết bị với Zen 3, nhưng vì số bit flip của các thiết bị này trên Intel Coffee Lake cũng ít, nhóm cho rằng việc tinh chỉnh fuzzer thêm có thể làm lộ ra bit flip
- Lý do số thiết bị đánh giá bị giới hạn ở 10 là số lượng thiết bị AMD Zen 2/3 trong phòng thí nghiệm có hạn và một số thí nghiệm mất nhiều thời gian; tập con ngẫu nhiên này bao gồm thiết bị của cả 3 nhà cung cấp DRAM
- Về lý do JEDEC vẫn chưa khắc phục vấn đề, nhóm giải thích rằng việc giải quyết Rowhammer là khó nhưng không bất khả thi, như các nghiên cứu trước ProTRR và REGA đã cho thấy
- Nghiên cứu trước về DDR3 cho thấy ECC không ngăn được Rowhammer; do số bit flip trên các thiết bị DDR4 hiện nay lớn hơn, ECC được đánh giá chỉ làm việc khai thác khó hơn chứ không bảo vệ hoàn toàn
- Cách tăng gấp đôi tần suất refresh có overhead hiệu năng và tăng tiêu thụ điện năng; trong các nghiên cứu trước như Mutlu et al. và Frigo et al., đây được xem là giải pháp yếu, không cung cấp khả năng bảo vệ hoàn toàn
1 bình luận
Ý kiến trên Hacker News
Tôi là đồng tác giả ban đầu của khai thác Rowhammer. ECC nhìn chung vẫn rất hiệu quả trong việc biến vấn đề này từ một vấn đề bảo mật thành một vấn đề độ tin cậy
Nếu bạn là chủ sở hữu máy chủ cá nhân, giả sử máy chủ có ECC và bạn có thể nhận ra việc máy bị dừng do lỗi ECC không thể sửa, thì tác động về bảo mật không lớn
Tuy nhiên, nếu bạn là nhà cung cấp đám mây cung cấp VM trên host đa tenant, mô hình đe dọa có thể khác
Dù thế nào cũng nên tránh các máy không có ECC. TRR đã là một biện pháp phòng thủ thất bại ngay từ khi Rowhammer mới được biết đến, và chừng nào tính kinh tế trong sản xuất DRAM chưa thay đổi thì bit flip trong DRAM sẽ không biến mất
Ryzen chỉ hỗ trợ ECC unbuffered, vốn chậm hơn hoặc đắt hơn bộ nhớ không ECC cùng dung lượng, hoặc cả hai
Dòng Threadripper mới nhất hỗ trợ Registered ECC, nhưng với người dùng gia đình như tôi thì chi phí, số luồng và số lane PCIe đều quá dư thừa
Rủi ro bảo mật quá lớn và mọi thứ đã tích hợp quá sâu, nên khó có thể trì hoãn thay đổi này. Ngay cả game thủ dùng máy tính thuần chơi game cũng sẽ để thông tin quan trọng trên máy đó; thật khó hiểu vì sao đến giờ thay đổi này vẫn chưa diễn ra
Tôi cũng thắc mắc liệu thứ thật sự miễn nhiễm có chỉ là SRAM hay không
Chỉ Pro và Threadripper là được đảm bảo, còn một số Ryzen desktop chỉ dùng được trên một số bo mạch chủ nhất định
Để đi trước một cách an toàn các bit flip do Rowhammer gây ra, bộ máy patrol read cần quét DRAM quyết liệt đến mức nào?
Nếu có word ECC lớn hơn kiểu 64+8 truyền thống và khả năng sửa lỗi đa bit, liệu cục diện có thay đổi đủ để tạo ra hệ thống đáng tin cậy hơn ngay cả với DRAM có điểm yếu theo mẫu hay không?
Cách diễn đạt kiểu “ECC không ngăn được Rowhammer” rất dễ gây hiểu lầm. Bài báo được trích cũng nói rằng “ngay cả khi phát hiện ECC được sử dụng đúng cách, 0,65%~7,42% tổng số bit flip vẫn gây hư hỏng âm thầm… trong cấu hình AMD-1, lỗi không thể sửa sẽ làm hệ thống crash”
Để có được một bit flip có thể khai thác, kẻ tấn công phải gây ra hàng chục lần máy bị dừng. Hàng chục lần máy bị dừng không phải là chuyện có thể không bị phát hiện
Việc chỉ ra phản ứng tệ hại của JEDEC trước Rowhammer là tốt, nhưng không nên đánh giá thấp ECC như một giải pháp ngắn hạn
Đó là nền tảng Zen2 TR, nên khi đọc câu đó tim tôi thót lại trong giây lát. Cách diễn đạt khá dễ gây hiểu lầm
Tôi thắc mắc liệu các vấn đề bảo mật phần cứng như Rowhammer, Spectre, Meltdown có phải là rủi ro thực tế với người bình thường hay không
Tôi hiểu Spectre và Meltdown là vấn đề đối với các tấn công như thoát VM, tức là việc kỹ sư AWS phải lo chứ dường như không phải chuyện của người dùng cá nhân
Và vì đã cắt đứt với xã hội hiện đại rồi, hãy vào một cabin trong rừng và tự cung tự cấp là xong
Cá nhân tôi thích NoScript. Trên Chrome thì tôi không rõ nên chọn gì
Ngoài ra thì… bạn cũng đâu thường xuyên chạy chương trình tùy ý từ internet phải không?
Những loại lỗi này mới chỉ là phần nổi. Phần cứng hiện đại quá phức tạp nên khó tin rằng ta có thể tìm ra hết
Vì vậy mọi người đều có thể bị ảnh hưởng
Trước đây tôi chỉ hiểu rất mơ hồ về các cuộc tấn công lật bit DDR, nhưng đọc bài báo Hammertime gốc thì thấy thật ra khá dễ đọc
Tôi vẫn chưa đọc hết, nhưng nó giải thích rất dễ hiểu. Tôi đã nghe cụm “lật bit” vô số lần nhưng chưa từng hiểu đúng, đọc cái này thì mới bắt đầu nắm được
https://comsec.ethz.ch/wp-content/files/hammertime_raid18.pd...
Cảm giác như vừa học một buổi nhập môn điện-điện tử. Tôi hoàn toàn không biết chuyện này thực sự liên quan đến lỗi sản xuất phần cứng
Cái tên Rowhammer lúc đó cũng mới được giải thích. Có lẽ tôi quá tụt hậu và đây là điều ai cũng biết rồi
“Do mật độ cực cao của các mảng DRAM hiện đại, những lỗi sản xuất nhỏ có thể tạo ra liên kết điện yếu giữa các ô liền kề. Kết hợp với điện dung cực nhỏ của các ô này, mỗi khi một hàng DRAM được đọc trong một bank, các ô nhớ ở hàng lân cận sẽ mất một lượng điện tích nhỏ. Nếu điều này xảy ra đủ thường xuyên giữa hai chu kỳ refresh, ô bị ảnh hưởng có thể mất đủ điện tích để giá trị bit được lưu bị đảo, hiện tượng này được gọi là ‘disturbance error’ hoặc gần đây là Rowhammer”
Là do các nhà sản xuất DRAM đã đẩy các giới hạn đến mức cực đoan. Đó là vì lợi nhuận
Không khác gì Ford khi cho rằng chi phí dàn xếp các vụ kiện liên quan đến thương tích và tử vong của Pinto thấp hơn chi phí sửa thiết kế xe
Tôi thắc mắc liệu Secure Memory Encryption có giúp ích gì trong trường hợp này không
https://www.amd.com/en/developer/sev.html
Chỉ một lần lật bit cũng có thể trở thành lỗi nghiêm trọng
Tôi biết quá ít về bảo mật phần cứng, nên thắc mắc liệu đây có phải là một trong vô số lỗ hổng tất yếu sinh ra từ tối ưu hóa CPU, và trong thực tế thuộc loại khó khả thi hay không
Nó xảy ra ở tầng thấp hơn rất nhiều so với các trường hợp biên của những tính năng làm rò rỉ thông tin qua kênh kề
Dữ liệu được lưu dưới dạng các điện tích nhỏ trong một lưới; nếu đảo nhiều điểm lưới gần đó, có thể khiến một phần điện tích rò về phía điện tích mục tiêu
Điện tích càng nhỏ và càng gần nhau thì tấn công Rowhammer càng dễ. Đồng thời, điện tích càng nhỏ và càng gần nhau thì RAM càng nhanh, rẻ, dày đặc và hiệu quả hơn
Có các biện pháp giảm thiểu, nhưng mọi thứ đã bị đẩy đến giới hạn rồi
Tôi thắc mắc liệu nó có còn hoạt động khi bật mã hóa toàn bộ bộ nhớ, poisoning và XOR địa chỉ không
Vì vậy dùng mã hóa bộ nhớ sẽ an toàn hơn
Nếu “ZenHammer không thể gây ra flip trên 9 trong 10 thiết bị… cần nghiên cứu thêm để tìm mẫu hiệu quả hơn với thiết bị DDR5”, thì có vẻ DDR5 vẫn còn chút thời gian
Không biết có ai biết điều này có ảnh hưởng đến LPDDR5x không
Vì vậy việc là DDR5, LPDDR5(x), GDDR6(x) hay HBM3(e) không phải là câu hỏi cốt lõi
Điều quan trọng là chi tiết triển khai do nhà sản xuất quyết định, chẳng hạn ECC on-die
Zen 2 và 3 được nhắc đến, nhưng tôi thắc mắc có thông tin gì về Zen 1 không
Hay là nó cũng áp dụng y như vậy?