Làm thế nào hữu ích là gắn / tmp noexec?


39

Nhiều người (bao gồm cả Hướng dẫn bảo mật Debian ) khuyên bạn nên gắn /tmpvới noexec,nodev,nosuidbộ tùy chọn. Điều này thường được trình bày như là một yếu tố của chiến lược 'phòng thủ chuyên sâu', bằng cách ngăn chặn sự leo thang của một cuộc tấn công cho phép ai đó viết tệp hoặc tấn công bởi người dùng có tài khoản hợp pháp nhưng không có không gian có thể ghi khác.

Tuy nhiên, theo thời gian, tôi đã gặp phải các đối số (nổi bật nhất là Nhà phát triển Debian / Ubuntu Colin Watson), đó noexeclà một biện pháp vô dụng, vì một vài lý do tiềm năng:

  1. Người dùng có thể chạy /lib/ld-linux.so <binary>trong một nỗ lực để có được hiệu ứng tương tự.
  2. Người dùng vẫn có thể chạy trình thông dịch do hệ thống cung cấp trên các tập lệnh không thể chạy trực tiếp

Với các đối số này, nhu cầu tiềm năng cho cấu hình nhiều hơn (ví dụ debconfnhư thư mục tạm thời có thể thực thi) và khả năng mất tiện lợi, đây có phải là biện pháp bảo mật đáng giá không? Những lỗ hổng nào khác mà bạn biết về việc cho phép vượt thoát?


1
@neoice: Tôi đã nghe nói rằng các ứng dụng sẽ thỉnh thoảng bị hỏng nếu / tmp không được thực thi. Tôi vẫn chưa thực sự thấy nó xảy ra mặc dù. Hãy nhìn vào tu sĩ-1.2 ... nó xảy ra. Sẽ không bắt đầu nếu / tmp không được gắn mà không có tùy chọn noexec, vì nó giải nén các thư viện ở đó và sau đó cố gắng tải chúng.

Trình quản lý khôi phục trang web của VMware chạy các tập lệnh từ "/ tmp": Tùy chỉnh IP không thành công trong quá trình chuyển đổi dự phòng hoặc kiểm tra chuyển đổi kế hoạch khôi phục trong vCenter Site Recovery Manager (2021083): kb.vmware.com/elfservice/microsites/ tựa

1
Tôi biết rằng tiện ích nén có tên snappy làm rơi tệp .so trong / tmp và không thể chạy nếu được gắn noexec. (được sử dụng theo mặc định trong cassandra và kafka) IMHO đây là lý do không sử dụng snappy hơn là lý do không gắn kết / tmp noexec
jorfus 21/07/17

Câu trả lời:


31

Dưới đây là các đối số cho tiện ích mà tôi đã đưa ra cho đến nay:

Các hạt nhân hiện đại sửa /lib/ld-linux.solỗ hổng để nó không thể ánh xạ các trang thực thi từ một noexechệ thống tập tin.

Điểm thông dịch viên chắc chắn vẫn là một mối quan tâm, mặc dù tôi nghĩ ít hơn một người so với mọi người có thể yêu cầu. Lý do tôi có thể đưa ra là có rất nhiều lỗ hổng leo thang đặc quyền dựa vào việc tạo ra các tòa nhà chọc trời dị hình cụ thể. Nếu không có kẻ tấn công cung cấp nhị phân, việc tạo ra các tòa nhà độc ác sẽ khó hơn nhiều. Ngoài ra, thông dịch viên kịch bản không được ưu tiên (tôi biết điều này đôi khi không phải là trường hợp, chẳng hạn như với một perid suid), và do đó sẽ cần lỗ hổng riêng của họ để có ích trong một cuộc tấn công. Rõ ràng, ít nhất có thể sử dụng Python, để chạy một số khai thác.

Nhiều khai thác 'đóng hộp' có thể cố gắng viết và chạy các tệp thực thi /tmp, và do đó noexeclàm giảm khả năng rơi vào một cuộc tấn công theo kịch bản (nói trong cửa sổ giữa tiết lộ lỗ hổng và cài đặt bản vá).

Vì vậy, vẫn có một lợi ích bảo mật để gắn kết /tmpvới noexec.

