Bản phát hành WordPress 5.2 có hỗ trợ kiểm tra các bản cập nhật chữ ký số

giới thiệu phát hành hệ thống quản lý nội dung web WordPress 5.2. Việc phát hành đáng chú ý vì nó đã hoàn thành sử thi sáu năm về việc thực hiện cơ hội kiểm tra các bản cập nhật và bổ sung bằng chữ ký số.

Cho đến nay, khi cài đặt các bản cập nhật trong WordPress, yếu tố bảo mật chính là sự tin cậy vào cơ sở hạ tầng và máy chủ WordPress (sau khi tải xuống, hàm băm đã được kiểm tra mà không xác minh nguồn). Nếu máy chủ của dự án bị xâm phạm, những kẻ tấn công có thể giả mạo bản cập nhật và phân phối mã độc giữa các trang web dựa trên WordPress sử dụng hệ thống cài đặt cập nhật tự động. Theo mô hình phân phối ủy thác đã sử dụng trước đó, việc thay thế như vậy sẽ không được người dùng chú ý.

Có tính đến thực tế là cho của dự án w3techs, nền tảng WordPress được sử dụng trên 33.8% trang web trên mạng, sự cố sẽ có quy mô như một thảm họa. Đồng thời, nguy cơ xâm phạm cơ sở hạ tầng không phải là giả thuyết mà hoàn toàn có thật. Ví dụ, vài năm trước, một trong những nhà nghiên cứu bảo mật chứng minh một lỗ hổng cho phép kẻ tấn công thực thi mã của mình ở phía máy chủ của api.wordpress.org.

Trong trường hợp chữ ký số, việc giành quyền kiểm soát máy chủ phân phối cập nhật sẽ không dẫn đến sự xâm phạm hệ thống người dùng, vì để thực hiện một cuộc tấn công, bạn sẽ cần phải có thêm một khóa riêng được lưu trữ riêng để ký các bản cập nhật.

Việc triển khai kiểm tra nguồn cập nhật bằng chữ ký số bị cản trở bởi thực tế là việc hỗ trợ các thuật toán mã hóa cần thiết đã xuất hiện trong gói PHP tiêu chuẩn tương đối gần đây. Các thuật toán mật mã cần thiết xuất hiện nhờ tích hợp thư viện libsodium vào đội chính PHP 7.2. Nhưng là phiên bản PHP được hỗ trợ tối thiểu trong WordPress đã nêu phát hành 5.2.4 (từ WordPress 5.2 - 5.6.20). Việc kích hoạt hỗ trợ chữ ký số sẽ dẫn đến sự gia tăng đáng kể các yêu cầu đối với phiên bản PHP được hỗ trợ tối thiểu hoặc bổ sung một phần phụ thuộc bên ngoài, điều mà các nhà phát triển không thể làm được do sự phổ biến của các phiên bản PHP trong hệ thống lưu trữ.

Giải pháp là phát triển và việc đưa vào phiên bản nhỏ gọn của Libsodium trong WordPress 5.2 - Natri tương thích, trong đó một bộ thuật toán tối thiểu để xác minh chữ ký số được triển khai trong PHP. Việc triển khai còn nhiều hạn chế về mặt hiệu suất, nhưng giải quyết hoàn toàn vấn đề tương thích và cũng cho phép các nhà phát triển plugin bắt đầu triển khai các thuật toán mã hóa hiện đại.

Một thuật toán được sử dụng để tạo chữ ký số Ed25519, được phát triển với sự tham gia của Daniel J. Bernstein. Chữ ký số được tạo cho giá trị băm SHA384 được tính từ nội dung của kho lưu trữ cập nhật. Ed25519 có mức độ bảo mật cao hơn ECDSA và DSA, đồng thời thể hiện tốc độ xác minh và tạo chữ ký rất cao. Khả năng chống hack của Ed25519 là khoảng 2^128 (trung bình một cuộc tấn công vào Ed25519 sẽ cần thao tác 2^140 bit), tương ứng với khả năng chống của các thuật toán như NIST P-256 và RSA với kích thước khóa 3000 bit hoặc mật mã khối 128-bit. Ed25519 cũng không dễ gặp phải các vấn đề về xung đột băm và không dễ bị tấn công theo thời gian trong bộ đệm hoặc tấn công kênh bên.

