CEO @CyStack
Có thể nói, an ninh mạng năm 2018 đã có một khởi đầu vất vả với sự kiện về hai lỗ hổng Spectre và Meltdown. Cuối năm 2017, các chuyên gia về bảo mật đã phát hiện ra các lỗ hổng này, và chính thức công khai công bố vào đầu năm 2018.
Spectre và Meltdown là gì?
Spectre và Meltdown là các thuật ngữ dùng cho các lỗ hổng đã được tiết lộ trong thiết kế của các CPU hiện đại. Các lỗ hổng này có ảnh hưởng đến hầu hết các chip máy tính được sản xuất trong 20 năm qua bằng cách khai thác hai kỹ thuật chính được sử dụng để tăng tốc độ các chip máy tính, được gọi là thực hành suy đoán (speculative execution) và bộ nhớ đệm. Sự cố này rất cơ bản và phổ biến đến mức chúng ta có thể gọi nó là một thảm hoạ công nghệ.
Meltdown chủ yếu ảnh hưởng đến bộ vi xử lý của Intel, vốn được dùng cho hàng loạt máy tính trên thế giới kể cả dòng sản phẩm MacBook của Apple. Spectre, đây thực ra là một tên gọi chung của hai lỗ hổng riêng biệt (được đặt mã CVE lần lượt là CVE-2017-5753 và CVE-2017-5715), chúng có thể gây ảnh hưởng đến các chip từ Intel, AMD và ARM trong máy tính để bàn cũng như điện thoại thông minh.
Cả Spectre và Meltdown đều dựa vào sự tương tác giữa các tính năng được gọi là cách thức “thực hành suy đoán”, cho phép máy tính của bạn hoặc các thiết bị khác đoán bạn sẽ làm gì tiếp theo để có thể thực hiện công việc đó một cách nhanh hơn. Bằng cách này, dữ liệu của bạn được lưu trữ, nó cũng tạo ra các lỗ hổng. Lỗ hổng này có thể cho phép hacker can thiệp vào các ứng dụng để lộ nội dung hệ thống, bộ nhớ ứng dụng và truy cập vào các dữ liệu khác mà chúng ta đã xem xét trước đây. Đây đều là những sai sót rất nghiêm trọng, phức tạp và có phạm vi ảnh hưởng rộng khắp, vì vậy bạn rất có thể là một nạn nhân trong cuộc tấn công.
Spectre và Meltdown có ảnh hưởng đến nhiều bộ vi xử lý hiện đại. điều đó có nghĩa là hầu hết các hệ thống đều có nguy cơ nếu không được vá lỗi đầy đủ. Bạn rất có thể là nạn nhân của các lỗ hổng nếu bạn đang sử dụng một trong các thiết bị: máy tính để bàn, máy chủ và các trường hợp hoạt động trong môi trường Điện toán đám mây.
Làm thế nào để tự bảo vệ mình trước Spectre và Meltdown ?
Các bản vá bảo mật đã và đang được phát hành bởi các nhà cung cấp hệ điều hành như Intel và AMD. Trong các môi trường ảo và đám mây, các nhà cung cấp sẽ cần phải cập nhật cơ sở hạ tầng để bảo vệ khách của họ. Người dùng sẽ cần phải cập nhật các máy chủ của họ để giảm nhẹ tác động trong các hệ điều hành khách, mặc dù những bản cập nhật này có thể khiến bộ xử lý trở nên chậm chạp hơn rất nhiều.
Cập nhật về các bản vá giảm nhẹ
Vào ngày 9 tháng 1 năm 2018, Linux bắt đầu phân phối các bản vá lỗi, nhưng chưa có bản phân phối nào được coi là vá đầy đủ. Tất cả các bản vá mới chỉ được công nhận ở mức giảm nhẹ ảnh hưởng.
Dưới đây là các phiên bản nhận được cập nhật nhằm giảm thiểu một phần tác động:
- CentOS 7: kernel 3.10.0-693.11.6
- CentOS 6: kernel 2.6.32-696.18.7
- Fedora 27: kernel 4.14.11-300
- Fedora 26: kernel 4.14.11-200
- Ubuntu 17.10: kernel 4.13.0-25-generic
- Ubuntu 16.04: kernel 4.4.0-109-generic
- Ubuntu 14.04: kernel 3.13.0-139-generic
- Debian 9: kernel 4.9.0-5-amd64
- Debian 8: kernel 3.16.0-5-amd64
- Debian 7: kernel 3.2.0-5-amd64
- Fedora 27 Atomic: kernel 4.14.11-300.fc27.x86_64
- CoreOS: kernel 4.14.11-coreos
Nếu nhân hệ điều hành (kernel) của bạn ở phiên bản tương ứng với ở trên hoặc mới hơn, một số cập nhật đã được áp dụng.
- Nhà phát triển FreeBSD vẫn chưa đưa ra bất kỳ bản cập nhật nào đối với FreeBSD 11 và 10.
Ubuntu 17.04, đã kết thúc vòng đời sản phẩm vào ngày 13 tháng 1 năm 2018, do đó nó cũng sẽ kết thúc giai đoạn hỗ trợ và không nhận được bản vá lỗi nào.
Cảnh báo: Bạn không nên cập nhật hoặc thay đổi bất kỳ bản phát hành nào đã hết hạn sử dụng. Những bản phát hành này sẽ không nhận được cập nhật bảo mật cho các lỗ hổng như Spectre và Meltdown, điều này rất nguy hiểm.
Windows: Ngày 17 tháng 1, Microsoft đã tung ra các gói cập nhật cho hệ điều hành 32bit(x86). Tuy nhiên, theo phản hồi của người dùng thì việc cập nhật này không giải quyết được Meltdown. Hiện Microsoft vẫn đang tiếp tục làm việc với các nhà sản xuất chip bị ảnh hưởng và đưa ra các bản vá giảm thiểu cho khách hàng phiên bản x86.
Do mức độ nguy hiểm của lỗ hổng này, chúng tôi khuyên người dùng nên bật tính năng cập nhật tự động ngay khi chúng có sẵn thay vì chờ đợi bản vá cuối cùng.

