3.0.1
Bản phát hành kiểm toán sau bản phát hành sản phẩm đầu tiên. Hãy cập nhật — 3.0.0 phát hành hai phiên bản mà không thực thi chúng.
Các phiên bản, thực sự được thực thi
Mọi tính năng Enterprise đều chạy trên một bản cài Community. Cả bốn mươi sáu tính năng. Không hề có kiểm tra phiên bản nào trên đường dẫn yêu cầu — không phải lúc đăng ký, không phải trong danh sách tính năng theo từng tài khoản, không phải trong middleware — và trình cài đặt ghi mọi mô-đun vào danh sách được bật, nên một bản tải Community lên với webmail, tài khoản email, FTP, PostgreSQL, container, terminal web và tường lửa.
Việc phân chia giờ đến từ một danh sách, đối chiếu với danh mục mà website công bố, và áp dụng ở ba nơi: một mô-đun Enterprise không bao giờ được đăng ký trên Community, nên nó là 404 trước bất kỳ trình xử lý nào; danh sách tính năng theo từng tài khoản được lọc, đó là thứ thanh bên, bảng điều khiển và mọi mẫu đọc; và năm trang Enterprise nằm bên trong các mô-đun Community bị từ chối trong middleware.
Community không nhập được khoá giấy phép. Trang giấy phép duy nhất trong sản phẩm nằm trên cổng 2087 — cổng mà Community đóng. Phiên bản duy nhất cần mua để thoát ra lại được mong đợi ssh vào và chạy một lệnh. Giờ có một trang trên panel hosting, và nó biến mất ngay khi có khoá.
Nó vẫn sẽ không biến mất: khoá được đọc một lần lúc khởi động và không bao giờ nữa, bất chấp một chú thích nói khác, nên một khoá nhập ở bất kỳ đâu không đổi gì cho đến khi khởi động lại.
Community không gỡ được một phiên bản PHP. Tuyến có đó và không gì trong sản phẩm từng gọi nó. Nút cài được vẽ trên cả hai phiên bản và bị từ chối trên một phiên bản — một nút luôn là một lỗi. Cả hai giờ là điều khiển của Community, và trên Enterprise chúng thuộc về quản trị viên.
Kích hoạt Enterprise cài sai cơ sở dữ liệu. Nó yêu cầu phần mở rộng cài MariaDB, mà Community đã có, và không phải phần cài PostgreSQL — thứ mà năm trang PostgreSQL của Enterprise đứng trước.
Bảo mật
-
Mật khẩu của một tài khoản mới tới root SQL và một shell root không được thoát. Ba đường, một đầu vào, và phép kiểm tra duy nhất cho một mật khẩu đến qua API là nó không rỗng.
IDENTIFIED BY '<password>'được nội suy thô vào mộtmysql -echạy bằng root, nên một dấu nháy trong mật khẩu chạy phần còn lại bằng siêu người dùng cơ sở dữ liệu. Vai trò PostgreSQL được tạo quasu - postgres -c, vốn trao đối số của nó cho một shell trước khi psql thấy, nên$(...)trong mật khẩu được thực thi. Và thư mục gốc tài liệu của API quản trị tới một UPDATE mà không thoát gì và với một kiểm tra chỉ từ chối... -
"Login to Panel" của panel thanh toán là một phát lại thông tin xác thực. Nó tự gửi tên người dùng và mật khẩu của một quản trị viên vào form đăng nhập, mà panel từ chối — đúng, và việc từ chối là lỗi được báo cáo. Làm cho nó chạy bằng cách miễn trừ form đăng nhập sẽ trao cho mọi trang web một nguyên thủy login-CSRF: một mật khẩu chứng minh ai đang đăng nhập, không bao giờ chứng minh chủ nhân của trình duyệt này đã yêu cầu. Việc chuyển giao giờ mang một vé dùng một lần — được tạo từ máy chủ tới máy chủ dựa trên token mà mô-đun thanh toán đã giữ, có hiệu lực một phút, dùng được một lần, gắn với tài khoản đó.
-
Origin: nullđã được chấp nhận. Nó rơi xuống kiểm tra Referer, và một yêu cầu không có cả hai qua hoàn toàn kiểm tra nguồn gốc. Bất kỳ trang nào cũng có thể tạo ra điều đó bằng một iframe có sandbox. -
Một token GitHub còn sống được phục vụ cho mọi người đọc tài liệu. Được mã hoá cứng trong một thành phần biểu ngữ được đăng ký trong các thành phần MDX và do đó được phát hành trong bundle.
Đã sửa
-
Một bản cập nhật từ 2.1.30 lên 3.0.0 không bao giờ tới. Trình cập nhật đi qua toàn bộ không gian số giữa hai phiên bản — 998.970 — và mỗi số không có tập lệnh trên đĩa đều rơi vào một lần lấy từ mirror với một thời gian chờ ba mươi giây. Nó không thất bại; nó ngồi trong dải 2.x suốt nhiều ngày, và nhật ký dừng ở tập lệnh cuối cùng có tồn tại.
-
Một máy chủ ở bản vá một chữ số đã ngừng cập nhật. Các phiên bản được so sánh như chuỗi, nên
2.1.9mới hơn2.1.30. -
Một dấu ngoặc lạc trong một tệp vùng đã giấu mọi bản ghi bên dưới nó. Một
(bên trong một giá trị TXT có trích dẫn được tính là khởi đầu của một bản ghi nhiều dòng, và việc gộp chạy tới cuối tệp. Một vùng có năm mươi tên chỉ hiển thị một, và các bản ghi biến mất vẫn đang được phục vụ. Trên một vùng lớn nó còn tốn hàng phút CPU. -
Một
domains-addbị gián đoạn để lại tên miền làm dở — hàng dữ liệu và thư mục gốc tài liệu mà không có website nào đằng sau, và panel rồi từ chối tên và không cung cấp trang nào để gỡ nó. Một yêu cầu bị huỷ là một thất bại và giờ được hoàn lại. -
Trình cài đặt không bao giờ hiển thị mật khẩu của panel hosting. Nó in địa chỉ của một panel phía trên thông tin xác thực của panel kia, nên một bản cài Community mới kết thúc với việc không ai đăng nhập được vào panel là toàn bộ sản phẩm trên phiên bản đó.
-
Danh sách tên miền bị cấm chưa bao giờ được đọc. Phép kiểm tra tìm một tệp tương đối với thư mục hiện tại trong khi nêu đường dẫn thật trong một biến mà nó không dùng.
-
Ba mươi sáu điều kiện trả về thất bại khi chúng thành công. Một pipeline kết thúc bằng
grep -qbáo 141 dướipipefailkhi grep thoát và bên ghi bị giết — nên một lần khớp được đọc như một thất bại, trên một máy chủ bận và không phải trên một máy chủ yên. Một trong số đó đã giấu một lỗi thứ hai: chưa có bí danh nào từng được cấp quyền gửi dưới danh nghĩa chính nó, đó là trường hợpsales@dùng chung mà map người gửi được viết cho.
Tài liệu
Bốn mươi ba trang có tuyến mà không có tài liệu. Các phiên bản và giới hạn của chúng
ở nơi người đọc tìm. Tham chiếu CLI được tạo lại từ các tập lệnh thay vì
một bản chụp liệt kê mười sáu lệnh không còn tồn tại.
update.md được viết lại quanh cách cập nhật thực sự hoạt động. Ba mươi mấy liên kết hỏng.
Ba điều đã được ghi tài liệu và sai: hướng dẫn nâng cấp đưa người ta tới một trang trên cổng mà Community đóng, bài viết hết hạn nói một giấy phép hết hạn giữ mọi tính năng trong khi nó lùi hẳn về Community, và bảng tính năng liệt kê 73 trong số 140 tính năng.
Ghi chú
Không có gì để di chuyển. Tập lệnh cập nhật kiểm tra lại những gì của 3.0.0 đã làm và thêm một đi ều: trên một máy chủ không có khoá giấy phép nó nói rõ ràng rằng giờ nó là Community và điều đó nghĩa là gì.
Phần lớn điều này được tìm ra bằng cách dùng sản phẩm, không phải đọc nó. Gần như mọi lỗi ở đây có một chú thích bên cạnh mô tả mã được cho là làm gì — "on loopback only", "left stopped", "read on each call rather than cached at startup". Không điều nào đúng, và không điều nào được tìm ra bằng cách đọc chúng.