Có phải Symlinks trên các mẫu là một vấn đề bảo mật, và nếu có, tại sao?


35

Magento khuyên không nên sử dụng các mẫu thông qua symlink:

Advanced > Developer > Template Settings > Allow Symlinks

Cảnh báo! Kích hoạt tính năng này không được khuyến nghị trên các môi trường sản xuất vì nó thể hiện rủi ro bảo mật tiềm ẩn.

Cho đến hôm nay tôi không thể thấy bất kỳ rủi ro nào ở đây.

  • Rủi ro là gì?

8
Tôi chỉ có thể tưởng tượng đây là một rủi ro trên các máy chủ được chia sẻ, không nên được sử dụng cho Thương mại điện tử ngay từ đầu.
đánh dấu

3
@ đánh dấu. Tại sao bạn không đặt điều này như một câu trả lời?
Marius

2
Câu hỏi rất hay @Fabi!
dùng487772

3
Tôi biết rằng những người khác sẽ cung cấp câu trả lời đầy đủ hơn. Tôi đã QUYỀN :-D
đánh dấu

3
@benmark Trang web cần câu trả lời cao hơn cho mỗi tỷ lệ câu hỏi bằng mọi cách ;-)
user487772

Câu trả lời:


40

Symlinks không nhất thiết là xấu.

Trước hết: Nếu cố gắng mở một mục tiêu liên kết tượng trưng, ​​quyền truy cập tệp của mục tiêu có hiệu lực. Nếu bạn không được phép đọc / ghi / thực hiện mục tiêu liên kết tượng trưng, ​​không có gì xảy ra.

Nhưng: Bạn có thể chạy các tệp bên ngoài gốc tài liệu của mình (đôi khi đó thực sự là những gì bạn muốn làm với chúng, phải không?). Vấn đề có thể xảy ra nếu bạn không ở trong môi trường suEXEC và có apachehoặc www-datangười dùng trên một lưu trữ được chia sẻ, chịu trách nhiệm phục vụ các tệp từ các tài khoản khác nhau. Người dùng hệ thống của bạn không được phép truy cập các tệp của một khách hàng khác, nhưng apache/www-datangười dùng chủ yếu sẽ có quyền đọc trên tất cả các tài khoản được chia sẻ. Đây có thể là một tình huống trong đó một người dùng có thể truy cập các tệp của người dùng khác trên máy chủ được chia sẻ. Không phải với người dùng của riêng bạn, mà bằng cách truy cập tệp qua trình duyệt với apache/www-datangười dùng. Tóm lại: Trong trường hợp này, bạn sẽ có thể truy cập các tệp của người dùng khác => xấu.

Điều tồi tệ tiếp theo là kẻ tấn công có thể tạo liên kết tượng trưng, ​​cũng như các tệp như / etc / passwd, ..., tải xuống dữ liệu này và tiếp tục với thông tin này. Điều này không chỉ liên quan đến symlink mà còn liên quan đến cấu hình máy chủ xấu (nơi quyền truy cập vào các tệp này bị hạn chế nghiêm ngặt). Vì vậy, không sử dụng symlink ngăn chặn một số cuộc tấn công có thể hơn.

Đó không chỉ là về bản thân symlink là một rủi ro bảo mật, mà là vấn đề cấu hình máy chủ.


5
Giải thích tuyệt vời - đây là câu trả lời chính xác, về cơ bản, "sử dụng rủi ro của riêng bạn"
philwinkle

2
Có lẽ đáng nói (mặc dù luôn có sự cân bằng với các lỗi liên quan đến bảo mật trong môi trường 'không thích nâng cấp') - Magento không khuyến khích các liên kết có liên quan đến khai thác trong đó các tệp mẫu và bố cục bên ngoài app/designthư mục, khi được kết hợp với các khai thác nhỏ khác, có thể được sử dụng bởi người dùng quản trị để leo thang đặc quyền và khai thác máy chủ khác.
Alan Storm

1
Trên Apache httpd nếu bạn muốn hỗ trợ các liên kết tượng trưng, ​​hãy xem xét SymLinksIfOwnerMatchtùy chọn đó được sử dụng thay vì FollowSymlinks.
hakre

15

đúng vậy, đó là lý do tại sao máy chủ web thường có cấu hình "không theo liên kết tượng trưng" hoặc ít nhất là "chỉ theo liên kết của mục tiêu với cùng một người dùng" Thats vì webserver / php thường chạy với nhiều quyền hơn nên bạn nên có quyền truy cập.

