Tại sao lại có thể là Accept AcceptEnv * không được coi là không an toàn?


12

Trong /etc/ssh/sshd_configđó, có một tùy chọn được gọi là AcceptEnvcho phép máy khách ssh gửi các biến môi trường. Tôi cần để có thể gửi một số lượng lớn các biến môi trường. Những thay đổi này trên mọi kết nối từ máy khách, vì vậy việc đưa chúng vào tập lệnh đăng nhập trên máy chủ sẽ khó khăn hơn.

Tôi đã đọc nó "AcceptEnv *"là không an toàn. Tôi muốn hiểu lý do tại sao trước khi tôi cố gắng để có được một danh sách tất cả các biến môi trường được cố gắng đặt ở đó.

Tại sao nó được coi là không an toàn? Tôi có thể lấy một ví dụ không?

Câu trả lời:


11

Cho phép xử lý môi trường có thể cho phép người dùng bỏ qua các hạn chế truy cập trong một số cấu hình bằng các cơ chế như LD_PRELOAD.

Không phải tất cả các phiên bản của trang man cho sshd_config đều đề cập đến điều này. Nếu các biến môi trường của bạn được thay đổi trước và các quy trình đặc quyền nhất định được thực thi với các thư viện mới được chỉ định bởi điều này, các vấn đề có thể xảy ra.

Hãy xem http://www.dankalia.com/tutor/01005/0100501004.htm và tìm kiếm "Khai thác LD_PRELOAD". Xin lỗi, trang không có liên kết neo.

Xem thêm câu hỏi StackOverflow này, " Thủ thuật LD_PRELOAD là gì? "

Đặt các biến môi trường sau khi kết nối là tốt, nhưng khi các biến đó được diễn giải bởi trình nền ssh như được đặt bởi AcceptEnv, điều xấu có thể xảy ra.


1
Làm thế nào nó khác với khi họ đặt các biến thủ công sau khi đăng nhập?
Joseph Garvin

1
@JosephGarvin, một số hệ thống có trình bao bị hạn chế hoặc chỉ cho phép một lệnh cụ thể duy nhất, sao cho "chúng" không thể . Sau đó, mối quan tâm là cung cấp một phương tiện mà các biện pháp an ninh như vậy có thể được bỏ qua.
Charles Duffy

0

Không chấp nhận các biến môi trường:

Xem khai thác Shellshock xuất hiện gần đây .. nếu bạn chấp nhận các biến môi trường thì bạn đang mở ra một khai thác thực sự khó chịu.


1
Bạn đang sợ IMO. Nếu bạn lo lắng tại sao họ có quyền truy cập SSH? Và btw bạn không thể ngăn chúng thiết lập các biến môi trường một khi chúng nằm trong shell hoặc thậm chí là các hàm. Khai thác đó là về truy cập shell trái phép thông qua những thứ như nginx, không được phép truy cập shell được ủy quyền.
Jordon Bedwell

Dù sao bạn chấp nhận ít nhất một env. biến có tên là HẠN. Có thể có các nhu cầu hợp lệ để chấp nhận các biến khác như PRINTER, EDITOR, PAGER, ...
iename5041

@JordonBedwell, không phải mọi kết nối SSH đều được cấp quyền truy cập shell. Tôi có một số hệ thống có tài khoản xác thực duy nhất bằng khóa SSH chỉ cho phép chạy một lệnh cụ thể, duy nhất (với danh tính của chủ sở hữu khóa đó và các chi tiết khác, được đưa vào).
Charles Duffy

... Điều đó nói rằng, tôi đồng ý rằng vào năm 2017, ShellShock bị che khuất rất nhiều ở đây. Với các triển khai hiện tại, việc tạo hàm xuất khẩu yêu cầu kiểm soát không chỉ đối với giá trị của biến môi trường mà còn cả tên của nó (và quá trình đánh giá các hàm xuất trong quá trình khởi động shell không còn dễ bị tấn công tiêm chích).
Charles Duffy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.