Như được mô tả trong trình theo dõi lỗi của Debian , việc cài đặt APT::ExtractTemplates::TempDirvào apt.confmột thư mục không noexecthể truy cập và root có thể truy cập được sẽ làm giảm bớt mối quan tâm gỡ lỗi.


tuy nhiên, tôi đã nghe nói rằng các ứng dụng đôi khi sẽ bị hỏng nếu / tmp không thể thực thi được. Tôi vẫn chưa thực sự thấy nó xảy ra mặc dù.
neoice

Như đã lưu ý trong hướng dẫn được liên kết trong câu hỏi, nó gây rối với cấu hình trước gói Debconf mà không thiết lập một giải pháp thay thế.
Phil Miller

2
Vâng, noexec là một lớp bổ sung rất tốt để bảo mật và tôi chưa thấy mọi thứ hãm lại do nó. Cài đặt gói là điều duy nhất và thậm chí có thể được giải quyết xung quanh như được nói bằng câu trả lời ở đây. Theo giải pháp của tôi, tôi có một bí danh như thế này: alias update = "mount -o exec, remount / tmp && apt-get update && apt-get nâng cấp && mount -o noexec, remount / tmp"
Janne Pikkarainen

1
Tôi đoán nó không phổ biến, nhưng các gói được viết để thực thi một cái gì đó từ / tmp bên ngoài bối cảnh cài đặt gói vẫn tồn tại (ví dụ: phiên bản hiện tại của phần mềm trung gian để sử dụng Thẻ nhận dạng điện tử của Bỉ).
bình đẳng

Equaeghe: Gói đó là gì? Nó có lẽ nên được báo cáo như là một lỗi. Tôi sẵn sàng đặt cược rằng có một lỗ hổng bảo mật cũng được tìm thấy trong cách sử dụng nó.
Phil Miller

7

Nhiều gói Debian yêu cầu / tmp phải được thực thi để gói được cài đặt. Chúng thường được đánh dấu là lỗi (mức độ nghiêm trọng của 'bình thường' / 'wishlist'):

https://www.google.com/#q=site:bugs.debian.org+noexec+/tmp

Tôi vừa nhận được lỗi này trong khi cài đặt kernel đã cập nhật vào nhánh ổn định ngay hôm nay.

Vì vậy, có vẻ như Debian (& dẫn xuất?) Chưa sẵn sàng để / tmp được gắn noexec ...


6

thêm phần sau vào /etc/apt.conf hoặc /etc/apt/apt.conf.d/50remount

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};

6
Tôi đã thay thế mountbằng /bin/mounttrong trường hợp PATH được sửa đổi. Ban se khong bao gio biet.
Lekensteyn

4

Mặc dù cách giải quyết tồn tại đối với hầu hết các biện pháp bảo mật bổ sung mà bạn có thể chọn thực hiện, ngay cả các biện pháp bảo mật dễ bị phá vỡ nhất (như gắn / tmp noexec hoặc chạy SSH trên một cổng thay thế) sẽ ngăn chặn các cuộc tấn công tự động hoặc theo kịch bản dựa trên các mặc định theo thứ tự để hoạt động. Nó sẽ không bảo vệ bạn trước một kẻ tấn công quyết đoán và hiểu biết, nhưng hơn 99% thời gian, bạn sẽ không chống lại một kẻ tấn công quyết đoán hoặc hiểu biết. Thay vào đó, bạn sẽ tự bảo vệ mình trước một kịch bản tấn công tự động.


2

Đầu tiên: Nó bao gồm nhiều trường hợp tấn công khác nhau Tắt nó bởi vì có một vài cách được biết xung quanh nó (một số trong đó thậm chí đã được sửa) là lạ. Kẻ tấn công tải mã xuống / dev / shm hoặc / tmp là điều phổ biến chúng làm.

Phòng thủ theo chiều sâu là về việc đảm bảo các điểm tham chiếu phổ biến nhất, mỗi điểm dừng chúng làm cho hệ thống của bạn có thể sống sót hơn. Không an toàn. Nhưng nó cũng sẽ có cơ hội . Nếu họ không thể tải trọng thứ cấp của mình, đó là cơ hội khá tốt mà bạn nhận được.

  • Nó cũng có thể bị dừng bởi các hạn chế của người dùng iptables.
  • Nó cũng có thể bị dừng bởi SELinux.
  • Nó cũng có thể không bị dừng do khai thác dễ dàng truy cập khác.

