Thông tin đầu tiên do Ars Technica cung cấp, cho biết các nhà nghiên cứu đã phát hiện ra 1 lỗ hổng bảo mật nghiêm trọng bên trong các con chip Apple Silicon, từ M1, M2 tới M3. GoFetch là tên gọi được đặt cho lỗ hổng này, thực hiện đánh cắp thông tin mã hóa từ bộ nhớ đệm của CPU, cho phép chương trình tấn công xây dựng khóa mã hóa (cryptographic key) từ những dữ liệu bị đánh cắp, từ đó truy cập vào dữ liệu nhạy cảm được mã hóa.
GoFetch lợi dụng 1 lỗ hổng bảo mật bên trong Apple Silicon, liên quan đến bộ nạp trước dữ liệu dựa trên bộ nhớ (DMP - data memory-dependent prefetcher). Đây là bộ nạp trước thế hệ mới, hiện tại chỉ được sử dụng bên trong Apple Silicon và vi xử lý kiến trúc Raptor Lake của Intel. DMP thực hiện nạp trước dữ liệu từ bộ nhớ vào bộ đệm trước khi cần thiết. GoFetch liên quan tới 1 hành vi bị bỏ qua trong prefetcher, nơi bộ nạp trước này tải dữ liệu khóa vào trong bộ đệm CPU, bao gồm cả giá trị con trỏ (pointer) được dùng để tải dữ liệu khác. Đôi khi DMP sẽ lẫn lộn nội dung bộ nhớ và tải những dữ liệu không phù hợp vào CPU cache.
Lỗ hổng thì đa số có thể vá dễ dàng khi người ta phát hiện, trừ những thứ liên quan trực tiếp tới phần cứng, trong trường hợp này là GoFetch trên Apple Silicon. GoFetch hoàn toàn vô hiệu hóa các tác động bảo mật của lập trình hằng số thời gian (constant-time programming - bất kể dữ liệu đầu vào ra sao thì thuật toán cũng chỉ chạy trong 1 thời gian cố định) - thuật toán mã hóa giảm nhẹ kênh phụ (side-channel mitigation). Đây là giải pháp được sử dụng để chống lại các cuộc tấn công side-channel hoặc CPU cache có liên quan đến prefetcher. Các ứng dụng GoFetch từ kẻ xấu sẽ có thể đánh lừa phần mềm mã hóa để đưa dữ liệu nhạy cảm vào bộ đệm nhằm đánh cắp thông tin.
Tính nghiêm trọng của GoFetch là nó ảnh hưởng tới mọi loại thuật toán mã hóa, kể cả khóa 2048 bit - thứ được tạo ra và cường hóa để chống lại các cuộc tấn công từ máy tính lượng tử. Phần mềm GoFetch chỉ cần chưa tới 1 tiếng để giải mã khóa RSA 2048 bit, hơn 2 giờ cho khóa Diffie-Hellman 2048-bit. Kẻ tấn công sẽ cần 54 phút để trích xuất dữ liệu cần thiết nhằm tạo ra 1 khóa Kyber-512 và khoảng 10 giờ nếu là khóa Dilithium-2, chưa tính thời gian xử lý dữ liệu thô.
GoFetch chỉ có thể được xử lý nhất thời bằng cách bổ sung thêm 1 lớp mã hóa khác từ phần mềm, mục tiêu là tăng độ khó cho kẻ xấu. Tuy nhiên cách này cũng sẽ ảnh hưởng tới hiệu năng của con chip Apple M1, M2 và M3 khi nó phải thực hiện thêm quá trình mã hóa - giải mã. Các nhà phát triển phần mềm cũng có thể xoay chuyển tình thế bằng cách “ép” ứng dụng mã hóa chỉ chạy trên E-core, nơi không có sự xuất hiện của DMP, đánh đổi lại là hiệu năng. Con chip Apple M3 mới nhất được cho là có 1 công tắc ẩn để có thể vô hiệu hóa DMP, nhưng vấn đề vẫn là hiệu năng. Không ai biết khi tắt DMP - kỹ thuật được tạo ra nhằm tăng tốc xử lý nhờ dự đoán dữ liệu cần thiết tiếp theo và nạp trước dữ liệu đó - sẽ tác động như thế nào tới hiệu năng, nhiều hơn hay ít hơn giải pháp phần mềm.
Điểm cực kỳ thú vị như đã nói ở ngay tựa bài, các vi xử lý Intel trên nền kiến trúc Raptor Lake (thế hệ 13 và 14) không bị ảnh hưởng bởi lỗ hổng này, dù vẫn sử dụng cùng prefetcher như Apple Silicon. Điều này cho thấy GoFetch có thể vá ngay trong phần cứng, rõ ràng các kỹ sư của Intel tay nghề cao hơn nên đã dự đoán, tìm ra và xử lý lỗ hổng trước khi hoàn thiện con chip tới tay khách hàng. Apple vẫn có thể tìm hiểu và khắc phục GoFetch trong thế hệ chip kế tiếp bằng cách thiết kế lại kiến trúc CPU. Còn với hiện tại, khả năng bản vá phần mềm cho Apple M1, M2 và M3 sẽ được cung cấp trong năm nay.
GoFetch lợi dụng 1 lỗ hổng bảo mật bên trong Apple Silicon, liên quan đến bộ nạp trước dữ liệu dựa trên bộ nhớ (DMP - data memory-dependent prefetcher). Đây là bộ nạp trước thế hệ mới, hiện tại chỉ được sử dụng bên trong Apple Silicon và vi xử lý kiến trúc Raptor Lake của Intel. DMP thực hiện nạp trước dữ liệu từ bộ nhớ vào bộ đệm trước khi cần thiết. GoFetch liên quan tới 1 hành vi bị bỏ qua trong prefetcher, nơi bộ nạp trước này tải dữ liệu khóa vào trong bộ đệm CPU, bao gồm cả giá trị con trỏ (pointer) được dùng để tải dữ liệu khác. Đôi khi DMP sẽ lẫn lộn nội dung bộ nhớ và tải những dữ liệu không phù hợp vào CPU cache.
Lỗ hổng thì đa số có thể vá dễ dàng khi người ta phát hiện, trừ những thứ liên quan trực tiếp tới phần cứng, trong trường hợp này là GoFetch trên Apple Silicon. GoFetch hoàn toàn vô hiệu hóa các tác động bảo mật của lập trình hằng số thời gian (constant-time programming - bất kể dữ liệu đầu vào ra sao thì thuật toán cũng chỉ chạy trong 1 thời gian cố định) - thuật toán mã hóa giảm nhẹ kênh phụ (side-channel mitigation). Đây là giải pháp được sử dụng để chống lại các cuộc tấn công side-channel hoặc CPU cache có liên quan đến prefetcher. Các ứng dụng GoFetch từ kẻ xấu sẽ có thể đánh lừa phần mềm mã hóa để đưa dữ liệu nhạy cảm vào bộ đệm nhằm đánh cắp thông tin.
Tính nghiêm trọng của GoFetch là nó ảnh hưởng tới mọi loại thuật toán mã hóa, kể cả khóa 2048 bit - thứ được tạo ra và cường hóa để chống lại các cuộc tấn công từ máy tính lượng tử. Phần mềm GoFetch chỉ cần chưa tới 1 tiếng để giải mã khóa RSA 2048 bit, hơn 2 giờ cho khóa Diffie-Hellman 2048-bit. Kẻ tấn công sẽ cần 54 phút để trích xuất dữ liệu cần thiết nhằm tạo ra 1 khóa Kyber-512 và khoảng 10 giờ nếu là khóa Dilithium-2, chưa tính thời gian xử lý dữ liệu thô.
GoFetch chỉ có thể được xử lý nhất thời bằng cách bổ sung thêm 1 lớp mã hóa khác từ phần mềm, mục tiêu là tăng độ khó cho kẻ xấu. Tuy nhiên cách này cũng sẽ ảnh hưởng tới hiệu năng của con chip Apple M1, M2 và M3 khi nó phải thực hiện thêm quá trình mã hóa - giải mã. Các nhà phát triển phần mềm cũng có thể xoay chuyển tình thế bằng cách “ép” ứng dụng mã hóa chỉ chạy trên E-core, nơi không có sự xuất hiện của DMP, đánh đổi lại là hiệu năng. Con chip Apple M3 mới nhất được cho là có 1 công tắc ẩn để có thể vô hiệu hóa DMP, nhưng vấn đề vẫn là hiệu năng. Không ai biết khi tắt DMP - kỹ thuật được tạo ra nhằm tăng tốc xử lý nhờ dự đoán dữ liệu cần thiết tiếp theo và nạp trước dữ liệu đó - sẽ tác động như thế nào tới hiệu năng, nhiều hơn hay ít hơn giải pháp phần mềm.
Điểm cực kỳ thú vị như đã nói ở ngay tựa bài, các vi xử lý Intel trên nền kiến trúc Raptor Lake (thế hệ 13 và 14) không bị ảnh hưởng bởi lỗ hổng này, dù vẫn sử dụng cùng prefetcher như Apple Silicon. Điều này cho thấy GoFetch có thể vá ngay trong phần cứng, rõ ràng các kỹ sư của Intel tay nghề cao hơn nên đã dự đoán, tìm ra và xử lý lỗ hổng trước khi hoàn thiện con chip tới tay khách hàng. Apple vẫn có thể tìm hiểu và khắc phục GoFetch trong thế hệ chip kế tiếp bằng cách thiết kế lại kiến trúc CPU. Còn với hiện tại, khả năng bản vá phần mềm cho Apple M1, M2 và M3 sẽ được cung cấp trong năm nay.