Bản vá mới supee-6788 cách áp dụng bản vá


29

Sau nhiều tuần chờ đợi bản vá ngày hôm nay (27.10.2015), nó đã được phát hành: SUPEE-6788

Rất nhiều thứ đã được vá và cũng được khuyến khích để xem xét các mô-đun đã cài đặt cho các lỗ hổng có thể xảy ra.

Tôi mở bài đăng này để có được một số hiểu biết về cách áp dụng các bản vá. Các bước để áp dụng các bản vá là gì? Theo hiểu biết của tôi đây là các bước:

  1. Sửa các mô-đun với chức năng quản trị viên không thuộc URL quản trị viên
  2. Sửa các mô-đun sử dụng câu lệnh SQL làm tên trường hoặc trường thoát
  3. Khối danh sách trắng hoặc chỉ thị sử dụng các biến như {{config path=”web/unsecure/base_url”}}{{bloc type=rss/order_new}}
  4. Giải quyết khai thác tiềm năng với Loại tệp tùy chọn tùy chỉnh (không biết làm thế nào để làm điều này)
  5. Áp dụng các bản vá

Đây có phải là thủ tục chính xác?


1
Các phiên bản CE được liệt kê hiện tại 1.7.0.0 đến 1.9.2.0
Phòng thí nghiệm Fiasco

