Là LD LDIBIBARY_PATH có nguy cơ bảo mật không?


8

Chúng tôi biết ld.socác tìm kiếm thư viện trong các thư mục được chỉ định bởi biến môi trường $LD_LIBRARY_PATH, nhưng người dùng thông thường có thể chạy:

export LD_LIBRARY_PATH=dir1:dir2...

Họ có thể lưu thư viện bị nhiễm trong một đường dẫn có mức độ ưu tiên cao hơn thư viện ban đầu để ld.sotìm thấy thư viện đó thay vì thư viện đáng tin cậy trong ld.so.cache.

Đây có phải là một rủi ro?
Làm thế nào chúng ta có thể vô hiệu hóa ghi vào biến môi trường này cho người dùng thông thường?


Cảm ơn @Byte Commander đã chỉnh sửa. Tiếng Anh của tôi không tốt :)
Sinoosh

Không có vấn đề gì, nó tốt hơn mức trung bình :)
Chỉ huy Byte

Câu trả lời:


17

Đây hoàn toàn không phải là một rủi ro bảo mật, bởi vì bạn luôn chỉ có thể đặt các biến môi trường cho môi trường hiện tại của mình (ví dụ: phiên Bash hiện tại) và, bằng cách sử dụng exportlệnh, các môi trường con của nó (các kịch bản bạn khởi chạy, các chuỗi con, v.v.). Không thể leo thang một biến môi trường được tạo hoặc sửa đổi vào môi trường cha. Điều này bao gồm rằng người dùng thường xuyên không thể thực hiện các thay đổi trên toàn hệ thống.

Vì vậy, môi trường duy nhất sẽ bị ảnh hưởng nếu bạn chạy export LD_LIBRARY_PATH=...là lớp vỏ hiện tại của bạn và bất kỳ lớp con nào của nó bạn có thể sinh ra sau này. Giả sử bạn thay đổi đường dẫn tra cứu để bao gồm các thư viện bị nhiễm ngay từ đầu, nghĩa là có mức độ ưu tiên cao nhất. Sau đó, bạn chạy một tệp thực thi tải một trong các lib bị nhiễm mà không hề biết. Chuyện gì xảy ra bây giờ?

Bạn có mã độc (từ thư viện bị nhiễm) chạy dưới tài khoản người dùng của riêng bạn với các đặc quyền không phải quản trị viên thông thường. Điều này nghe có vẻ tệ, nhưng thực ra ... vậy thì sao? Nó chạy với các đặc quyền người dùng thông thường, điều đó một lần nữa có nghĩa là nó không thể ảnh hưởng đến toàn bộ hệ thống. Nhân tiện, trực tiếp chạy một tệp thực thi có cùng mã độc sẽ dễ dàng hơn nhiều so với sửa đổi đường dẫn tra cứu thư viện và chờ một tệp thực thi bình thường tải nó.

Kết luận: Một người dùng thông thường chỉ có thể sửa đổi đường dẫn tra cứu thư viện của riêng họ, điều đó có nghĩa là họ cũng chỉ có thể tự tải các thư viện đó dưới tài khoản người dùng thông thường của họ với các đặc quyền không phải toàn hệ thống thông thường. Điều đó nói rằng, không có gì khác biệt cho dù họ buộc tải một thư viện bị nhiễm hoặc trực tiếp chạy một tệp thực thi bị nhiễm. Bạn hoàn toàn không thu được gì nếu biến môi trường đó không thể bị người dùng ghi đè.

PS: Ngoài ra còn có các tệp thực thi có cờ setuid hoặc setgid , có nghĩa là chúng sẽ không chạy với tư cách là người dùng / nhóm của người điều hành chúng, mà là của người sở hữu chúng. Ví dụ, sudotệp thực thi được sở hữu bởi root và có bộ cờ setuid , có nghĩa là nó luôn chạy dưới dạng root khi được thực thi. Vì lý do bảo mật, $LD_LIBRARY_PATHbiến bị bỏ qua bởi các tệp thực thi với một trong các cờ setuid / setgid được đặt để đảm bảo rằng người dùng thông thường không thể thực thi chạy với các đặc quyền gốc để tải các thư viện tùy ý.
(Cảm ơn @Rinzwind đã chỉ ra điều này!)


Cảm ơn rất nhiều ! Tôi đang đọc một cuốn sách có nội dung "LD_LIBRARY_PATH được coi là rủi ro bảo mật vì nó có thể cho phép các chương trình trái phép truy cập vào thư viện hệ thống một cách vô tình hoặc làm lộ đường dẫn thư viện hệ thống cho người dùng trái phép." Nghia la gi?
Sinoosh

1
@Sinoosh Tôi thực sự không thể nghĩ ra lý do tại sao nó phải là một vấn đề bảo mật nếu một ứng dụng không tin cậy biết vị trí của các thư viện hệ thống của tôi. Nếu mọi thứ được cấu hình chính xác và bạn không bị rối với các quyền, chúng sẽ được sở hữu bởi root và không thể ghi bởi bất kỳ ai khác, điều đó có nghĩa là không có rủi ro rằng chúng bị nhiễm hoặc sửa đổi theo bất kỳ cách nào (trừ khi bạn chạy ứng dụng không đáng tin cậy bằng root , nhưng bạn sẽ không làm điều này, phải không?)
Chỉ huy Byte


@ Byte Chỉ huy, tôi đồng ý với bạn không phải với Tác giả :)
Sinoosh

Câu trả lời này không hoàn toàn chính xác. LD_LIBRARY_PATHtất nhiên là một vấn đề bảo mật khi bạn đang tải một thư viện độc hại ở nơi đầu tiên và thay đổi cách hành xử của một nhị phân.
heemayl
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.