Có thể giành quyền root chỉ bằng bật lửa châm thuốc?
(da.vidbuchanan.co.uk)- Một thí nghiệm leo thang đặc quyền cục bộ đã thành công: chỉ với bật lửa châm thuốc kiểu áp điện, người ta gây ra lỗi điện từ trên bus bộ nhớ DDR3 của laptop và đi từ người dùng Linux không đặc quyền tới root shell
- Trên laptop Samsung S3520, tác giả hàn điện trở 15Ω và một sợi dây đóng vai trò ăng-ten vào chân dữ liệu SODIMM, rồi bấm bật lửa ở gần để tạo lỗi bộ nhớ làm lật bit cụ thể
- Trong thí nghiệm với CPython, lỗi trên đường DQ7 lật bit 7 của con trỏ đối tượng để nó tham chiếu tới cấu trúc
bytearraygiả bên trongbytes, từ đó dựng primitive đọc/ghi bộ nhớ tùy ý - Cơ chế leo thang đặc quyền trên Linux hoạt động bằng cách phun bảng trang vào bộ nhớ vật lý, rồi gây lỗi bit 29 khi đọc PTE để một ánh xạ có thể truy cập từ không gian người dùng trỏ thẳng vào bảng trang
- Sau khi thành công, tác giả tìm trang đầu tiên của
/usr/bin/sutrong bộ nhớ vật lý và thay bằng ELF setuid root nhỏ để đầu độc page cache; trong môi trường thử nghiệm, độ tin cậy cảm nhận được khoảng 50% khi đăng nhập qua SSH và khoảng 20% trong shell đồ họa
Điểm khởi đầu của thí nghiệm EMFI bằng bật lửa
- Ngay cả khi không có lỗi phần mềm, vẫn có thể tạo ra hành vi bất thường bằng tiêm lỗi (fault injection)
- Các phương pháp tiêm lỗi gồm làm hỏng dữ liệu điều khiển bằng phần mềm, glitch nguồn, glitch xung nhịp, xung điện từ, laser, v.v.
- Tiêm lỗi phần cứng thường đòi hỏi độ chính xác về thời điểm và vị trí để đưa lỗi vào, nên cần thiết bị chuyên dụng và chi phí cao
- Những hướng tiếp cận chi phí thấp gồm PicoEMP dựa trên RP2040 và "Laser Fault Injection for The Masses"
- Điểm khởi đầu là cách dùng bộ đánh lửa BBQ áp điện ghép với cuộn cảm như một công cụ tiêm lỗi điện từ (EMFI) giá rẻ
- Trước đây, tác giả đã từng tấn công thành công một bản cài đặt AES phần mềm chạy trên Arduino bằng DFA
- Trong bối cảnh thời điểm công bố Nintendo Switch 2 đang đến gần, và dự đoán nó sẽ có phần mềm hệ thống tương tự Switch 1 nhưng ít lỗi phần mềm, tác giả tiếp tục thử nghiệm EMFI giá rẻ này
Mục tiêu thử nghiệm và lỗi trên bus DDR
- Thiết bị thử nghiệm là laptop Samsung S3520 sản xuất năm 2011 với CPU Intel i3-2310M và 1GB RAM DDR3
- Máy có thể chạy Arch, một bản phân phối Linux desktop nhẹ, và được chọn vì hỏng cũng không quá đáng tiếc
- Mục tiêu là viết một exploit leo thang đặc quyền cục bộ hoạt động dựa trên lỗi phần cứng được tiêm vào
- Điểm yếu vật lý dễ khai thác nhất được chọn là bus DDR nối DRAM với hệ thống
- SODIMM có 64 chân DQ truyền bit dữ liệu đọc/ghi, từ DQ0 đến DQ63
- Thiết bị thí nghiệm được cấu thành bằng cách hàn một điện trở 15Ω và một sợi dây vào chân được cho là DQ26
- Sợi dây hoạt động như ăng-ten, thu nhiễu điện từ xung quanh và truyền vào bus dữ liệu
- Điện trở dùng để giới hạn cường độ nhiễu nhằm không liên tục phá hỏng hoạt động bộ nhớ bình thường; thực tế có thể không cần
- Chỉ cần bấm một bật lửa áp điện thông thường gần sợi dây ăng-ten là lỗi bộ nhớ đã xuất hiện ổn định trong memtest
- Tất cả lỗi hiển thị đều là dạng lật bit 29
- Chân được hàn được cho là DQ26, nhưng việc bit 29 bị lật có thể do đếm nhầm chân hoặc bo mạch chủ đã hoán đổi cách đi dây các đường dữ liệu
- Do thời gian phản ứng của ngón tay có hạn, khả năng điều khiển thời điểm tiêm lỗi không hề chính xác
- Khi lỗi xảy ra, nhiều khả năng cùng một bit sẽ bị lật trong một thao tác đọc hoặc ghi 64-bit cụ thể
Khai thác bit flip trong CPython
- Thí nghiệm đầu tiên là tạo một exploit kiểu thoát sandbox trong CPython
- Bản thân CPython không phải sandbox, nên đây không phải vượt qua ranh giới bảo mật thực sự mà là bước chuẩn bị tận dụng các cấu trúc nội bộ quen thuộc
- Trong thí nghiệm này, tác giả dùng sợi dây hàn vào DQ7 thay vì DQ26 như trong ảnh trước đó
- Các đối tượng CPython nằm trên heap của garbage collector; header đối tượng có refcount và con trỏ tới đối tượng kiểu, sau đó là các trường tùy theo kiểu
- Đối tượng
bytescó chính dữ liệu nằm cùng vùng cấp phát trên heap sau trường độ dài - Đối tượng
bytearraycó một con trỏ sau trường độ dài để trỏ tới vùng đệm chứa dữ liệu thực tế
- Đối tượng
- Chiến lược cốt lõi là đặt một cấu trúc
bytearraygiả làm dữ liệu bên trong một đối tượngbytes- Nếu đánh lừa được CPython đưa ra tham chiếu tới đối tượng giả này, kẻ tấn công có thể dùng các trường độ dài và con trỏ của
bytearraydo mình chọn để đọc/ghi bộ nhớ tùy ý
- Nếu đánh lừa được CPython đưa ra tham chiếu tới đối tượng giả này, kẻ tấn công có thể dùng các trường độ dài và con trỏ của
- Lỗi lật bit 7 tạo ra hiệu ứng cộng hoặc trừ 128 vào con trỏ trong một từ 64-bit
- Nếu đặt
bytearraygiả ở offset +128 byte bên trong đối tượngbytes, thì con trỏbytescó thể biến thành con trỏbytearraygiả do lỗi - Sự biến đổi này có xác suất 50% diễn ra theo hướng mong muốn
- Nếu đặt
- Điểm quan trọng là lỗi xảy ra trên thao tác đọc/ghi của bus bộ nhớ, chứ không phải trên nội dung bộ nhớ lưu sẵn
- Không giống Rowhammer, nơi dữ liệu đã lưu bị thay đổi; ở đây chính truy cập đang diễn ra trên bus bị làm hỏng
- Để truy cập con trỏ mong muốn chiếm phần lớn hoạt động trên bus, tác giả điền cùng một tham chiếu đối tượng vào một tuple lớn
- Vì cache CPU làm giảm số lần truy cập DRAM, tác giả truy cập tuần tự một cấu trúc lớn hơn cache 3MiB để buộc mỗi lần đều phải đọc từ DRAM
- Toán tử
iscủa Python hoạt động như so sánh con trỏ, nên được dùng để kiểm tra xem con trỏ có bị thay đổi hay không
- Toàn bộ mã nguồn exploit CPython có tại ddr3_dq7.py
- Có thể dùng biến
TESTINGđể mô phỏng việc lật bit bằng phần mềm mà không cần phần cứng
- Có thể dùng biến
Các cấu trúc bộ nhớ cần thiết cho leo thang đặc quyền trên Linux
- Trong leo thang đặc quyền cục bộ trên Linux, các cấu trúc then chốt là cache, bộ nhớ ảo và bảng trang, cùng với TLB
- Vì DRAM tương đối chậm, CPU dùng cache L1, L2 và L3
- Laptop thử nghiệm có cache L3 3MiB
- Khi cache hit thì không truy cập DRAM; chỉ khi cache miss mới phát sinh đọc DRAM
- Đơn vị nhỏ nhất theo góc nhìn cache là cache line, và trên laptop này nó là 64 byte
- Ngay cả khi chỉ đọc một byte, nếu dữ liệu chưa có trong cache thì vẫn phát sinh một lần đọc DRAM 64 byte
- Bus dữ liệu DDR rộng 64 bit, nên lần đọc này được xử lý thành 8 burst truy cập tuần tự
- Bộ nhớ ảo trên x86-64 được triển khai bằng các trang 4KiB và bảng trang dạng cây
- Nền tảng này có bảng trang 4 tầng
- Mỗi bảng trang là một trang 4KiB và chứa 512 PTE 64-bit
- PTE ở tầng trên trỏ tới địa chỉ vật lý của bảng trang tầng tiếp theo, còn PTE level 0 trỏ tới trang vật lý đích
- Địa chỉ vật lý của bảng trang gốc được lưu trong thanh ghi CPU CR3
- Phần quan trọng cần lấy từ PTE là trường địa chỉ vật lý
- Khi mask bỏ các bit cờ, phần còn lại là địa chỉ bộ nhớ vật lý đã căn theo trang
- TLB là phần cứng bên trong CPU dùng để cache ánh xạ trang từ địa chỉ ảo sang địa chỉ vật lý
- Kích thước TLB chính xác của laptop thử nghiệm không rõ, nhưng có vẻ vào khoảng 1024 entry
Kéo bảng trang vào bộ nhớ người dùng
- Chiến lược exploit Linux lấy cảm hứng từ các thành phần trong Rowhammer exploit của Mark Seaborn
- Mục tiêu là ánh xạ bảng trang của chính tiến trình vào bộ nhớ có thể truy cập từ không gian người dùng
- Khi đó có thể sửa PTE để truy cập bộ nhớ vật lý tùy ý
- Thay vì điều khiển thật chính xác bố cục bộ nhớ vật lý, tác giả lấp đầy đúng 50% bộ nhớ vật lý bằng các bảng trang level-0
- Sau đó, tác giả lặp lại việc truy cập các ánh xạ R/W để vượt qua TLB
- Vì số lượng ánh xạ lớn hơn kích thước TLB, mỗi lần truy cập có thể buộc phải đi qua quá trình page table walk
- Mục tiêu là gây lỗi bit 29 trong lúc đọc PTE level-0 của quá trình đó
- Khi bit 29 bị lật, địa chỉ vật lý mà PTE trỏ tới sẽ thay đổi theo offset 512MiB
- Nếu may mắn, địa chỉ đã thay đổi sẽ trỏ tới một trong các bảng trang level-0 đã được phun trước đó
- Khi đó, ánh xạ vốn phải trông như một trang R/W bình thường lại lộ ra một bảng trang như thể nó là một trang R/W thường
- Về lý thuyết, bất kỳ bit nào từ bit 29 đến bit 12 bị lật cũng có thể hoạt động
- Bit 12 tương ứng với offset 4KiB
- Điều cốt lõi là PTE phải trỏ sang “nơi khác”, và khoảng 50% bộ nhớ vật lý đã được lấp bằng các bảng trang có thể khai thác
- Việc hàn sợi dây ăng-ten có thể không hoàn toàn bắt buộc
- Nếu tạo được nhiễu điện từ đủ mạnh thì vẫn có khả năng thực hiện, nhưng nguy cơ làm hệ thống crash hoặc hỏng hóc sẽ cao hơn nhiều
Cách phun bảng trang level-0
- Đầu tiên, tác giả tạo một file trong bộ nhớ bằng memfd_create
- Nó đóng vai trò tương tự file trong
/dev/shm/của exploit Mark Seaborn, nhưng không trực tiếp đụng tới filesystem
- Nó đóng vai trò tương tự file trong
- Cùng một buffer sau đó được ánh xạ nhiều lần bằng mmap
- Tùy chọn
MAP_FIXEDđược dùng để buộc mỗi ánh xạ căn 2MiB trong không gian bộ nhớ ảo - Việc căn này đảm bảo mỗi lần đều tạo ra một bảng trang level-0 mới
- Tùy chọn
- Linux có giới hạn khoảng 2^16 số ánh xạ cho mỗi tiến trình, tức số lượng VMA
- Vì vậy, mỗi ánh xạ được đặt dài 32MiB để một ánh xạ tạo ra 16 bảng trang level-0
- Mỗi ánh xạ chiếm 32MiB trong không gian địa chỉ ảo, nhưng các PTE đều trỏ tới cùng một trang vật lý
- Chi phí bộ nhớ vật lý chỉ nằm ở các bảng trang level-0
- Theo cách này có thể phun bảng trang cho đến khi bộ nhớ đầy
Đọc/ghi bộ nhớ vật lý và đầu độc page cache của su
- Trong khi chờ lỗi xảy ra, tác giả lặp lại việc truy cập các ánh xạ R/W; khi một giá trị trả về khác thường xuất hiện thì coi như đã phát hiện lỗi
- Nếu dữ liệu trả về trông giống PTE, tức là đã giành được quyền R/W lên bảng trang
- Bước tiếp theo là tìm xem bảng trang này tương ứng với địa chỉ ảo nào
- Tác giả sửa PTE để nó trỏ tới địa chỉ vật lý 0
- Sau đó quét lại các ánh xạ R/W để xem ánh xạ nào đã thay đổi
- Dù PTE đã bị sửa, MMU không nhận ra ngay
- Lý do là ánh xạ ảo-vật lý đã được cache trong TLB
- Vì không biết cách flush TLB trực tiếp từ user space, tác giả lặp lại truy cập hàng nghìn ánh xạ R/W để lấp TLB bằng giá trị mới và đẩy các giá trị cũ ra ngoài
- Tại thời điểm này, tác giả có thể đọc/ghi toàn bộ bộ nhớ vật lý
- Sau đó, tác giả mở file thực thi
/usr/bin/suở chế độ chỉ đọc và mmap trang đầu tiên của nó/usr/bin/sulà file thực thi setuid root- Tác giả quét toàn bộ bộ nhớ vật lý để tìm đúng trang tương ứng
- Khi tìm thấy, tác giả ghi đè trang vật lý đó bằng ELF payload nhỏ hơn 4KiB, có chức năng mở root shell
- Linux sẽ thấy rằng khi
suđược chạy lần tiếp theo, trang đầu tiên đã có sẵn trong bộ nhớ nên không cần đọc lại từ đĩa- Nó tái sử dụng page cache đã bị đầu độc và thực thi ELF đã được chèn vào
- ELF được chèn sau đó chạy
echo 1 > /proc/sys/vm/drop_cachesđể xóa page cache, khiến lần chạysusau đó hoạt động bình thường trở lại
- Toàn bộ mã nguồn exploit Linux có tại linux_x86_64_lpe.c
Độ tin cậy và các ràng buộc môi trường
- Trong lần chạy demo, tác giả gặp may và chỉ cần một cú bấm bật lửa là có được glitch tốt
- Ở nhiều lần thử trước đó, cả hệ thống đã bị crash
- Độ tin cậy tổng thể của exploit chưa được đo đạc chặt chẽ
- Khi tắt màn hình laptop và đăng nhập qua SSH, cảm nhận thực tế cho thấy tỷ lệ thành công khoảng 50%
- Trong shell đồ họa, con số này gần khoảng 20%
- Hệ thống thử nghiệm dùng đồ họa tích hợp
- Có khả năng truy cập bộ nhớ của GPU gây nhiễu cho exploit
- Các dịch vụ nền liên quan tới pipewire, sshd, systemd và cả swap đều đang bật
- Đây là lựa chọn nhằm giữ môi trường Linux desktop thực tế; nếu tắt bớt chúng thì độ tin cậy có thể tăng lên
- Nếu lắp nhiều RAM hơn, có thể lấp tỷ lệ lớn hơn của bộ nhớ bằng bảng trang và từ đó tăng độ tin cậy tổng thể
Các khả năng ứng dụng và câu hỏi còn bỏ ngỏ
- Nếu có thể thực hiện EMFI leo thang đặc quyền cục bộ với độ tin cậy cao trên Windows, điều đó có thể ảnh hưởng tới bối cảnh anti-cheat dựa trên TPM đang giới hạn phần mềm được phép chạy trên hệ thống
- Có thể kể câu chuyện tương tự với kiểm tra SafetyNet hoặc Play Integrity trên Android, nhưng việc gắn modchip glitch lên điện thoại khó hơn nhiều
- Trong tối ưu hiệu năng cấp thấp, hiểu biết về bảng trang và TLB thường không phải lúc nào cũng quan trọng trực tiếp, nhưng trong exploit này chính cấu trúc duy trì ảo giác bộ nhớ ảo lại trở thành mục tiêu tấn công trực diện
- Vẫn còn nhiều điều về phạm vi áp dụng cần được xác minh
- Liệu nó có hoạt động trên DDR4, DDR5 hay không
- Liệu nó có hoạt động trên ARM hay không
- Các loại ECC khác nhau, đặc biệt là DDR5 Link-ECC, giảm thiểu được đến mức nào
- Cách đơn giản nhất để dùng thiết bị như RP2040 kích hoạt lỗi tương tự bằng điện tử là gì
- Liệu có thể dùng để thoát hypervisor hay không
- Liệu có thể biến nó thành exploit WebKit hoặc exploit kernel cho Nintendo Switch hay không
2 bình luận
Làm tôi nhớ đến trò rút bộ phận đánh lửa ra khỏi bật lửa để nâng xu trong máy game thùng.
Các ý kiến trên Hacker News
Cảm hứng ở đây là giành được quyền root trên Switch 2, còn việc lấy được root trên Linux chỉ là một bằng chứng khái niệm.
Mục tiêu không hẳn là chỉ ra một lỗ hổng bảo mật nền tảng có thể bị khai thác thực tế, mà gần hơn với việc giành lại quyền sở hữu thật sự đối với phần cứng của mình mà không cần phá TPM hay cơ chế chống gian lận trong game có quyền kernel.
Công việc này rất ấn tượng, và tôi hoan nghênh nỗ lực bảo vệ tự do phần mềm, nhưng tôi thà ủng hộ các lựa chọn thay thế hơn. Tại sao lại đem cho họ lợi nhuận và những con số trông như lượng máy đã bán ra/cơ sở cài đặt? Hãy mua Steam Deck hoặc thiết bị cầm tay khác, nơi quyền truy cập root được cung cấp như một tính năng ngay từ đầu.
Bài viết rất hay và thử thách cũng đáng nể, nhưng đầu óc tôi lại phản ứng theo kiểu kiến thức phổ thông trong giới hack rằng “đã có quyền truy cập vật lý thì coi như xong”.
Điều đầu tiên tôi nghĩ đến là nếu có truy cập vật lý thì có thể flash lại BIOS, cài backdoor driver, boot bằng live OS rồi chỉnh sửa
/etc/{passwd,shadow,groups, etc}.Nhưng rồi tôi nhớ ra rằng nếu đĩa được mã hóa thì hầu hết các kiểu tấn công bằng truy cập vật lý đều không khả thi, và khi đó kiểu tấn công này trông cực kỳ hấp dẫn. Ý tưởng ăng-ten có thể được mở rộng thành phần cứng tích hợp thiết bị gây nhiễu, cho phép giao tiếp với bên ngoài qua môi trường không dây để kẻ tấn công có thể gây nhiễu từ xa. Nếu thêm vào đó một trang web do kẻ tấn công kiểm soát để lừa nạn nhân truy cập, thì nó bắt đầu có tính thực tế.
Kỹ thuật gây nhiễu điện từ này đánh lừa chính CPU, nên tôi không rõ có thể khắc phục thế nào trừ khi xuất hiện một thuật toán phân trang mới.
PC của tôi cũng dùng mã hóa toàn bộ đĩa, nhưng khi boot lên thì keyfile dùng để giải mã đã được sử dụng, và từ thời điểm đó nó trở thành một PC có thể bị truy cập vật lý.
Tôi thích bài này. Ý chính là trong lúc đọc hoặc ghi bộ nhớ sẽ xảy ra lật bit do tĩnh điện, và nếu hàn thêm thì có thể biến một con trỏ “an toàn” thành con trỏ độc hại theo ý mình một cách xác định.
Trong lịch sử, quan điểm về truy cập vật lý là “đối phương cầm được thiết bị thì hết chuyện”. TPM và môi trường thực thi tin cậy đã thay đổi quan điểm này thành “ngay cả khi người dùng có quyền truy cập vật lý, một số phép toán bên trong enclave vẫn có thể được tin cậy”.
Bước tiếp theo mới là thú vị nhất. Liệu có thể đạt kết quả đáng tin cậy ở mức nào đó mà không cần hàn không? Vì đã phải suy nghĩ rất nhiều để xử lý nhiễu điện, nên chắc sẽ khó hơn nhiều, nhưng có thể vẫn làm được. Nếu mỗi lần bấm bật lửa làm lật ngẫu nhiên 1 bit trong một lần đọc 64 bit, và exploit chẳng hạn chỉ cần một trong 4 bit bị lật là chạy được, thì số lần thử trung bình có thể không quá nhiều.
Vì có thể đổi bất kỳ phần nào của bộ nhớ thành giá trị mong muốn vào thời điểm mong muốn, không cần trông chờ vào lật bit ngẫu nhiên. Cứ tiêm thẳng cả chương trình vào là được.
Chỉ nhìn tiêu đề, tôi tưởng đây là bài về việc ai đó giành được quyền root trên một chiếc bật lửa thuốc lá, và tôi đã hoàn toàn sẵn sàng tin điều đó.
Lò nướng của bố mẹ tôi còn nhận cập nhật phần mềm định kỳ, nên tôi thậm chí chẳng nghi ngờ chuyện bật lửa có thể là “thông minh”.
Tất nhiên cần chip để chạy lidar, đồng thời tạo đèn LED lóe sáng mạnh rồi mờ dần, phản hồi rung và hiệu ứng âm thanh. Mong ai đó làm thử bản demo. Nếu trông như một khẩu súng lục ổ xoay nhỏ thì càng hay, nhưng có lẽ phải tăng cường bộ điều khiển bộ nhớ ảo để bảo đảm an toàn cho ngón tay và xúc xích.
Không ngờ việc làm chảy thiếc hàn lại có thể phức tạp đến thế. Vì vậy tôi hoàn toàn có thể tin một bài nói về root bật lửa.
Gợi nhớ đến một exploit từng dùng với máy arcade ở Sydney thập niên 80–90. Lò sưởi gas ở trường có một bộ đánh lửa áp điện mà bọn tôi gọi là “clicker”, và có thể tháo nó ra khỏi lò sưởi.
Mang cái clicker đó đến tiệm game trong khu, bấm tách một cái vào một trong các góc CRT là hệ thống bị sốc và credit của game tăng lên. Tôi đoán có lẽ vì nối đất của CRT dùng chung dây mass với thiết bị kiểm tra đồng xu về mặt vật lý.
Một thời gian sau chủ tiệm phát hiện ra và thêm kiểu cảnh báo gì đó, nhưng trước đó đúng là thời hoàng kim.
Làm vậy vài năm thì chủ tiệm phát hiện và bắt đầu phủ vỏ máy arcade bằng nhựa trong suốt. Cùng lúc đó, khi tủ máy bị bịt kín bằng nhựa, họ khoan lỗ phía sau để thông gió, và bọn tôi phát hiện có thể dùng que tre nhấn cái cần ghi nhận đồng xu được nạp vào.
Thế là họ chuyển lỗ thông gió lên phía trên thay vì phía sau để không chạm được tới cần, nhưng lần này bọn tôi lại phát hiện nếu đẩy đồng xu lên qua khe trả tiền thì có thể chạm vào cần ghi nhận đồng xu, nên vẫn chơi miễn phí tiếp. Cuối cùng họ bắt vít nhọn bên trong hộp trả tiền để làm đứt ngón tay, và sau đó bọn tôi mua SEGA. Vui thật sự.
Không biết có phải họ cố tình thiết kế vậy để nhân viên có thể test miễn phí không, nhưng bạn tôi cứ bò ra phía sau và chơi miễn phí mãi.
Bản “Jungle Jive” nếu dùng bộ đánh lửa điện của bật lửa thuốc lá gây một cú sốc nhẹ vào khe kim loại thì token sẽ rơi ra ở phía bên kia máy. Nếu bấm quá nhanh quá nhiều lần thì máy sẽ vào chế độ cảnh báo. Làm một mình cũng được, nhưng đội hình tối ưu là nhóm 3 người: 1 người canh nhân viên, 1 người bấm, 1 người gom token.
https://www.amazon.com/CYBERPUNK-Outlaws-Hackers-Computer-Fr...
Đọc với tư cách người Úc thì lại hiểu khác. Tùy kỹ năng thương lượng, chỉ với một cái bật lửa thuốc lá cũng có thể lấy được root.
Không chỉ là một exploit thú vị, đây còn là một mini nhập môn rất hay giải thích cách cache hoạt động trong CPU.
Tôi nhớ khoảng một năm trước có một bài viết giải thích máy tính hoạt động và được tạo ra như thế nào, bắt đầu từ phần nhỏ nhất là cổng logic. Có ai nhớ website đó là gì không?
https://www.nand2tetris.org/course
“Chỉ là hàn một điện trở 15 ohm và một sợi dây vào DQ26. Sợi dây hoạt động như anten, thu nhiễu điện từ gần đó rồi đưa thẳng vào bus dữ liệu.”
Hack này thật sự rất ngầu. Tạo nhiễu điện từ bằng bật lửa cơ đấy. Phải thử bật lửa cạnh bus DDR xem chuyện gì xảy ra.
Tất nhiên là nếu trước tiên phải hàn anten vào bộ nhớ thì mới được :-)
Dù vậy đây vẫn là một bài viết tuyệt vời và tỉ mỉ về cách khai thác thực tế các glitch kiểu này. Bật lửa thuốc lá cũng có thể dùng để lảng vảng ở cửa sau data center, chờ admin ra hút thuốc.
Nhìn tiêu đề, tôi tưởng là câu chuyện hack xe Hyundai bằng một thiết bị bật lửa thuốc lá USB-C.