Vấn đề là để làm cho nó khó như bạn dễ dàng có thể, và cắt ra 99% các vụ tấn công.

Thứ hai: Nó dừng thực hành xấu (chạy công cụ từ temp, thực hiện cài đặt ứng dụng chính qua / tmp thay vì tmpdir của người dùng), để lại dữ liệu trong / tmp. Trình cài đặt tùy chỉnh thường hiểu TMPDIR Ngoài ra: ngay cả khi không: thời gian cài đặt, như một hành động tại thời điểm, không phải là lý do hợp lệ để tắt vĩnh viễn vấn đề bảo mật .

Thứ ba: Xem xét các không gian tên ẩn danh trong / tmp (một "tính năng"), bạn thực sự muốn hạn chế những gì được đặt ở đó và chạy từ đó.

Forth: Thuận tiện không phải là một yếu tố có liên quan trong việc này. Giả sử chúng tôi chạy máy chủ để kiếm tiền và cho một mục đích: chúng tôi chịu trách nhiệm về công cụ này. "Ồ, tôi đã không khóa / tmp vì sau đó tôi cần thêm vài phút nữa khi tôi cập nhật phần mềm vào năm tới". Chắc chắn sẽ không chỉ có một điều này đứng giữa bị tống tiền và vẫn ổn. Một lý do tuyệt vời? Tôi không nghĩ vậy.

Làm thế nào về điều này:

"Chúng tôi đã học được rằng kẻ thù có thể tấn công mà không cần thông báo. Họ cũng có thể sử dụng hàng trăm điệp viên để đầu độc thực phẩm. Vì vậy, chúng tôi đã ngừng đưa súng cho binh lính của chúng tôi."

Đợi đã, CÁI GÌ?

Có những biện pháp khác đòi hỏi nhiều nỗ lực, kinh nghiệm và may mắn hơn để bảo vệ hệ thống và biết mọi người có giới hạn về tiền bạc, tuổi thọ và cũng muốn dành thời gian cho gia đình: Đừng bỏ qua những thứ dễ dàng.


1

Có những ứng dụng yêu cầu / tmp phải được thực thi để cài đặt. Ở một công việc trước đó, trước khi tôi đến đó, các quản trị viên đã thiết lập / tmp noexec, nhưng tôi phát hiện ra rằng gói db2 sẽ không cài đặt. Ngay cả khi bạn gỡ bỏ gói db2 ở một nơi khác, quy trình cài đặt sẽ sao chép một số tệp vào / tmp và hy vọng có thể thực thi gói đó, điều này tất nhiên không thành công khi bị từ chối cấp phép. Nếu bạn không biết rằng hệ thống tập tin được gắn noexec, nó có thể gây hiểu nhầm đôi chút. Nó chỉ có thể tiếp tục cài đặt sau khi tôi kết thúc / tmp mà không có noexec.

Dù sao đi nữa, vấn đề là ít nhất một sản phẩm thương mại yêu cầu / tmp không được gắn noexec và có thể có những sản phẩm khác. Tôi đã không tìm thấy một lý do thực sự thuyết phục cho nó. Nếu bạn muốn bảo mật tốt hơn, tôi sẽ đi với selinux thay thế.


Một phân tích về việc khai thác lỗ hổng Samba, sẽ bị dừng bởi noexec / tmp: bobao.360.cn/learning/detail/4168.html (khuyến nghị dịch Google của Chrome. Nó sẽ phá vỡ khai thác ban đầu, cũng như phần lớn của tải trọng ...) (Bạn có thể phá vỡ nhiều khai thác tự động phổ biến theo cách đó ....). mount -o remount,exec /tmphoạt động khi bạn cần cài đặt công cụ ... (Vâng, thật là tầm thường khi làm việc xung quanh, nhưng nhiều kẻ tấn công dường như không làm phiền ...)
Gert van den Berg
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.