Trong bản phát hành WordPress 5.2, xác minh chữ ký số hiện chỉ bao gồm các bản cập nhật nền tảng chính và không chặn bản cập nhật theo mặc định mà chỉ thông báo cho người dùng về sự cố. Người ta đã quyết định không kích hoạt tính năng chặn mặc định ngay lập tức do cần phải kiểm tra toàn bộ và bỏ qua vấn đề có thể xảy ra. Trong tương lai, người ta cũng có kế hoạch bổ sung xác minh chữ ký số để xác minh nguồn cài đặt các chủ đề và plugin (các nhà sản xuất sẽ có thể ký các bản phát hành bằng khóa của họ).

Ngoài việc hỗ trợ chữ ký số trong WordPress 5.2, có thể lưu ý những thay đổi sau:

  • Hai trang mới đã được thêm vào phần “Sức khỏe trang web” để gỡ lỗi các sự cố cấu hình phổ biến và một biểu mẫu cũng đã được cung cấp để qua đó các nhà phát triển có thể để lại thông tin gỡ lỗi cho quản trị viên trang web;
  • Đã thêm triển khai “màn hình trắng chết chóc”, hiển thị trong trường hợp có sự cố nghiêm trọng và giúp quản trị viên khắc phục sự cố một cách độc lập liên quan đến plugin hoặc chủ đề bằng cách chuyển sang chế độ khôi phục sự cố đặc biệt;
  • Một hệ thống kiểm tra tính tương thích với các plugin đã được triển khai, hệ thống này tự động kiểm tra khả năng sử dụng plugin trong cấu hình hiện tại, có tính đến phiên bản PHP được sử dụng. Nếu một plugin yêu cầu phiên bản PHP mới hơn để hoạt động, hệ thống sẽ tự động chặn việc đưa plugin này vào;
  • Đã thêm hỗ trợ để kích hoạt các mô-đun có mã JavaScript bằng cách sử dụng gói web и Babel;
  • Đã thêm mẫu Privacy-policy.php mới cho phép bạn tùy chỉnh nội dung của trang chính sách bảo mật;
  • Đối với các chủ đề, trình xử lý hook wp_body_open đã được thêm vào, cho phép bạn chèn mã ngay sau thẻ body;
  • Yêu cầu đối với phiên bản tối thiểu của PHP đã được nâng lên 5.6.20; các plugin và chủ đề hiện có khả năng sử dụng không gian tên và các hàm ẩn danh;
  • Đã thêm 13 biểu tượng mới.

Có thể đề cập thêm nhận biết lỗ hổng nghiêm trọng trong plugin WordPress Trò chuyện trực tiếp WP (CVE-2019-11185). Lỗ hổng cho phép thực thi mã PHP tùy ý trên máy chủ. Plugin này được sử dụng trên hơn 27 nghìn trang web để tổ chức trò chuyện tương tác với khách truy cập, bao gồm cả trên các trang web của các công ty như IKEA, Adobe, Huawei, PayPal, Tele2 và McDonald's (Trò chuyện trực tiếp thường được sử dụng để triển khai cửa sổ bật lên gây khó chịu trò chuyện trên trang web của công ty với ưu đãi trò chuyện với nhân viên).

Vấn đề thể hiện ở mã tải tệp lên máy chủ và cho phép bạn bỏ qua việc kiểm tra các loại tệp hợp lệ và tải tập lệnh PHP lên máy chủ, sau đó thực thi nó trực tiếp qua web. Điều thú vị là năm ngoái, một lỗ hổng tương tự đã được xác định trong Trò chuyện trực tiếp (CVE-2018-12426), cho phép tải mã PHP dưới vỏ bọc hình ảnh, chỉ định loại nội dung khác trong trường Loại nội dung. Là một phần của bản sửa lỗi, các kiểm tra bổ sung đã được thêm vào danh sách trắng và loại nội dung MIME. Hóa ra, những bước kiểm tra này được triển khai không chính xác và có thể dễ dàng bị bỏ qua.

Đặc biệt, việc tải lên trực tiếp các tệp có phần mở rộng “.php” bị cấm, nhưng phần mở rộng “.phtml”, được liên kết với trình thông dịch PHP trên nhiều máy chủ, không được thêm vào danh sách đen. Danh sách trắng chỉ cho phép tải lên hình ảnh nhưng bạn có thể bỏ qua nó bằng cách chỉ định một phần mở rộng kép, ví dụ: “.gif.phtml”. Để bỏ qua việc kiểm tra loại MIME ở đầu tệp, trước khi mở thẻ bằng mã PHP, việc chỉ định dòng “GIF89a” là đủ.

Nguồn: opennet.ru

Thêm một lời nhận xét