Các biến môi trường có thể hiển thị cho người dùng không có đặc quyền trên Linux không?


12

Tôi đang cố gắng xác định xem, trong Linux, các biến môi trường cho một quá trình có thể quan sát được bởi những người dùng khác (không phải root) hay không.

Trường hợp sử dụng ngay lập tức là đặt bí mật vào các biến môi trường. Điều này được thảo luận ở nhiều nơi trên web là không an toàn, nhưng tôi chưa thể nói rõ về điểm tiếp xúc chính xác trong Linux.

Lưu ý rằng tôi không nói về việc đưa bí mật Cleartext vào các tệp. Cũng lưu ý rằng tôi không nói về việc tiếp xúc với tài khoản root (tôi xem việc cố gắng che giấu bí mật khỏi một kẻ thù với root là một người không thông minh).

Câu hỏi này dường như giải quyết vấn đề của tôi, với các bình luận phân loại các biến môi trường là hoàn toàn không có bảo mật, hoặc chỉ đơn giản là bị che khuất, nhưng làm thế nào để một người truy cập chúng?

Trong các thử nghiệm của tôi, một người dùng không có đặc quyền không thể quan sát các biến môi trường cho một người dùng khác thông qua bảng quy trình ('ps auxwwe'). Các lệnh đặt các biến môi trường (ví dụ: xuất) là các hàm dựng sẵn không xuất hiện trên bảng quy trình và bởi phần mở rộng không có trong / Proc / $ pid / cmdline. / Proc / $ pid / môi trường chỉ có thể đọc được bởi UID của chủ sở hữu quy trình.

Có lẽ sự nhầm lẫn là giữa các hệ điều hành hoặc phiên bản khác nhau. Nhiều nguồn (gần đây) trên web giải mã sự không an toàn của các biến môi trường, nhưng việc kiểm tra tại chỗ các phiên bản linux khác nhau của tôi dường như cho thấy rằng điều này không thể quay trở lại ít nhất là vào năm 2007 (có thể hơn nữa nhưng tôi không có hộp tay để kiểm tra).

Trong Linux, làm thế nào một người dùng không có đặc quyền có thể quan sát các biến môi trường cho các quy trình của người khác?

Câu trả lời:


7

Như Gilles đã giải thích trong một câu trả lời rất toàn diện cho một câu hỏi tương tự trên security.stackexchange.com, môi trường xử lý chỉ có thể truy cập được đối với người dùng sở hữu quy trình (và tất nhiên là root).


Bất kỳ liên kết đến bài viết bạn có ý nghĩa?
cyc115

@ cyc115 nhấp vào từ "trả lời" :)
guntbert

6

Biến môi trường rất an toàn. Điều mà câu hỏi bạn liên kết đang nói là nếu hệ thống bị xâm phạm, lợi ích bảo mật duy nhất của việc sử dụng các biến môi trường đối với tệp cấu hình là tối nghĩa. Có nghĩa là nếu ai đó đã có quyền truy cập root, họ có thể nhận được cả hai.
Việc sử dụng các biến môi trường cho dữ liệu bí mật có được coi là 'tối nghĩa' hay không cũng là điều gây tranh cãi. Đây là một thực tế rất phổ biến, và do đó tôi sẽ không xem xét nó như vậy.

Bạn chỉ có thể truy cập dữ liệu được lưu trữ trong một biến môi trường ở 2 vị trí:

1. Môi trường chạy của quá trình

Khi tiến trình đang chạy, các biến môi trường của quá trình đó có thể được truy cập thông qua /proc/$PID/environ. Tuy nhiên, chỉ người dùng sở hữu quy trình hoặc root mới có thể truy cập tệp đó.

2. Nguồn của các biến môi trường

Nếu bạn đang sử dụng tập lệnh init và các biến được lưu trong tập lệnh init đó, tất nhiên các biến có thể thu được bằng cách đọc tập lệnh đó.

Hoặc nếu các biến môi trường đến từ một nơi khác, thì bất cứ nơi nào có.

3. đầu ra 'ps'

Vâng, tôi biết tôi đã nói 2, và trong bất kỳ hệ thống tử tế nào, nó sẽ là 2. Tuy nhiên nếu quản trị viên không biết anh ta đang làm gì, có thể mở ra một con đường thứ 3.

Nếu quy trình được khởi chạy thông qua một cái gì đó như sh -c 'cd /foo/bar; POP=tart /my/executable', thì shquá trình đó sẽ được hiển thị trong ps:

$ sh -c 'cd /; POP=tart sleep 10' &
[1] 3085

$ ps ax | grep POP
phemmer   3085  14   5  0.0  0.0 SN         00:00 sh -c cd /; POP=tart sleep 10

1
Bạn cũng nên đề cập đến các esửa đổi để ps. Nó cũng chỉ cho phép xem môi trường của các quá trình mà người dùng sở hữu.
Barmar

1
Thêm một vị trí có thể: nếu biến môi trường được đặt qua shell (ví dụ export FOO=bar) thì nó cũng có thể xuất hiện trong tệp lịch sử (ví dụ ~/.bash_history) nếu người dùng không thực hiện các biện pháp phòng ngừa để không lưu hoặc xóa nó.
tavnab
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.