SUPEE-9767, modman và symlink


16

Tôi muốn vá một cửa hàng Magento bằng SUPEE-9767. Các tài liệu cho SUPEE-9767 nói với tôi để liên kết tượng trưng vô hiệu hóa thiết lập trước khi áp dụng các bản vá:

Trước khi áp dụng bản vá hoặc nâng cấp lên bản phát hành mới nhất, hãy đảm bảo tắt cài đặt Symlinks ... Cài đặt, nếu được bật, sẽ ghi đè cài đặt tệp cấu hình và thay đổi nó sẽ yêu cầu sửa đổi cơ sở dữ liệu trực tiếp.

Nhưng tôi sử dụng modman để quản lý các mô-đun và vì một số mô-đun đang sử dụng tệp mẫu, cài đặt Symlinks được bật theo đề xuất trong README của modman. Có an toàn không khi bật cài đặt Symlinks là một trong những bài đăng trong Security Patch SUPEE-9767 - Các sự cố có thể xảy ra? gợi ý (tôi chưa thể nhận xét về bài đăng vì tôi là người dùng mới)?

Người dùng sử dụng modman để quản lý các mô-đun Magento 1.x phải đảm bảo rằng họ không tắt các liên kết tượng trưng vì điều này sẽ vô hiệu hóa các mô-đun modman.

Nếu tôi bật cài đặt Symlinks, cửa hàng sẽ không được tiếp xúc với APPSEC-1281: Thực thi mã từ xa thông qua liên kết tượng trưng , mối đe dọa bảo mật mà bản vá này có nghĩa là phải khắc phục?

Có cách nào khác để sử dụng modman với các tệp mẫu sau bản vá này không? (Tôi biết tùy chọn "phiên bản vá của Mage / Core / Block / Template.php" mà README của modman đề cập, nhưng việc vá một tệp lõi có vẻ nguy hiểm.)


1
Tôi đang sử dụng Modman và Composer trong các dự án của mình. Tôi không thể tin trong nhiều năm, tùy chọn Symlinks trong Magento không được coi là một quả bom. Đột nhiên nó là một quả bom! Thay đổi này mà không có bất kỳ thông báo và giải thích nào sẽ tạo ra nhiều rắc rối cho nhiều người. Buồn về Modman và Nhà soạn nhạc tương lai trong Magento.
ADDISON74

1
Đó là một thách thức khá. Nếu bạn sẵn sàng thực hiện đầu tư, tạo ra một quy trình xây dựng tạo ra một tạo phẩm được hợp nhất (không có liên kết tượng trưng) là một cách thực sự tốt đẹp.
Joseph tại SwiftOtter

Một bài viết tuyệt vời về điều này có thể được tìm thấy tại tomlankhorst.nl/ , nơi ông cũng giải thích làm thế nào để thoát khỏi "Symlinks được kích hoạt" - giới thiệu trong Magento 1.9.3.4.
ehannes

Câu trả lời:


14

Dưới đây là một số giải thích về sự thay đổi này:

Lần đầu tiên đọc lời giải thích này từ Peter O'Callaghan, điều này sẽ cho bạn sự hiểu biết tuyệt vời: https://peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks/

Ngoài ra một bài đọc thú vị khác là bài đăng này của Max Chadwick https://maxchadwick.xyz/blog/what-allow-symlinks-actingly-does

Sửa đổi này thực sự là về việc gọi nội dung có thể tải lên (như hình ảnh) thông qua các chỉ thị mẫu.

Vấn đề liên quan đến symlink chỉ có thể khai thác khi có quyền truy cập của quản trị viên và Magento đã thêm một số bảo vệ khác xung quanh việc tải lên hình ảnh.

Xin lưu ý rằng chúng là một số biện pháp bảo vệ chống lại cách đã biết để khai thác nó ngoài cài đặt.

Vì vậy, nếu bạn hiểu rủi ro liên quan, bạn có thể để lại liên kết tượng trưng.

Nếu bạn cần kích hoạt chúng để cài đặt mới, bạn có thể chạy:

