OpenSSH 9.2 được phát hành với bản sửa lỗi lỗ hổng xác thực trước

Bản phát hành OpenSSH 9.2 đã được xuất bản, một triển khai mở của máy khách và máy chủ để hoạt động bằng giao thức SSH 2.0 và SFTP. Phiên bản mới loại bỏ lỗ hổng dẫn đến giải phóng bộ nhớ gấp đôi ở giai đoạn xác thực trước. Chỉ bản phát hành OpenSSH 9.1 bị ảnh hưởng; sự cố không xuất hiện ở các phiên bản trước.

Để tạo điều kiện cho biểu hiện lỗ hổng, chỉ cần thay đổi biểu ngữ máy khách SSH thành “SSH-2.0-FuTTYSH_9.1p1” để đặt cờ “SSH_BUG_CURVE25519PAD” và “SSH_OLD_DHGEX”, tùy thuộc vào phiên bản SSH khách hàng. Sau khi đặt các cờ này, bộ nhớ cho bộ đệm “options.kex_algorithms” sẽ được giải phóng hai lần - khi thực thi hàm do_ssh2_kex(), gọi compat_kex_proposal() và khi thực thi hàm do_authentication2(), gọi input_userauth_request(), mm_getpwnamallow( ), copy_set_server_options() dọc theo chuỗi , Assemble_algorithms() và kex_assemble_names().

Việc khai thác lỗ hổng này được coi là không thể thực hiện được vì quá trình khai thác quá phức tạp - các thư viện cấp phát bộ nhớ hiện đại cung cấp khả năng bảo vệ chống lại việc giải phóng bộ nhớ hai lần và quy trình xác thực trước có lỗi sẽ chạy với các đặc quyền bị giảm trong một môi trường bị cô lập. môi trường hộp cát.

Ngoài lỗ hổng được lưu ý, bản phát hành mới còn khắc phục thêm hai vấn đề bảo mật:

  • Đã xảy ra lỗi khi xử lý cài đặt "PermitRemoteOpen", khiến đối số đầu tiên bị bỏ qua nếu nó khác với các giá trị "bất kỳ" và "không". Sự cố xuất hiện trong các phiên bản mới hơn OpenSSH 8.7 và khiến quá trình kiểm tra bị bỏ qua khi chỉ chỉ định một quyền.
  • Kẻ tấn công kiểm soát máy chủ DNS được sử dụng để phân giải tên có thể thực hiện việc thay thế các ký tự đặc biệt (ví dụ: “*”) thành các tệp known_hosts nếu tùy chọn CanonicalizeHostname và CanonicalizePermitCNAMEs được bật trong cấu hình và trình phân giải hệ thống không kiểm tra tính chính xác của phản hồi từ máy chủ DNS. Cuộc tấn công được coi là khó xảy ra vì tên được trả về phải phù hợp với các điều kiện được chỉ định thông qua CanonicalizePermitCNAME.

Các thay đổi khác:

  • Cài đặt EnableEscapeCommandline đã được thêm vào ssh_config cho ssh để kiểm soát xem việc xử lý phía máy khách của chuỗi thoát "~C" cung cấp dòng lệnh có được bật hay không. Theo mặc định, việc xử lý "~C" hiện bị vô hiệu hóa để sử dụng cách ly hộp cát chặt chẽ hơn, có khả năng phá vỡ các hệ thống sử dụng "~C" để chuyển tiếp cổng khi chạy.
  • Lệnh ChannelTimeout đã được thêm vào sshd_config cho sshd để đặt thời gian chờ kênh không hoạt động (các kênh không có lưu lượng truy cập được ghi lại trong thời gian được chỉ định trong lệnh sẽ tự động đóng). Thời gian chờ khác nhau có thể được đặt cho phiên, X11, tác nhân và chuyển hướng lưu lượng.
  • Lệnh UnusedConnectionTimeout đã được thêm vào sshd_config cho sshd, cho phép bạn đặt thời gian chờ để chấm dứt các kết nối máy khách không có kênh hoạt động trong một thời gian nhất định.
  • Tùy chọn “-V” đã được thêm vào sshd để hiển thị phiên bản, tương tự như tùy chọn tương tự trong ứng dụng khách ssh.
  • Đã thêm dòng "Máy chủ" vào đầu ra của "ssh -G", phản ánh giá trị của đối số tên máy chủ.
  • Tùy chọn "-X" đã được thêm vào scp và sftp để kiểm soát các tham số giao thức SFTP như kích thước bộ đệm sao chép và số lượng yêu cầu đang chờ xử lý.
  • ssh-keyscan cho phép quét toàn bộ dải địa chỉ CIDR, ví dụ: "ssh-keyscan 192.168.0.0/24".

Nguồn: opennet.ru

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