Một lỗ hổng trong cryptsetup cho phép bạn vô hiệu hóa mã hóa trong phân vùng LUKS2

Một lỗ hổng (CVE-2021-4122) đã được xác định trong gói Cryptsetup, được sử dụng để mã hóa các phân vùng đĩa trong Linux, cho phép vô hiệu hóa mã hóa trên các phân vùng ở định dạng LUKS2 (Thiết lập khóa hợp nhất Linux) bằng cách sửa đổi siêu dữ liệu. Để khai thác lỗ hổng, kẻ tấn công phải có quyền truy cập vật lý vào phương tiện được mã hóa, tức là. Phương pháp này chủ yếu có ý nghĩa đối với việc tấn công các thiết bị lưu trữ bên ngoài được mã hóa, chẳng hạn như ổ Flash mà kẻ tấn công có quyền truy cập nhưng không biết mật khẩu để giải mã dữ liệu.

Cuộc tấn công chỉ áp dụng cho định dạng LUKS2 và có liên quan đến việc thao túng siêu dữ liệu chịu trách nhiệm kích hoạt tiện ích mở rộng “mã hóa lại trực tuyến”, cho phép, nếu cần thay đổi khóa truy cập, để bắt đầu quá trình mã hóa lại dữ liệu một cách nhanh chóng. mà không ngừng làm việc với phân vùng. Do quá trình giải mã và mã hóa bằng khóa mới tốn rất nhiều thời gian nên “mã hóa lại trực tuyến” giúp không làm gián đoạn công việc với phân vùng và thực hiện mã hóa lại trong nền, mã hóa lại dần dần dữ liệu từ khóa này sang khóa khác . Cũng có thể chọn một khóa mục tiêu trống, cho phép bạn chuyển đổi phần này thành dạng được giải mã.

Kẻ tấn công có thể thực hiện các thay đổi đối với siêu dữ liệu LUKS2 mô phỏng việc hủy bỏ hoạt động giải mã do lỗi và giải mã được một phần phân vùng sau khi chủ sở hữu kích hoạt và sử dụng ổ đĩa đã sửa đổi. Trong trường hợp này, người dùng đã kết nối ổ đĩa đã sửa đổi và mở khóa nó bằng mật khẩu chính xác sẽ không nhận được bất kỳ cảnh báo nào về quá trình khôi phục hoạt động mã hóa lại bị gián đoạn và chỉ có thể tìm hiểu về tiến trình của hoạt động này bằng cách sử dụng “luks Dump” yêu cầu. Lượng dữ liệu mà kẻ tấn công có thể giải mã tùy thuộc vào kích thước của tiêu đề LUKS2, nhưng ở kích thước mặc định (16 MiB), nó có thể vượt quá 3 GB.

Vấn đề xảy ra là do mặc dù việc mã hóa lại yêu cầu tính toán và xác minh giá trị băm của khóa mới và khóa cũ, nhưng không cần phải có hàm băm để bắt đầu giải mã nếu trạng thái mới hàm ý không có khóa văn bản gốc để mã hóa. Ngoài ra, siêu dữ liệu LUKS2, chỉ định thuật toán mã hóa, không được bảo vệ khỏi sửa đổi nếu nó rơi vào tay kẻ tấn công. Để chặn lỗ hổng bảo mật, các nhà phát triển đã thêm tính năng bảo vệ bổ sung cho siêu dữ liệu vào LUKS2, hiện tại hàm băm bổ sung đã được kiểm tra, tính toán dựa trên các khóa và nội dung siêu dữ liệu đã biết, tức là. kẻ tấn công không còn có thể lén lút thay đổi siêu dữ liệu mà không biết mật khẩu giải mã.

Một kịch bản tấn công điển hình yêu cầu kẻ tấn công có thể chiếm được ổ đĩa nhiều lần. Đầu tiên, kẻ tấn công không biết mật khẩu truy cập sẽ thực hiện các thay đổi đối với vùng siêu dữ liệu, kích hoạt việc giải mã một phần dữ liệu vào lần kích hoạt ổ đĩa tiếp theo. Sau đó, ổ đĩa sẽ được trả về vị trí của nó và kẻ tấn công đợi cho đến khi người dùng kết nối nó bằng cách nhập mật khẩu. Khi người dùng kích hoạt thiết bị, quá trình mã hóa lại nền sẽ được bắt đầu, trong đó một phần dữ liệu được mã hóa được thay thế bằng dữ liệu được giải mã. Hơn nữa, nếu kẻ tấn công lấy lại được thiết bị, một số dữ liệu trên ổ đĩa sẽ ở dạng được giải mã.

Sự cố đã được người bảo trì dự án cryptsetup xác định và khắc phục trong bản cập nhật cryptsetup 2.4.3 và 2.3.7. Bạn có thể theo dõi trạng thái của các bản cập nhật đang được tạo để khắc phục sự cố trong các bản phân phối trên các trang này: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Lỗ hổng này chỉ xuất hiện kể từ khi phát hành cryptsetup 2.2.0, phiên bản này giới thiệu hỗ trợ cho hoạt động “mã hóa lại trực tuyến”. Để giải quyết vấn đề bảo vệ, bạn có thể sử dụng tùy chọn khởi chạy bằng tùy chọn “--disable-luks2-reencryption”.

Nguồn: opennet.ru

Thêm một lời nhận xét