Ba lỗ hổng được tìm thấy trong ngăn xếp TCP của Linux dẫn đến từ chối dịch vụ từ xa

sự cố linux

Recientemente phát hành tin tức về việc xác định một số lỗ hổng nghiêm trọng trong ngăn xếp TCP của Linux và FreeBSD đó cho phép kẻ tấn công bắt đầu từ xa một lỗi hạt nhân hoặc gây ra tiêu thụ tài nguyên quá mức bằng cách xử lý các gói TCP được chế tạo đặc biệt (gói chết).

Sự cố là do lỗi trong các tay cầm có kích thước tối đa của khối dữ liệu trong gói TCP (MSS, Kích thước phân đoạn tối đa) và cơ chế nhận dạng kết nối có chọn lọc (SACK, Selective TCP Recognition).

Sự công nhận có chọn lọc là gì?

Nhận dạng TCP có chọn lọc (SACK) nó là một cơ chế mà người nhận dữ liệu có thể thông báo cho người gửi về tất cả các phân đoạn đã được chấp nhận thành công.

Cái này cho phép người gửi truyền lại các phân đoạn luồng bị thiếu từ bộ 'nổi tiếng' của mình. Khi TCP SACK bị vô hiệu hóa, một tập hợp truyền lại lớn hơn nhiều được yêu cầu để truyền lại toàn bộ một chuỗi.

Trong nhân Linux, các sự cố được khắc phục trong các phiên bản 4.4.182, 4.9.182, 4.14.127, 4.19.52 và 5.1.11. Giải pháp cho FreeBSD có sẵn dưới dạng bản vá.

Các bản cập nhật gói hạt nhân được phát hành cho Debian, RHEL, SUSE / openSUSE, ALT, Ubuntu, Fedora và Arch Linux.

CVE-2019-11477 (Bỏ hoảng loạn)

Vấn đề hiển thị trong nhân Linux kể từ 2.6.29 và cho phép bạn phá vỡ hạt nhân (hoảng sợ) khi gửi một loạt các gói SACK do tràn số nguyên trong bộ điều khiển.

Đối với một cuộc tấn công, chỉ cần đặt giá trị MSS thành 48 byte cho kết nối TCP và gửi một chuỗi các gói SACK được sắp xếp theo một cách nhất định.

Bản chất của vấn đề là cấu trúc tcp_skb_cb (Bộ đệm ổ cắm) được thiết kế để lưu trữ 17 mảnh vỡ ("Xác định MAX_SKB_FRAGS (65536 / PAGE_SIZE + 1) => 17").

Trong quá trình gửi một gói, nó được đặt trong hàng đợi gửi và tcp_skb_cb lưu trữ thông tin chi tiết về gói, chẳng hạn như số thứ tự, các cờ, cũng như các trường "tcp_gso_segs" và "tcp_gso_size", được sử dụng để gửi Thông tin phân đoạn đến bộ điều khiển (TSO, Tải xuống phân đoạn phân đoạn) để xử lý các phân đoạn ở phía card mạng.

Chunks được lưu khi xảy ra mất gói hoặc cần truyền lại gói chọn lọc, nếu SACK được bật và TSO được hỗ trợ bởi trình điều khiển.

Như một giải pháp để bảo vệ, bạn có thể tắt xử lý SACK hoặc chặn kết nối với MSS nhỏ (chỉ hoạt động khi bạn đặt sysctl net.ipv4.tcp_mtu_probing thành 0 và có thể phá vỡ một số bình thường với MSS thấp).

CVE-2019-11478 (SACK Chậm)

Thất bại này gây ra sự gián đoạn của cơ chế SACK (khi sử dụng nhân Linux trong 4.15) hoặc tiêu thụ tài nguyên quá mức.

Sự cố xảy ra khi xử lý các gói SACK được chế tạo đặc biệt có thể được sử dụng để phân mảnh hàng đợi truyền lại (truyền lại TCP). Các giải pháp bảo vệ tương tự như các lỗ hổng bảo mật trước đó

CVE-2019-5599 (SACK Chậm)

Cho phép gây ra sự phân mảnh của bản đồ các gói được gửi khi xử lý một chuỗi SACK trong một kết nối TCP duy nhất và khiến hoạt động tra cứu danh sách sử dụng nhiều tài nguyên chạy.

Vấn đề tự thể hiện trong FreeBSD 12 với cơ chế phát hiện mất gói RACK. Một giải pháp khác là bạn có thể tắt mô-đun RACK (nó không được tải theo mặc định, nó bị tắt bằng cách chỉ định sysctl net.inet.tcp.functions_default = freebsd)

CVE-2019-11479

Lỗ hổng cho phép kẻ tấn công làm cho nhân Linux phân chia phản hồi thành nhiều phân đoạn TCP, mỗi trong số đó chỉ bao gồm 8 byte dữ liệu, điều này có thể dẫn đến sự gia tăng đáng kể về lưu lượng truy cập, tăng tải của CPU và kênh giao tiếp bị tắc.

Ngoài ra, nó còn tiêu tốn thêm tài nguyên (sức mạnh bộ xử lý và card mạng).

Cuộc tấn công này đòi hỏi những nỗ lực liên tục từ phía kẻ tấn công và các lần truy cập sẽ kết thúc ngay sau khi kẻ tấn công ngừng gửi lưu lượng.

Trong khi cuộc tấn công này đang diễn ra, hệ thống sẽ bị giảm dung lượng, gây ra tình trạng từ chối dịch vụ cho một số người dùng.

Người dùng từ xa có thể gây ra sự cố này bằng cách đặt kích thước phân đoạn tối đa (MSS) của kết nối TCP ở giới hạn thấp nhất của nó (48 byte) và gửi một chuỗi các gói SACK được chế tạo đặc biệt.

Để giải quyết vấn đề, bạn nên chặn các kết nối có MSS thấp.


Hãy là người đầu tiên nhận xét

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.