Bảo mật
Tổng quan bảo mật và chính sách công bố lỗ hổng
Tóm tắt dễ hiểu
- Vault của bạn được mã hóa AES-256-GCM trên thiết bị; máy chủ chỉ giữ bản mã và không có khóa giải mã.
- Mật khẩu chính không bao giờ rời thiết bị; máy chủ chỉ lưu bản băm Argon2id của một khóa xác thực dẫn xuất.
- Mọi yêu cầu API được mã hóa thêm một lớp (X25519 + AES-256-GCM) bên trên TLS, có chống phát lại.
- Chia sẻ terminal và ứng dụng web chỉ chuyển tiếp dữ liệu đã mã hóa; máy chủ không thấy nội dung phiên.
- Phát hiện lỗ hổng? Gửi tới [EMAIL BÁO CÁO LỖ HỔNG]. Chúng tôi xác nhận trong 3 ngày làm việc và không khởi kiện nghiên cứu thiện chí.
1.Mã hóa đầu-cuối
- Dẫn xuất khóa trên thiết bị: từ mật khẩu chính, ứng dụng dẫn xuất khóa bằng PBKDF2-SHA256 với 600.000 vòng lặp. Mật khẩu chính không bao giờ được gửi đi.
- Khóa xác thực tách biệt: chỉ một "khóa xác thực" được dẫn xuất riêng được gửi tới máy chủ khi đăng nhập. Máy chủ lưu bản băm Argon2id của khóa này, nên ngay cả bản băm bị lộ cũng không giúp giải mã vault.
- Mã hóa vault: mọi mục vault — máy chủ, mật khẩu, khóa SSH riêng tư, snippet, cài đặt, quyết định known hosts, token tích hợp — được mã hóa bằng AES-256-GCM trước khi rời thiết bị. Khóa vault được lưu trên máy chủ dưới dạng khối đã mã hóa.
- Không có cửa hậu: khi đăng nhập nhanh tắt, chúng tôi không thể đọc, đặt lại hay khôi phục dữ liệu vault. Nếu mất cả mật khẩu chính và khóa khôi phục, dữ liệu không thể khôi phục.
- Đăng nhập nhanh (Google / Apple / Telegram / website): khi bật — mặc định — máy chủ giữ thêm một bản khóa vault của bạn, được mã hóa bằng một khóa riêng của máy chủ lưu ngoài cơ sở dữ liệu, để mở vault trên thiết bị mới mà không cần mật khẩu chính. Khi đó máy chủ có khả năng giải mã vault của bạn. Tắt trong ứng dụng (Cài đặt → Tài khoản → Đăng nhập nhanh) thì bản khóa này bị xóa ngay và chỉ mật khẩu chính mở được vault.
- Dữ liệu cục bộ: nội dung terminal, lịch sử lệnh, tệp SFTP và nhật ký kết nối không bao giờ được gửi lên máy chủ.
2.Bảo vệ đường truyền
- Mọi kết nối tới máy chủ dùng TLS.
- Bên trên TLS, nội dung yêu cầu và phản hồi API còn được mã hóa phong bì theo từng yêu cầu ở tầng ứng dụng: trao đổi khóa X25519 với khóa công khai của máy chủ và mã hóa AES-256-GCM. Nhờ đó dữ liệu vẫn được bảo vệ ngay cả khi có thiết bị trung gian chấm dứt TLS (proxy doanh nghiệp, CDN).
- Mỗi phong bì mang dấu thời gian và chỉ được chấp nhận một lần trong một khoảng thời gian ngắn, để chống phát lại (replay).
3.Tài khoản và xác thực
- Xác thực hai lớp (TOTP) với mã khôi phục; máy chủ chỉ lưu bản băm của mã khôi phục.
- Quản lý thiết bị: xem mọi thiết bị đã đăng nhập (tên, nền tảng, IP, lần hoạt động cuối) và thu hồi ngay lập tức. Refresh token chỉ được lưu dưới dạng băm.
- Giới hạn tần suất cho đăng nhập, đặt lại mật khẩu, lời mời và các điểm cuối nhạy cảm để chống dò mật khẩu và lạm dụng.
- Mã đặt lại mật khẩu dùng một lần, lưu dạng băm và hết hạn nhanh.
- Nhật ký bảo mật ghi lại đăng nhập, đăng nhập thất bại, thay đổi 2FA, thu hồi thiết bị và hoạt động team, kèm IP và thời điểm, lưu 12 tháng.
- Hỗ trợ khóa bảo mật FIDO2 cho xác thực SSH từ keychain.
4.Team, chia sẻ terminal và chuyển tiếp
- Team vault: mỗi thành viên có cặp khóa riêng; khóa team được niêm phong (mã hóa) cho khóa công khai của từng thành viên. Máy chủ chỉ lưu bản mã của mục team và khóa đã niêm phong.
- Multiplayer (chia sẻ terminal): khung dữ liệu được mã hóa đầu-cuối; khóa giải mã nằm trong phần fragment (#) của liên kết và không bao giờ gửi tới máy chủ. Máy chủ chỉ chuyển tiếp trong bộ nhớ, phòng hết hạn sau 12 giờ. Hãy chỉ gửi liên kết cho người bạn tin cậy — ai có liên kết đều xem được phiên.
- Ứng dụng web: SSH chạy ngay trong trình duyệt (WebAssembly). Máy chủ chỉ chuyển tiếp luồng byte SSH đã mã hóa tới máy đích; nó biết host:port, thời gian, số byte và IP, nhưng không thấy nội dung hay thông tin đăng nhập. Việc chuyển tiếp yêu cầu đăng nhập để chống lạm dụng. Vault của ứng dụng web lưu trong IndexedDB, mã hóa bằng mật khẩu chính.
- SSH ID: chỉ khóa công khai bạn chọn mới được công bố; khóa riêng tư không bao giờ rời vault.
5.Hạ tầng và vận hành
- Máy chủ chạy trong container với đặc quyền tối thiểu: ảnh tối giản và tiến trình chạy dưới một tài khoản hệ thống riêng, không phải root.
- Hạ tầng do [NHÀ CUNG CẤP HẠ TẦNG] cung cấp, dữ liệu đặt tại [QUỐC GIA / KHU VỰC ĐẶT MÁY CHỦ].
- Quyền truy cập quản trị hạ tầng chỉ cấp cho nhân sự cần thiết.
- Thư viện phụ thuộc được cập nhật thường xuyên để vá lỗ hổng đã biết.
6.Ứng phó sự cố và thông báo vi phạm
Khi phát hiện sự cố, chúng tôi khoanh vùng, khắc phục, điều tra nguyên nhân và lưu hồ sơ. Nếu sự cố ảnh hưởng tới dữ liệu cá nhân, chúng tôi thông báo cho Cục An ninh mạng và phòng, chống tội phạm sử dụng công nghệ cao (A05) – Bộ Công an trong vòng 72 giờ khi pháp luật yêu cầu, thông báo cho cơ quan giám sát khác theo luật áp dụng, và thông báo cho người dùng bị ảnh hưởng không chậm trễ bất hợp lý, kèm hướng dẫn cụ thể. Xem thêm Chính sách quyền riêng tư.
7.Báo cáo lỗ hổng
Chúng tôi hoan nghênh báo cáo từ cộng đồng nghiên cứu bảo mật. Gửi email tới [EMAIL BÁO CÁO LỖ HỔNG] (tiếng Việt hoặc tiếng Anh), bao gồm:
- mô tả lỗ hổng và thành phần bị ảnh hưởng (website, API, ứng dụng nào, phiên bản, nền tảng);
- các bước tái hiện chi tiết, bằng chứng khái niệm (PoC), ảnh chụp hoặc video nếu có;
- đánh giá tác động theo bạn (ví dụ điểm CVSS);
- thông tin liên hệ và tên bạn muốn được ghi nhận (nếu có).
Nếu cần gửi thông tin nhạy cảm, hãy đề nghị trong email đầu tiên để chúng tôi thống nhất kênh mã hóa. Vui lòng không công bố lỗ hổng trước khi chúng tôi phát hành bản sửa hoặc trước khi hết thời hạn công bố phối hợp ở mục 10.
8.Phạm vi
Trong phạm vi
- Website https://vnterm.com và các trang tài khoản, trang xem chia sẻ;
- API đồng bộ, máy chủ chuyển tiếp ứng dụng web và máy chủ Multiplayer;
- Ứng dụng VNTerm cho macOS, Windows, Linux, Android, iOS và ứng dụng web;
- Thiết kế mật mã: dẫn xuất khóa, mã hóa vault, mã hóa phong bì, niêm phong khóa team.
Ngoài phạm vi
- Tấn công từ chối dịch vụ (DoS/DDoS) hoặc kiểm thử tải;
- Tấn công phi kỹ thuật (social engineering, lừa đảo) nhằm vào nhân viên hoặc người dùng;
- Tấn công vật lý vào văn phòng, trung tâm dữ liệu hoặc thiết bị;
- Hệ thống của bên thứ ba (nhà cung cấp hạ tầng, email, CDN, DigitalOcean, máy chủ SSH của người dùng) — hãy báo trực tiếp cho họ;
- Báo cáo chỉ từ công cụ quét tự động mà không chứng minh được tác động; thiếu header bảo mật không gây rủi ro cụ thể; tự tấn công XSS (self-XSS); clickjacking trên trang không có thao tác nhạy cảm;
- Lỗ hổng chỉ khai thác được trên thiết bị đã bị chiếm quyền root/admin hoặc trình duyệt, hệ điều hành đã hết hỗ trợ.
9.Quy tắc nghiên cứu và bảo vệ pháp lý (safe harbour)
Khi nghiên cứu, vui lòng:
- chỉ sử dụng tài khoản của chính bạn hoặc tài khoản thử nghiệm bạn tạo; không truy cập, sửa đổi hay xóa dữ liệu của người khác;
- dừng lại và báo cho chúng tôi ngay khi tiếp cận được dữ liệu của người dùng khác, và không giữ lại dữ liệu đó;
- không làm suy giảm dịch vụ, không gửi spam lời mời, không lạm dụng máy chủ chuyển tiếp để tấn công hệ thống khác;
- giữ bí mật thông tin lỗ hổng cho tới khi được công bố phối hợp.
Nếu bạn tuân thủ chính sách này một cách thiện chí, chúng tôi coi hoạt động nghiên cứu của bạn là được phép, sẽ không khởi kiện hay yêu cầu cơ quan chức năng xử lý bạn vì hoạt động đó, và sẽ hỗ trợ giải thích nếu bên thứ ba khiếu nại. Chính sách này không thể cho phép bạn kiểm thử hệ thống của bên thứ ba và không ràng buộc cơ quan nhà nước; bạn vẫn phải tuân thủ pháp luật, bao gồm Luật An ninh mạng 2018.
Hiện chúng tôi chưa có chương trình thưởng tiền (bug bounty). Với sự đồng ý của bạn, chúng tôi sẽ ghi nhận đóng góp trong ghi chú phát hành.
10.Cam kết phản hồi
| Giai đoạn | Mục tiêu |
|---|---|
| Xác nhận đã nhận | Trong vòng 3 ngày làm việc |
| Đánh giá ban đầu và mức độ nghiêm trọng | Trong vòng 10 ngày làm việc |
| Khắc phục | Nghiêm trọng: ưu tiên cao nhất, mục tiêu 30 ngày; cao: 60 ngày; trung bình/thấp: theo lịch phát hành |
| Cập nhật tiến độ | Ít nhất mỗi 2 tuần cho tới khi đóng báo cáo |
| Công bố phối hợp | Sau khi bản sửa được phát hành, hoặc 90 ngày kể từ khi báo cáo (có thể điều chỉnh theo thỏa thuận) |
11.Lời khuyên cho người dùng
- Dùng mật khẩu chính dài, duy nhất; cất khóa khôi phục ở nơi an toàn ngoài thiết bị.
- Bật 2FA và định kỳ kiểm tra danh sách thiết bị; thu hồi thiết bị lạ hoặc bị mất.
- Ưu tiên khóa SSH (hoặc khóa FIDO2) thay vì mật khẩu; xác minh vân tay khóa máy chủ khi kết nối lần đầu.
- Chỉ gửi liên kết chia sẻ terminal cho người tin cậy, và kết thúc phiên chia sẻ khi xong.
- Xoay vòng khóa và mật khẩu khi một thành viên rời team.
- VNTerm sẽ không bao giờ hỏi mật khẩu chính hay khóa khôi phục của bạn.
12.Liên hệ
Đơn vị vận hành
- Tên
- VNTerm
- Báo cáo bảo mật
- [EMAIL BÁO CÁO LỖ HỔNG]
Văn bản tiếng Việt là bản có giá trị ưu tiên áp dụng đối với người dùng tại Việt Nam. Bản tiếng Anh được cung cấp cho người dùng quốc tế và được ưu tiên áp dụng đối với họ, trừ khi pháp luật nơi họ cư trú quy định khác.