Cách sử dụng bản cập nhật
Bạn cần phải cập nhật phần mềm hệ thống của mình trước khi bắt đầu sử dụng bản vá. Bạn có thể chạy trình quản lý gói thông thường để tải về phiên bản hạt nhân (kernel) mới nhất và sau đó khởi động lại máy chủ của bạn để chuyển sang mã vá.
Nếu bạn đang sử dụng máy chủ Ubuntu và Debian, bạn có thể dễ dàng cập nhật phần mềm hệ thống bằng cách làm mới kho lưu trữ gói trên máy tính (local package index) và sau đó nâng cấp phần mềm hệ thống của bạn:
$ sudo apt-get update $ sudo apt-get dist-upgrade
Đối với người dùng CentOS, bạn có thể tìm thấy phần mềm cập nhật mới nhất bằng cách gõ:
$ sudo yum update
Đối với người dùng Fedora, sử dụng công cụ dnf:
$ sudo dnf update
Bất kể dùng hệ điều hành, một khi áp dụng bản cập nhật, bạn phải khởi động lại máy chủ của mình để chuyển sang nhân hệ đều hành mới:
$ sudo reboot
Khi máy chủ trực tuyến, bạn cần phải đăng nhập và kiểm tra nhân hệ đều hành đang hoạt động với danh sách được nêu ở trên để đảm bảo rằng nhân hệ đều hành của bạn đã được nâng cấp. Kiểm tra các bản cập nhật mới thường xuyên để đảm bảo rằng bạn nhận được bản vá lỗi mới nhất.
Thông tin bổ sung
Như đã nói ở phần đầu, cả 2 lỗ hổng Meltdown và Spectre đều khai thác các tính năng nâng cao hiệu suất trong bộ xử lý hiện đại. Sự kết hợp các tính năng của bộ vi xử lý như thực hành suy đoán (speculative execution), kiểm tra đặc quyền (privilege checking), thực thi không theo thứ tự (out-of-order execution) cùng với bộ nhớ đệm CPU cho phép đọc truy cập đến các vị trí bộ nhớ không được phép truy cập. Kết quả là các chương trình dù không có đặc quyền vẫn bị buộc phải tiết lộ dữ liệu nhạy cảm từ bộ nhớ của chúng hoặc truy cập vào bộ nhớ ưu tiên từ hệ điều hành hạt nhân hoặc các ứng dụng khác.
Lỗ hổng Meltdown được khai thác như thế nào?
Lỗ hổng Meltdown làm việc bằng cách lừa một bộ vi xử lý đọc vị trí bộ nhớ không được phép truy cập bằng cách tận dụng các sai sót trong việc tối ưu hóa CPU được gọi là thực hành suy đoán (speculative execution). Ý tưởng tổng quát hoạt động được tóm tắt như sau:
- Một yêu cầu được thực hiện đối với một vị trí bộ nhớ bất hợp pháp.
- Yêu cầu thứ hai được thực hiện để có điều kiện đọc một vị trí mưu trữ hợp lệ nếu yêu cầu đầu tiên có một giá trị nhất định.
- Sử dụng tính năng thực hành suy đoán (speculative execution), bộ xử lý hoàn thành công việc nền cho cả hai yêu cầu trên trước khi kiểm tra rằng yêu cầu ban đầu là không hợp lệ. Một khi bộ xử lý hiểu rằng các yêu cầu liên quan đến bộ nhớ là không hợp lệ, nó sẽ từ chối cả hai yêu cầu. Mặc dù kết quả không được trả về bởi bộ xử lý sau khi mã kiểm tra đặc quyền xác định quyền truy cập bộ nhớ được cho là không hợp lệ, thì cả hai vị trí truy cập sẽ vẫn còn được lưu trong bộ nhớ cache của bộ xử lý.
- Một yêu cầu mới bây giờ được thực hiện cho vị trí bộ nhớ hợp lệ. Nếu nhanh, thì vị trí đó đã có ở trong bộ nhớ cache của CPU, cho thấy rằng yêu cầu có điều kiện trước đó đã được thực hiện. Việc sử dụng lặp lại các điều kiện này có thể được sử dụng để hiểu được giá trị ở các vị trí bộ nhớ không được phép truy cập. Đây chính là cách hacker sử dụng để truy cập bất hợp pháp và các vùng bộ nhớ không được phép truy cập
Lỗ hổng Spectre được khai thác như thế nào?
Spectre cũng hoạt động bằng cách lừa một bộ xử lý lạm dụng thực hành suy đoán để đọc các giá trị giới hạn. Các thông báo công khai mô tả hai biến thể với mức độ phức tạp và tác động khác nhau:
Đối với biến thể 1 (Variant 1) của Spectre, bộ vi xử lý bị lừa vào việc đoán trước việc thực hiện đọc kiểm tra trước khi kiểm tra giới hạn được thi hành. Thứ nhất, kẻ tấn công khuyến khích bộ vi xử lý thực hành suy đoán (speculative execution) cho vị trí bộ nhớ không được phép truy cập. Sau đó, như Meltdown, một lệnh bổ sung có điều kiện giúp nạp một địa chỉ hợp pháp vào bộ nhớ cache dựa trên giá trị ngoài phạm vi giới hạn. Khoảng thời gian để lấy địa chỉ hợp pháp sau đó sẽ cho thấy nó đã được nạp vào bộ nhớ cache hay chưa. Điều này, đổi lại, có thể tiết lộ giá trị của vị trí bộ nhớ không được phép truy cập.
Ngoài ra, biến thể 2 (Variant 2) của Spectre là phức tạp nhất để có thể khai thác lỗ hổng và áp dụng các bản sửa chữa giảm nhẹ. Các bộ vi xử lý thường xuyên thực hiện các hướng dẫn ngay cả khi chúng gặp một thông báo có điều kiện rằng không thể đánh giá được. Chúng làm điều này bằng cách dự đoán kết quả có khả năng nhất của điều kiện bằng cách sử dụng một cơ chế được gọi là dự báo nhánh (branch prediction).
Dự báo nhánh sử dụng lịch sử của các lần chạy trước đó thông qua một đường dẫn mã để chọn một con đường để phán đoán. Điều này có thể được sử dụng bởi kẻ tấn công để làm chủ một bộ xử lý và đưa ra một quyết định thực hiện không chính xác. Bởi vì lịch sử lựa chọn nhánh (branch selection history) không lưu trữ các tham chiếu tuyệt đối cho quyết định, một bộ xử lý có thể bị lừa khi chọn một nhánh trong một phần của mã ngay cả khi được lập trình ở một bộ phận khác. Điều này có thể được khai thác để tiết lộ giá trị bộ nhớ bên ngoài phạm vi được cho phép.
Kết luận
Spectre và Meltdown là các lỗ hổng bảo mật nghiêm trọng. Vào thời điểm hiện tại, vẫn chưa có bản vá lỗi chính thức cuối cùng nào được phát hành. Do đó, để tự bảo vệ mình, bạn phải cập nhật phần mềm hệ điều hành của mình, tự động cập nhật từ nhà cung cấp và tiếp tục theo dõi các thông tin liên quan đến các lỗ hổng Meltdown và Spectre.
Đọc thêm về lỗ hổng bảo mật tồn tại trên tất cả các website WordPress.