UPDATE core_config_data SET value = 1 WHERE path = "dev/template/allow_symlink";

Nếu tôi để nó liên kết được bật, tôi sẽ bảo vệ cửa hàng như thế nào trước "APPSEC-1281: Thực thi mã từ xa thông qua liên kết tượng trưng"?
ehannes

@ehannes bằng cách bảo vệ acces vào phụ trợ của bạn để bắt đầu vì việc khai thác yêu cầu truy cập phụ trợ. Trên hết, tải lên hình ảnh bây giờ có xác nhận gọi lại thêm.
Raphael tại Digital Pianism

3
nhận quyền truy cập quản trị viên nghĩa là bạn có quyền truy cập vào toàn bộ giao diện phụ trợ Magento. Ai quan tâm đến việc khai thác ở giai đoạn này được tìm thấy trong một tập lệnh hình ảnh tải lên? người dùng độc hại đó có thể xóa tất cả các sản phẩm của bạn, có thể làm những việc không thể tưởng tượng được. cuộc thảo luận nên bắt đầu bằng "nếu người dùng này có quyền quản trị viên vì quản trị viên thực sự ngu ngốc không bảo vệ phần phụ trợ theo nhiều cách"
ADDISON74


2
Peter O'Callaghan viết: "Do đó, nếu ai đó quản lý để có quyền truy cập vào bảng quản trị của bạn, họ có thể thực hiện một bao gồm độc hại để đạt được RCE.". Đây dường như là kết luận chung trong cuộc thảo luận này. Như đã nói trước đây, nếu người dùng độc hại có quyền truy cập vào bảng quản trị của bạn, có những điều khác đáng lo ngại hơn RCE. Nếu bất cứ ai có một cái gì đó để thêm vào các cuộc thảo luận, xin vui lòng làm. Nhưng dù sao, tôi nghĩ rằng bạn đã làm mọi thứ rõ ràng hơn rất nhiều @RaphaelatDigitalPianism và tôi sẽ chấp nhận câu trả lời này.
ehannes

6

Vấn đề không phải là liên kết tượng trưng, ​​vấn đề là các đường dẫn đạt đến cấp độ như ../../../../../media/tmp/hahaha.png. Nếu tôi sai về điều này xin hãy soi sáng cho tôi. "Khắc phục" có tiêu đề "Cho phép liên kết tượng trưng" và cho phép điều này vô hiệu hóa kiểm tra được thực hiện bằng cách sử dụng realpath(). Theo tôi, một bản sửa lỗi an toàn, hiệu quả hơn và vẫn tương thích với các liên kết tượng trưng là sử dụng strpos($path, '..')và / hoặc để kiểm tra xem các realpath()thư mục rủi ro nhất định như mediavar. Nếu được thực hiện như thế này, nó sẽ không cần phải được cấu hình, nó chỉ có thể được kích hoạt và vẫn không phá vỡ hàng ngàn cửa hàng.

Bất kể, người dùng máy chủ web của bạn không nên có quyền truy cập để ghi tệp trong các thư mục mã nguồn (như Magento Connect không ...) vì vậy đó là một cách khác để ngăn chặn mã độc được ghi ở đâu đó và được thực thi dưới dạng mẫu khối.

Vì vậy, cuộc tấn công vào các liên kết tượng trưng này chỉ bị đánh giá sai và một bản sửa lỗi tốt hơn tồn tại. Trong thực tế, tôi đã cung cấp một hơn một năm trước và thậm chí còn có một liên kết đến nó trong modman github README.


0

Nếu trong phần bổ sung của tệp soạn thảo của bạn, bạn đặt magento-deploystrargety để sao chép các tệp của bạn sẽ được sao chép từ thư mục nhà cung cấp thay vì Symlinks.

    "extra":{
        "magento-root-dir":"./",
        "magento-deploystrategy":"copy",
        "magento-force": true
    }

Sau đó, bạn có thể sửa đổi core_config_data của mình để đặt giá trị của dev / template / allow_symlink thành 0

Tài nguyên thông tin


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.