Và vì các máy chủ web thường cố gắng tránh những thứ như nhìn thấy / etc / bóng, nên đối với các mẫu magento thậm chí còn nguy hiểm hơn, vì các mẫu được phân tích cú pháp thông qua bao gồm () để bạn có thể bị rò rỉ bảo mật rất mạnh nếu bạn không kiểm soát hoàn toàn các tệp của mình.

Bạn có thể lập luận rằng sau đó có những vấn đề khác, nhưng ai thực sự biết mọi kịch bản tấn công tiềm năng, và hầu hết sự kết hợp của các lỗ hổng bảo mật ít vấn đề khác nhau, dẫn đến những phá vỡ lớn.

Ngoài ra, trước đây đã có một sửa chữa bảo mật liên quan đến thư mục phương tiện và liên kết tượng trưng, ​​vì vậy bạn nên xem xét các tình huống tấn công có thể xảy ra.


1
Nếu ai đó khác có thể tạo liên kết tượng trưng trên máy chủ của bạn, bạn đã gặp rắc rối lớn hơn thế. Ý tôi là - xem bình luận của Ben bên dưới. Ai đã từng lưu trữ một Magento trong một lưu trữ được chia sẻ? Ai sẽ lưu trữ bất cứ thứ gì trong một máy chủ chia sẻ hiện nay và tại sao? :)
Sven

3
đơn giản vì có những người làm việc đó. Bạn không thể mong đợi người khác hành động hợp lý. Sẽ luôn có những người làm điều này và sẽ luôn có những người mắc lỗi liên quan đến cấu hình máy chủ chung.
Flyingmana

14

Tôi chỉ có thể tưởng tượng đây là một rủi ro trên các máy chủ được chia sẻ, không nên được sử dụng cho Thương mại điện tử ngay từ đầu.


1
Thật không may, nó được sử dụng khá nhiều.
Piotr Kaminski

2
Theo các tiêu chuẩn của Hội đồng Bảo an PCI về mặt kỹ thuật, đám mây công cộng là nhiều bên thuê, do đó, thậm chí đó được coi là một "rủi ro".
philwinkle

4

Bản vá Magento SUPEE-9767 bao gồm APPSEC-1281: Thực thi mã từ xa thông qua các liên kết tượng trưng , vì vậy, vâng, các Liên kết trên các mẫu là một vấn đề bảo mật.

Loại:
Thực thi mã từ xa (RCE)

CVSSv3 Mức độ nghiêm trọng:
8,8 (Cao)

Tấn công đã biết:
Có. Những kẻ tấn công đang vô hiệu hóa bảo vệ cấu hình sau khi có quyền truy cập của quản trị viên và đang tải lên mã độc.

Mô tả:
Việc sử dụng tùy chọn AllowSymlinks trong cài đặt cấu hình có thể cho phép tải lên hình ảnh có chứa mã độc. Mặc dù tùy chọn này bị tắt theo mặc định, kẻ tấn công có quyền truy cập để lưu cài đặt cấu hình có thể kích hoạt nó và thực thi mã từ xa.

(Các) Sản phẩm bị ảnh hưởng:
Magento CE trước 1.9.3.3 và Magento EE trước 1.14.3.3

Đã sửa lỗi trong:
CE 1.9.3.3, EE 1.14.3.3, SUPEE-9767

Phóng viên:
Wilko Nienhaus


0

Không đề nghị cho phép. Tôi đã phải đối mặt với lỗi tải js trong khi bật liên kết tượng trưng.
Nhiều;

LoạiError: $ .widget không phải là một hàm

Tôi phải thử 4-5 lần làm mới cho các trang được tải thành công.
Sau khi đóng nó, có thể không được triển khai tải tài nguyên lần đầu tiên nhưng lỗi js đã biến mất.

PS: Sau khi vô hiệu hóa symlink, bạn phải xóa bản sao đã triển khai của các tệp sau mỗi thay đổi đối với static.php sao chép lại cho bạn.


1
Xin lỗi, tôi không hiểu - bạn phải thực hiện 4-5 lần làm mới, trước khi nó hoạt động? Điều này có liên quan gì đến symlink?
Fabian Blechschmidt

Trước khi vô hiệu hóa symlink :) Xin lỗi vì tiếng Anh của tôi.
rbostan

Có phải chúng ta đang nói về magento2? Sau đó tôi hiểu, rằng tôi không hiểu - chưa có manh mối nào về 2.
Fabian Blechschmidt
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.