Ba Lần Mở Khóa: Làm Sao Nhiều Nghiên Cứu Viên Phát Hiện Ra Một Lỗ Hổng Chip 20 Năm Cùng Một Lúc

Vào một ngày Chủ Nhật lạnh giá tháng trước tại thành phố nhỏ Graz của Áo, ba nghiên cứu viên trẻ ngồi xuống trước máy tính ở nhà và cố gắng phá vỡ những bảo vệ an ninh cơ bản nhất của họ.
Hai ngày trước đó, tại phòng lab của họ tại Đại học Công nghệ Graz, Moritz Lipp, Daniel Gruss và Michael Schwarz đã quyết định nhổ một ý tưởng đã làm phiền họ suốt vài tuần, một sợi dây lỏng lẻo trong các biện pháp bảo vệ dưới bàn tay những con chip bảo vệ bộ nhớ nhạy cảm nhất của hàng tỷ máy tính. Sau một đêm thứ Bảy uống rượu với bạn bè, họ bắt đầu công việc vào ngày hôm sau, mỗi người viết mã độc lập để thử nghiệm một cuộc tấn công lý thuyết vào lỗ hổng nghi ngờ, chia sẻ tiến triển của họ qua tin nhắn tức thì.
Buổi tối đó, Gruss thông báo với hai nghiên cứu viên khác rằng anh ấy đã thành công. Mã của anh ấy, được thiết kế để đánh cắp thông tin từ phần sâu nhất, được bảo vệ nhất của hệ điều hành máy tính, được biết đến là kernel, không còn trả ra các ký tự ngẫu nhiên mà là những dữ liệu thực sự được hút từ bên trong máy tính của anh ấy: đoạn từ lịch sử duyệt web, văn bản từ cuộc trò chuyện email riêng. Hơn là cảm giác thành công, anh ấy cảm thấy sốc và thất vọng.
"Thật sự là rất, rất đáng sợ," Gruss nói. "Bạn không mong đợi cuộc trò chuyện riêng của mình sẽ xuất hiện từ một chương trình mà không có quyền truy cập dữ liệu đó."
Từ máy tính của họ trên khắp thành phố, Lipp và Schwarz sớm thử nghiệm mã chứng minh mà họ đã viết, và có thể thấy cùng những kết quả: Lipp nhớ nhìn thấy các URL và tên file hiện lên từ nhiễu số. "Bất ngờ tôi có thể thấy những chuỗi không nên xuất hiện ở đó," anh ấy nói. "Tôi nghĩ, 'Ôi Chúa ơi, đây thực sự đang hoạt động.'"
Đêm đó, không có một trong ba nghiên cứu viên Graz nào ngủ nhiều hơn vài giờ. Ngày hôm sau, họ gửi một tin nhắn đến Intel cảnh báo về một lỗ hổng có thể làm đảo lộn ngành công nghiệp trong các vi xử lý của họ. Họ đã tìm ra một khoảng trống trong một trong những biện pháp bảo vệ cơ bản nhất mà máy tính đề xuất: sự cách ly các chương trình không tin cậy để truy cập vào các quy trình khác trên máy tính hoặc lớp sâu nhất của hệ điều hành máy tính nơi giữ bí mật nhạy cảm nhất của nó. Với cuộc tấn công của họ, bất kỳ hacker nào có thể chạy mã trên máy tính mục tiêu có thể phá vỡ sự cách ly xung quanh chương trình có đặc quyền thấp để truy cập các bí mật chôn sâu trong kernel máy tính như các tập tin riêng, mật khẩu hoặc các khóa mật mã.
Trên các dịch vụ máy tính đám mây như Amazon Web Services, nơi nhiều máy ảo tồn tại trên cùng một máy chủ vật lý, một máy ảo độc hại có thể nhìn sâu vào bí mật của những máy ảo láng giềng. Phát hiện của nhóm Graz, một cuộc tấn công sau này được biết đến là Meltdown, chứng minh một khe hở quan trọng trong một trong những biện pháp bảo vệ cơ bản nhất của máy tính. Và có lẽ đáng lo ngại nhất, tính năng mà họ đã lợi dụng đã được giới thiệu vào các vi xử lý của Intel vào giữa những năm 1990. Cuộc tấn công này somehow vẫn còn khả năng, mà không có sự phát hiện công khai nào rõ ràng, trong suốt nhiều thập kỷ.
Tuy nhiên, khi Intel đáp lại cảnh báo của bộ ba này — sau một tuần dài im lặng — công ty đã đưa ra một phản ứng đáng ngạc nhiên. Mặc dù Intel thực sự đang làm việc để khắc phục, nhóm Graz không phải là người đầu tiên thông báo về lỗ hổng này cho gigabyte chip. Trên thực tế, hai đội nghiên cứu khác đã vượt qua họ. Đếm thêm một phương thức khác liên quan sẽ được biết đến là Spectre, Intel thông báo với các nhà nghiên cứu rằng họ thực sự là thứ tư báo cáo về loại cuộc tấn công mới, tất cả trong một khoảng thời gian chỉ là vài tháng.
"Theo như tôi có thể thấy, đó là một sự trùng hợp điên rồ," nói Paul Kocher, một nhà nghiên cứu an ninh nổi tiếng và một trong hai người đầu tiên báo cáo về cuộc tấn công Spectre khác biệt nhưng liên quan đến các nhà sản xuất chip. "Hai luồng không có điểm chung gì cả," anh ấy thêm. "Không có lý do gì ai đó không thể phát hiện ra điều này nhiều năm trước thay vì ngày nay."
Trên thực tế, sự kỳ lạ của việc nhiều nghiên cứu viên không liên quan đến nhau lại phát hiện ra những lỗ hổng cũ hai thập kỷ trước đặt ra câu hỏi về ai khác có thể đã phát hiện ra những cuộc tấn công trước họ — và ai có thể đã bí mật sử dụng chúng để gián điệp, có thể là trong nhiều năm, trước các phát hiện của tuần này và sự cảnh báo của phần mềm từ hầu hết mọi công ty công nghệ lớn đã vội vàng đối phó với mối đe doạ.
Sự đồng bộ của những phát hiện tấn công vi xử lý đó, theo quan điểm của nhà nghiên cứu an ninh và thành viên Harvard Belfer Center Bruce Schneier, không chỉ là một bí ẩn cô lập mà còn là một bài học chính trị: Khi các cơ quan tình báo như NSA phát hiện ra những lỗ hổng có thể bị hack và sử dụng chúng một cách bí mật, họ không thể giả định rằng những lỗ hổng đó sẽ không bị người khác phát hiện lại trong điều mà ngành công nghiệp an ninh gọi là "va chạm lỗi."
Sự kiện Meltdown và Spectre thực sự không phải là lần đầu tiên các lỗi lớn được phát hiện đồng thời. Một cái gì đó — và thậm chí Schneier cũng thừa nhận không rõ là cái gì — dẫn dắt những nhà nghiên cứu an ninh hàng đầu thế giới phát hiện ra gần như đồng thời, giống như Leibniz và Newton cùng phát minh ra phép tính đồng thời vào cuối thế kỷ 17, và năm kỹ sư khác nhau độc lập phát minh ra máy truyền hình trong vài năm nhau trong những năm 1920.
"Kỳ quái, đúng không? Như là có điều gì đó trong nước," nói Schneier, người mùa hè trước cộng tác viết bài nghiên cứu về khám phá lỗ hổng. "Có điều gì đó xảy ra trong cộng đồng và nó dẫn người ta nghĩ, hãy nhìn vào đây. Và rồi họ làm. Và điều này chắc chắn xảy ra nhiều hơn nhiều so với cơ hội."
Vì vậy, khi NSA phát hiện ra một lỗ hổng gọi là zero-day — một lỗ hổng có thể hack trước đó không biết đến trong phần mềm hoặc phần cứng — Schneier lập luận rằng xu hướng phát hiện lại đó cần phải được tính đến khi quyết định liệu cơ quan có nên lợi dụng lỗ hổng đó một cách âm thầm để gián điệp hay thay vào đó báo cáo cho bất kỳ bên nào có thể sửa nó. Schneier lập luận rằng va chạm lỗi như Spectre và Meltdown có nghĩa là họ nên mắc lỗi về phía tiết lộ: Theo ước lượng đại khái trong nghiên cứu Harvard mà anh ta cộng tác viết, có thể có đến một phần ba tất cả các zero-days được sử dụng trong một năm cụ thể có thể đã được NSA phát hiện đầu tiên.
"Nếu tôi phát hiện ra một cái gì đó đang ngủ đọng từ 10 năm, có điều gì đó khiến tôi phát hiện nó, và có điều gì đó nhiều hơn so với ngẫu nhiên sẽ khiến người khác phát hiện nó nữa," Schneier nói. "Nếu NSA phát hiện ra nó, có khả năng một cơ quan tình báo khác cũng phát hiện ra nó, ít nhất là nhiều hơn so với ngẫu nhiên."
Trong khi một số yếu tố của sự va chạm bug bốn chiều của Meltdown và Spectre - một cụm từ có thể phản ánh tốt hơn - vẫn không thể giải thích được, một số nghiên cứu viên đã đi theo những dấu vết công khai giống nhau đến những khám phá của họ. Đặc biệt, nghiên cứu viên an ninh Anders Fogh, một chuyên viên phân tích phần mềm đối với công ty Đức GData, vào tháng 7 đã viết trên blog của mình rằng anh ta đang khám phá một tính năng kỳ lạ của các bộ xử lý hiện đại được gọi là thực hiện có giả định. Trong tham vọng không ngừng của họ để có hiệu suất nhanh hơn, những người chế tạo chip đã lâu thiết kế bộ xử lý để bỏ qua trong việc thực hiện mã, tính toán kết quả ngoài thứ tự để tiết kiệm thời gian thay vì đợi ở một chỗ tr bottleneck trong một quy trình.
Có lẽ, Fogh đề xuất, tính linh hoạt ngoài thứ tự có thể cho phép mã độc hại thao tác một bộ xử lý để truy cập một phần bộ nhớ mà nó không nên có quyền truy cập - như là kernel - trước khi chip thực sự kiểm tra xem mã có quyền hay không. Và ngay cả sau khi bộ xử lý nhận ra sự nhầm lẫn của nó và xóa kết quả của quyền truy cập bất hợp pháp đó, mã độc hại có thể lừa bộ xử lý một lần nữa để kiểm tra bộ nhớ cache của mình, phần nhỏ của bộ nhớ được phân phối cho bộ xử lý để giữ dữ liệu được sử dụng gần đây dễ dàng truy cập. Bằng cách theo dõi thời gian của những kiểm tra đó, chương trình có thể tìm thấy dấu vết của những bí mật của kernel.
Fogh không thể xây dựng một cuộc tấn công hoạt động, do những điều kỳ cục của thiết lập thử nghiệm của anh ta mà nhiều nghiên cứu viên khác nay nói là nhược điểm của nó. Nhưng tuy nhiên, Fogh cảnh báo rằng việc thực hiện có giả định có thể là một "hộp Pandora" cho nghiên cứu an ninh trong tương lai.
Tuy nhiên, bài đăng của Fogh ít khi làm kêu lên đèn đỏ cho cộng đồng nghiên cứu an ninh phần cứng rộng lớn. Chỉ sau vài tháng, các nghiên cứu viên tại Đại học Công nghệ Graz bắt đầu xem xét cẩn thận những cảnh báo của anh ta. Điều đầu tiên họ nhận ra đó là từ danh sách thư Linux kernel: Tháng 10, họ nhận thấy rằng các nhà phát triển từ các công ty lớn bao gồm Intel, Amazon và Google đều đột ngột quan tâm đến một thiết kế phòng thủ mới của hệ điều hành, gọi là KAISER, mà nhóm nghiên cứu của Graz đã tạo ra, với mục tiêu cải thiện sự cách ly giữa bộ nhớ của các chương trình và bộ nhớ của hệ điều hành.
Ban những nghiên cứu viên Graz đã dự kiến KAISER để giải quyết một vấn đề ít quan trọng hơn nhiều so với Meltdown hoặc Spectre; sự tập trung của họ là ẩn vị trí của bộ nhớ của máy tính khỏi những người tấn công độc hại, không nhất thiết là chặn quyền truy cập vào nó. "Chúng tôi cảm thấy hạnh phúc," Lipp nhớ lại. "Mọi người quan tâm đến việc triển khai các biện pháp ngăn chặn của chúng tôi."
Tuy nhiên, không lâu sau đó, các nhà phát triển trên danh sách thư bắt đầu chú ý rằng bản vá KAISER có thể làm chậm một số chip Intel lên đến năm đến 30 phần trăm đối với một số quy trình - một tác động phụ nghiêm trọng hơn nhiều so với những gì nghiên cứu viên Graz đã tìm thấy. Và tuy nhiên, Intel và các ông lớn công nghệ khác vẫn đang đẩy mạnh bản vá.
"Phải có cái gì đó lớn hơn ở đây," Lipp nhớ lại ông nghĩ. Các công ty công nghệ có đang sử dụng KAISER để vá một lỗ hổng ẩn tinh xấu hơn ở cấp chip? Chỉ sau đó họ và những nhà nghiên cứu Graz khác nghĩ lại về cuộc tấn công thực hiện có giả định không thành công của Fogh. Khi họ quyết định thử nghiệm chúng, họ bị sốc khi cách triển khai có chút điều chỉnh của họ đối với kỹ thuật của Fogh lại hoạt động.
Họ cũng không phải là một mình. Chỉ vài tuần trước đó, một cách tình cờ, nghiên cứu viên Thomas Prescher tại Dresden, công ty an ninh Cyberus của Đức cuối cùng cũng đã thử nghiệm phương pháp của Fogh. "Tôi đã nhìn vào nó nửa năm trước và thấy ý tưởng rất thú vị, nhưng đến một lúc nào đó tôi chỉ quên đi." Prescher nói. "Vào tháng 11, tôi tình cờ gặp lại nó và quyết định thử nghiệm. Tôi đã làm nó hoạt động rất nhanh."
Cuối cùng, các nhà nghiên cứu Cyberus và Graz báo cáo công việc của họ cho Intel chỉ trong vài ngày cách nhau vào đầu tháng 12. Chỉ sau khi Intel phản hồi đối với mỗi báo cáo lỗi của các nhà nghiên cứu vào giữa tháng đó, họ mới biết rằng có ai đó đã phát hiện và báo cáo tấn công Meltdown của họ cách đây vài tháng - cũng như cuộc tấn công thực hiện có giả định riêng biệt được biết đến là Spectre. Cảnh báo đó đến từ Project Zero, đội ngũ hacker săn lỗi hàng đầu của Google. Trên thực tế, nghiên cứu viên của Project Zero, Jann Horn, đã phát hiện cuộc tấn công vào tháng 6 - vài tuần trước bài đăng trên blog của Anders Fogh.
Làm thế nào Horn đã tự mình mò ra khái niệm tấn công thực hiện có giả định trong chip Intel? Theo cách anh kể, bằng cách đọc sách hướng dẫn.
Cuối tháng 4 năm ngoái, tên hacker 22 tuổi - công việc của anh ấy tại Project Zero là công việc đầu tiên sau khi tốt nghiệp đại học - đang làm việc ở Zurich, Thụy Sĩ, cùng với một đồng nghiệp, để viết một phần mềm chạy trên bộ xử lý, họ biết rằng hành vi của nó sẽ rất nhạy cảm với hiệu suất của chip Intel. Vì vậy, Horn đào sâu vào tài liệu của Intel để hiểu biết về phần nào của chương trình mà bộ xử lý của Intel có thể chạy ngoài thứ tự để tăng tốc nó.
Anh sớm nhận ra rằng đối với một điểm trong mã anh đang làm việc, các quirks của speculative execution mà Intel sử dụng để tăng tốc độ chip của mình có thể dẫn đến điều mà Horn mô tả như một giá trị "bí mật" bị truy cập tình cờ, và sau đó được lưu trữ trong bộ nhớ đệm của bộ xử lý. "Nói cách khác, [nó sẽ] làm cho việc một kẻ tấn công có thể tìm ra bí mật," Horn viết trong một email gửi tới MYTOUR. "Sau đó, tôi nhận ra rằng điều này có thể - ít nhất trong lý thuyết - ảnh hưởng đến nhiều hơn chỉ đoạn mã mà chúng tôi đang làm việc, và quyết định điều tra."
Vào đầu tháng 5, Horn đã phát triển kỹ thuật đó thành cuộc tấn công sau này được biết đến là Spectre. Khác với việc Meltdown lạm dụng trực tiếp bộ xử lý, Spectre tận dụng speculative execution để lừa gạt các chương trình vô tội hoặc các quy trình hệ thống trên máy tính để gieo mầm bí mật của chúng trong bộ nhớ đệm của bộ xử lý, nơi sau đó chúng có thể bị rò rỉ ra cho một hacker thực hiện một cuộc tấn công theo định thời gian giống như Meltdown. Ví dụ, một trình duyệt web có thể bị điều khiển để rò rỉ lịch sử duyệt web hoặc mật khẩu của người dùng.
Spectre khó khăn hơn đối với kẻ tấn công để lợi dụng so với Meltdown, nhưng cũng phức tạp hơn nhiều để khắc phục. Nó cũng hoạt động không chỉ trên chip Intel mà còn trên chip ARM và AMD, vấn đề phức tạp và kéo dài hơn đối với ngành công nghiệp. Horn báo cáo kết quả nghiên cứu của mình cho các nhà sản xuất chip vào ngày 1 tháng 6. Và khi anh tiếp tục khám phá các khả năng khác của speculative execution, anh phát hiện và báo cáo cuộc tấn công Meltdown cho Intel ba tuần sau đó.
Cuối cùng, sẽ có thêm một sự trùng hợp nữa trong cơn bão của các lỗi va chạm xung quanh Meltdown và Spectre. Ngay vào thời điểm Horn bắt đầu kiểm thử các cuộc tấn công của mình, Paul Kocher đang bắt đầu một kỳ nghỉ sabbatical từ công ty đặt tại San Francisco mà anh đã sáng lập, Cryptography Research. Anh muốn có thời gian, một phần, để khám phá một vấn đề rộng lớn mà anh thấy trong an ninh máy tính: sự đua đòi ngày càng tuyệt vọng để nén ra khỏi vi xử lý càng nhiều hiệu suất hơn bao giờ hết - bao gồm, có lẽ, chi phí của sự an toàn cơ bản của chúng.
Tại một hội nghị về mật mã và phần cứng tại Đài Bắc vào tháng 9 năm ngoái, đồng nghiệp cũ của Kocher, Mike Hamburg, đưa ra nghi ngờ về speculative execution. Kocher ngay lập tức quyết tâm chứng minh vấn đề. "Đó không phải là một khoảnh khắc 'aha' mà là một khoảnh khắc 'eww'," Kocher nói về sự nhận thức đưa anh đến với phương pháp tấn công giống nhau. "Ngay khi tôi bắt đầu nghiên cứu speculative execution, đối với tôi như là một người an ninh, rất rõ ràng rằng đây là một ý tưởng thực sự tồi tệ."
Không lâu sau khi anh trở lại từ Đài Bắc, Kocher đã viết mã một exploit hoạt động của riêng mình - mà không có bất kỳ kiến thức nào về việc Horn của Google đã tìm ra vấn đề cũ kỹ đó chính xác chỉ vài tháng trước đó.
Với Kocher, câu hỏi quan trọng không phải là làm thế nào nhiều nhà nghiên cứu tình cờ phát hiện ra cùng một lớp tấn công vào khoảng cùng một thời điểm. Mà là làm thế nào những cuộc tấn công này vẫn chưa được phát hiện trong thời gian dài - hoặc liệu chúng có thực sự được phát hiện, và được sử dụng để tấn công mục tiêu không biết gì trong bí mật.
"Nếu bạn hỏi tôi liệu các cơ quan tình báo có tìm ra điều này từ nhiều năm trước, tôi sẽ đoán chắc chắn là có," Kocher nói. "Họ có một số nỗ lực tốt nhất trên thế giới về những điều như thế này. Khá có khả năng rằng họ đã để ý. Và nếu họ phát hiện ra điều gì đó như thế này, miễn là nó đang mang lại thông tin tốt, họ sẽ không báo cho bất kỳ ai cả."
"Không chỉ là NSA," ông thêm. Các hacker được tài trợ bởi các quốc gia khác có khả năng - và đã có thời gian - có thể đã phát hiện ra được tấn công Spectre và Meltdown, nếu như họ muốn.
Vào thứ Sáu, Rob Joyce, người phụ trách an ninh mạng tại Nhà Trắng và là một cựu quan chức cấp cao của NSA, nói với The Washington Post rằng NSA không biết về Spectre và Meltdown và chưa bao giờ lợi dụng những lỗ hổng này. Joyce cũng khen ngợi việc tiết lộ thêm về các quy tắc của NSA về việc tiết lộ các lỗ hổng mà họ tìm thấy, một chính sách được biết đến là Quá trình Đối thoại về Lợi thế của Lỗ hổng.
Mặc dù có bằng chứng gần như kỳ lạ về việc phát hiện lại lỗi như Spectre và Meltdown, nhưng chưa rõ hiện tượng đó đã trở nên phổ biến đến đâu. Nghiên cứu của Harvard do Bruce Schneier đồng tác giả, chẳng hạn, kiểm tra một lượng lớn dữ liệu báo cáo lỗi chứa 4.300 lỗ hổng. Mười bốn phần trăm lỗ hổng Android được báo cáo lại trong vòng 60 ngày sau khi được phát hiện lần đầu tiên, và khoảng 13 phần trăm lỗi của Chrome. "Đối với NSA, việc giữ lại lỗ hổng nguy hiểm hơn nhiều so với bạn nghĩ, đồng thời xem xét số liệu thô," Schneier nói.
Nhưng một nghiên cứu khác được RAND corporation công bố vào năm ngoái, nghiên cứu các lỗi từ một tổ chức nghiên cứu không tên, chỉ tìm thấy khả năng là 5,7 phần trăm rằng một lỗi cụ thể sẽ được phát hiện và báo cáo trong vòng một năm—mặc dù nghiên cứu không tính đến những phát hiện lỗi bí mật khác.
Lillian Ablon, một trong những tác giả của nghiên cứu RAND, nhìn nhận về việc phát hiện lại Spectre và Meltdown không phải là một dấu hiệu rộng rãi cho việc tất cả các lỗi đều được phát hiện nhiều lần, mà là xu hướng trong an ninh máy tính có thể đột ngột làm chú ý nhiều mắt vào một lĩnh vực hẹp. "Có thể có va chạm lỗi ở một khu vực, nhưng chúng ta không thể đưa ra tuyên bố lớn rằng va chạm lỗi xảy ra mọi lúc," cô nói. "Sẽ có các dự án mã nguồn và các loại lỗi mà không có sự chú ý."
Paul Kocher lập luận rằng bài học thực sự là cho cộng đồng nghiên cứu an ninh không nên đi theo nhau mà là tìm và sửa lỗi trong mã nguồn tối ẩn mà hiếm khi thu hút sự chú ý rộng rãi.
"Suốt sự nghiệp của tôi, mỗi khi tôi nhìn vào nơi mà không có một chuyên gia an ninh nào nhìn, tôi luôn tìm thấy điều gì đó khó chịu và không dễ dàng," Kocher nói. "Điều gây sốc đối với tôi là những cuộc tấn công này không được phát hiện từ lâu. Và câu hỏi tôi đau đầu và lo lắng là, còn bao nhiêu vấn đề khác như vậy đã tồn tại trong khoảng 10 hoặc 15 năm qua?"
Meltdown và Spectre làm hại mạnh mẽ như là phức tạp. Dưới đây là cách chúng hoạt động và tại sao chúng đe dọa như vậy.
May mắn thay, một số bước quan trọng đã được thực hiện để khắc phục vấn đề—nhưng một giải pháp đầy đủ vẫn còn mất vài năm nữa.
Đây cũng là một trong những sự cố bảo mật khó khăn mới nhất đối với Intel, bao gồm một lỗ hổng quan trọng gần đây trong Hệ thống Quản lý của nó.
