Nút tải xuống của một cổng VPN trả về đúng một tệp, và tệp đó có thể là một trong hai thứ rất khác nhau: trình cài đặt sẵn của nhà cung cấp với một hồ sơ cấu hình đi kèm, hoặc một bản dựng do chính tổ chức biên dịch. Trang trông giống nhau trong cả hai trường hợp, nên nút không thể cho bạn biết bạn đang có loại nào. Đằng sau nó là ba câu hỏi — ai đã phát hành tệp thực thi, bản cài đặt ghi cấu hình gì, và ai sửa nó khi bản phát hành ứng dụng khách tiếp theo đến. Bạn trả lời câu đầu từ siêu dữ liệu của hiện vật, câu thứ hai từ nội dung gói, và câu thứ ba chỉ từ nhóm sở hữu việc triển khai.

Ổ khóa trên trình duyệt che việc truyền, không che hiện vật.

Điểm cuối tải xuống thực sự trả về gì

Hầu hết các cổng chuyển yêu cầu tải xuống cho một trình xử lý nhỏ, trình này hoặc truyền tệp đã lưu hoặc lắp ghép tệp ngay tại chỗ, rồi đặt tên tệp và loại nội dung trước khi phản hồi rời đi. Thứ đến là một vật chứa: MSI, PKG, DEB hoặc RPM, hay một lớp bọc tự giải nén quanh một trong số đó. Bên trong là tệp nhị phân của ứng dụng khách, và không có gì trong tên tệp nói một cách đáng tin cậy rằng tệp nhị phân đó đến từ nhà cung cấp hay từ một quy trình dựng nội bộ. Một tệp tên là client-setup.exe ghi lại một quyết định đặt tên, không phải một sự thật về nguồn gốc.

So sánh các byte đã tải với tổng kiểm tra do nhà cung cấp công bố. Sự không khớp không chứng minh ác ý; nó chứng minh tệp không phải bản dựng của nhà cung cấp, và đó là điểm khác biệt đáng để hành động.

Hồ sơ vào ứng dụng khách ở đâu

Các thiết lập được điền sẵn thường đi kèm dưới dạng một tệp riêng mà trình cài đặt sao chép vào một đường dẫn cho mỗi người dùng hoặc mỗi máy: hồ sơ JSON hoặc XML trên Windows, hồ sơ cấu hình trên macOS, một đoạn dưới /etc trên Linux. Các giá trị trong tệp đó — tên máy chủ của cổng, neo tin cậy, đôi khi là tài liệu đăng ký — trở thành mặc định của ứng dụng khách ở lần khởi chạy đầu tiên. Đó là lý do một lần tải xuống có thể mang cả bí mật lẫn mã.

Hãy hỏi đường nâng cấp làm gì với hồ sơ. Tùy cách đóng gói, nó có thể sống sót qua bản cập nhật ứng dụng khách, bị bản cập nhật ghi đè, hoặc không vượt qua kiểm tra lược đồ ở phiên bản mới.

Chuỗi chữ ký không chứng minh điều gì

Ký mã liên kết danh tính nhà phát hành với hàm băm của tệp, và trên Windows dấu thời gian Authenticode cho phép chữ ký sống lâu hơn chứng chỉ đã tạo ra nó. Kết quả hợp lệ trả lời hai câu hỏi: nhà phát hành nào đã ký các byte này, và liệu chúng có thay đổi sau đó không. Nó không liệt kê các dịch vụ của trình cài đặt, các lần ghi sổ đăng ký hay trình điều khiển đi kèm, và không quyết định liệu có nên tin nhà phát hành đó ở đây hay không. Tài liệu Authenticode của Microsoft mô tả cơ chế và nói rõ về phạm vi hẹp đó.

Xác thực của cổng trả lời câu hỏi thứ ba: phiên đã đến máy chủ dự định chưa. Ba kiểm tra khác nhau, ba kiểu thất bại khác nhau.

Xác minh hiện vật trước khi bất kỳ ai chạy nó

Đặt tệp trên một máy biệt lập và đọc siêu dữ liệu của nó trước khi thực thi bất cứ điều gì. Những lệnh này trả lời câu hỏi về nhà phát hành trên ba nền tảng chính.

# Windows PowerShell
Get-AuthenticodeSignature .\client-setup.exe | Format-List Status, SignerCertificate, TimeStamperCertificate

# macOS
pkgutil --check-signature ./Client.pkg
codesign -dv --verbose=4 /Applications/Client.app

# Debian/Ubuntu
dpkg-deb -I ./client_amd64.deb
sha256sum ./client_amd64.deb

Đọc chủ thể của người ký thay vì chỉ đọc từ trạng thái. Một tổ chức chứng thực nội bộ ký bản dựng nội bộ là điều dự kiến; cùng chứng chỉ đó trên một gói tự nhận là bản phát hành của nhà cung cấp thì không.

Với gói chỉ có hồ sơ, hãy mở kho lưu trữ và coi mọi tên máy chủ và khóa được nhúng là dữ liệu phải được hạch toán. Nếu hồ sơ chứa thứ gì có thể dùng lại, việc phân phối qua cổng biến nó thành một bí mật chia sẻ kèm lịch triển khai.

Xác định quyền sở hữu trước khi triển khai

Không có lệnh nào đằng sau câu hỏi cuối cùng. Tìm hiểu ai cập nhật hiện vật khi nhà cung cấp gửi ứng dụng khách mới, ai giữ khóa ký cho một bản dựng nội bộ, và hồ sơ được luân chuyển thế nào khi một điểm cuối di chuyển. Viết những tên đó bên cạnh liên kết tải xuống.

Nếu không ai sở hữu câu trả lời đó, việc tải xuống là một kênh phân phối không có hợp đồng bảo trì, và đó là phát hiện đáng để báo cáo.

Bài viết liên quan