5
Các bản vá thay đổi .htaccess.samplecũng như .htaccess. Cái sau được tùy chỉnh ở hầu hết các cửa hàng, điều này sẽ khiến bản vá bị lỗi => Bạn cần tạm thời thay thế nó bằng tệp gốc từ Magento, áp dụng bản vá, khôi phục .htaccess của riêng bạn và áp dụng thay đổi bảo vệ quyền truy cập vào cron.phpthủ công (don ' Tất nhiên là sử dụng hệ thống sản xuất cho quy trình này!)
Fabian Schmengler

1
Còn những người sử dụng nginx thì sao?
lloiacono

4
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì không có câu hỏi nào. Vui lòng chuyển các cuộc thảo luận để trò chuyện
7ochem

2
Có một câu hỏi trong chính tiêu đề của bài viết, cũng trong đoạn cuối tôi cụ thể hơn. Bất kể điều này, theo tôi, loại bài đăng này rất hữu ích để tập trung vào các bình luận và thực hành tốt nhất khi áp dụng một bản vá mới được phát hành.
lloiacono

Câu trả lời:


33

Nói chung, bạn có thể áp dụng các bản vá như tất cả những người trước đó. Hãy xem tài liệu chính thức và kiểm tra bài SE này . Nhưng có, có một số điểm bổ sung bạn nên kiểm tra khi áp dụng bản vá này. Byte / Hypernode có một bài viết hay về nó.

  1. Kiểm tra xem chủ đề của bạn có một tùy chỉnh template/customer/form/register.phtmlhoặc tùy chỉnh template/persistent/customer/form/register.phtml. Nếu đây là trường hợp, hãy chắc chắn rằng nó bao gồm a form_key.
  2. Kiểm tra xem chủ đề của bạn có một tùy chỉnh layout/customer.xml. Nếu đây là trường hợp, đảm bảo áp dụng các thay đổi cần thiết từ bản vá ( customer_account_resetpasswordđã được thay đổi thành customer_account_changeforgotten).
  3. Bạn có sử dụng các biến không chuẩn trong các trang CMS, khối tĩnh hoặc mẫu email không? Sau đó hãy chắc chắn rằng bạn đưa họ vào danh sách trắng. Xem câu hỏi SE này để tìm hiểu làm thế nào để liệt kê các biến / khối danh sách trắng.
  4. Bạn có chạy cron.phpqua HTTP không? Hãy chắc chắn rằng bạn sử dụng tốt hơn cron.sh. Nếu điều này là không thể, ít nhất hãy đảm bảo rằng bạn gọi cron.php thông qua CLI PHP. Nếu vì một lý do nào đó, bạn không thể định cấu hình một cronjob thực và cần chạy nó qua HTTP, hãy xem câu hỏi SE này
  5. Đảm bảo rằng tất cả các tiện ích mở rộng của bạn sử dụng định tuyến quản trị viên "mới". Bạn có thể sử dụng plugin n98-magerun này để kiểm tra. Bạn cũng có thể sử dụng tập lệnh CLI này . Bạn cũng có thể xem câu hỏi SE liên quan này .
    1. Khi tất cả các tiện ích mở rộng của bạn sử dụng định tuyến quản trị viên phù hợp, hãy đảm bảo tắt "Bật chế độ tương thích định tuyến của quản trị viên" trong Hệ thống - Cấu hình - Quản trị viên - Bảo mật.
  6. Nếu bạn sử dụng M2ePro, hãy cập nhật lên phiên bản mới nhất vì các phiên bản cũ không hoạt động với bản vá mới.

Khi cập nhật, hãy chắc chắn rằng bạn xóa tệp dev/tests/functional/.htaccess. Nó không còn xuất hiện nữa trong Magento 1.9.2.2. Giữ nó có nghĩa là bạn vẫn dễ bị tổn thương.

Trong mọi trường hợp, hãy kiểm tra trang của bạn với MageReport sau khi cập nhật để xem mọi thứ có ổn không.

Ngoài ra còn có một bài viết blog kỹ thuật của Piotr , trong đó mô tả những thay đổi quan trọng.


Chỉ cần lưu ý một chút, tập lệnh CLI đề cập đến 'Xác minh tất cả đều ổn, sau đó tắt chế độ tương thích của bộ điều khiển quản trị viên'. Tôi nghĩ rằng họ có nghĩa ngược lại, để kích hoạt nó. Có đúng không?
Michael

1
@kaska Nếu tất cả các tiện ích mở rộng của bạn đều ổn, bạn phải tắt chế độ tương thích.
Simon

Trong môi trường sản xuất, bạn không nên loại bỏ / dev hoàn toàn?
ngủ

1
@paj về mặt lý thuyết thì có. Nhưng với phiên bản 1.9.2.2, nó được bảo vệ bằng .htaccess, vì vậy việc giữ nó là ổn. Chỉ cần chắc chắn làm theo lời khuyên .htaccess của tôi ở trên.
Simon

Cảm ơn bạn vì sự hoàn chỉnh, họ nên để bạn viết ghi chú phát hành cô đọng vào lần tới! Siêu hữu ích!
Asherrard


3

Đối với Nginx, đảm bảo bạn chặn quyền truy cập vào cron.php và thư mục dev. Chúng tôi sử dụng khối này:

location ~ ^/(app|includes|media/downloadable|pkginfo|report/config.xml|var|magmi|cron.php|dev)/? { deny all; }

regex của bạn sẽ không hoạt động, vì bạn chỉ kiểm tra thư mục ,. vì vậy "báo cáo / config.xml, cron.php" không khớp và bạn có ký hiệu thanh dọc hoặc biểu tượng ống ở cuối .. sao chép-dán? cũng không gây rối regex cùng với / app /, nếu bạn đặt sai thứ gì đó, nó sẽ bị hack.
MagenX

Xin lỗi sao chép và dán công việc, xin lỗi. Đã thêm vào? ở cuối để dấu gạch chéo là tùy chọn. Đã thử nó ngay bây giờ và nó đang hoạt động như bình thường.
Adam L.

Ngoài ra, regex này dễ bị tấn công, bạn có ^ /, đảm bảo rằng bạn không sao chép các tệp nguồn của mình vào thư mục trên cùng, như / old /, / nâng cấp / etc
MagenX

@MagenX Vì vậy, bạn đang nói rằng nếu bạn không sử dụng kiểm soát phiên bản hoặc BCP quản trị hệ thống tiêu chuẩn, thì regex này có đáng trách không?
Melvyn

1

Tôi mới áp dụng bản vá trên 1.10.1 EE của mình và điều này gây ra tác dụng phụ trên màn hình gốc vì lõi không tuân thủ APPSEC-1063:

Thí dụ:

Trong app/code/core/Mage/Customer/Model/Entity/Attribute/Collection.php

Bạn có thể tìm thấy 2 addFieldToFiltercuộc gọi không tuân thủ APPSEC-1063.

Điều này đang phá vỡ lưới của Khách hàng> Thuộc tính, do đó bạn phải vá lỗi, sử dụng thủ thuật mà họ đề xuất trong pdf "SUPEE-6788-Technical% 20Details% 20.pdf" trong phần APPSEC-1063

Thay đổi một số

    $this->addFieldToFilter($field, 0);

(trong đó trường $ chứa các câu lệnh sql phức tạp (CASE .. KHI THÌ ...)

vào

    $resultCondition = $this->_getConditionSql($field, 0);
    $this->_select->where($resultCondition);

Cả supee-6788-hộp công cụ và gaiterjones của rhoerr đều không phát hiện ra loại vấn đề này, tôi đã kiểm tra tất cả các vấn đề khác -> addFieldToFilter ($ và dường như không gây ra sự cố nào.

Các tệp lõi 1,10 bị ảnh hưởng khác: (được tìm thấy bởi hộp công cụ supe-6788 của rhoerr)

app/code/core/Mage/Bundle/Model/Mysql4/Option/Collection.php 

Có thể có nhiều hơn.

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.