Bảo mật

Báo cáo lỗ hổng bảo mật

Cập nhật 10/11/2026

Chính sách báo lỗ hổng chính thức của Henry Expense, cùng nội dung với tài liệu bảo mật của dự án. Xem thêm Quy trình bảo mật.

Henry Expense là app ghi chép thu chi cá nhân trên iPhone. Dữ liệu thu chi được lưu trên máy của người dùng. Henry Expense chỉ có một máy chủ nhỏ cho tính năng Đồng bộ trực tiếp (api.henryexpense.com); máy chủ này chỉ giữ tạm giao dịch ngân hàng mới ở dạng mã hoá trên máy chủ (không phải mã hoá đầu-cuối), tối đa 7 ngày, tới khi app nhận. Nếu bạn tìm thấy lỗ hổng bảo mật, xin báo riêng cho nhà phát triển theo trang này để lỗ hổng được sửa trước khi công bố. Cảm ơn bạn đã giúp giữ an toàn cho người dùng.

Cách báo

  • Gửi email tới [email protected], tiêu đề bắt đầu bằng [Security]. Viết bằng tiếng Việt hoặc tiếng Anh đều được.
  • Nêu rõ: lỗ hổng ở đâu (app hay trang web, màn hình hoặc đường dẫn nào), phiên bản app (tab Khác -> Cài đặt -> Phiên bản), phiên bản iOS và đời máy, các bước làm lại, điều kẻ xấu làm được nếu khai thác, và ảnh chụp hoặc video nếu có.
  • Không gửi dữ liệu tài chính thật, email ngân hàng thật, mật khẩu, API key hay mã OTP. Hãy che hoặc thay bằng giá trị giả. Hiện chưa có khoá mã hoá email; nếu bằng chứng buộc phải chứa dữ liệu nhạy cảm, hãy hỏi trước để thống nhất cách gửi.
  • Một báo cáo cho một lỗ hổng. Nhiều lỗ hổng liên quan nhau thì nêu rõ mối liên quan.

Phạm vi

Trong phạm vi:

  • App Henry Expense trên iOS, bản mới nhất trên App Store hoặc TestFlight. Ví dụ: vượt qua khoá app (PIN hoặc Face ID/Touch ID) hay thấy được nội dung tài chính khi app đang khoá; liên kết từ ngoài app mở được màn hình hay bật camera khi app đang khoá; dữ liệu rời máy mà chính sách quyền riêng tư không nêu, kể cả Trợ lý AI nhận dữ liệu bạn đã tắt chia sẻ; nội dung trang web hay email lừa được AI hoặc app ghi sai dữ liệu; token Gmail, API key AI, mã PIN hay khoá mã hoá dữ liệu bị lộ ra ngoài Keychain (vào nhật ký, thông báo lỗi, tệp sao lưu, tệp xuất); biên nhận, mã giao dịch hay bằng chứng mua của App Store bị ghi vào nhật ký, thông báo lỗi, tệp sao lưu hay tệp xuất; đọc được cơ sở dữ liệu hay bản sao lưu trong app mà không có khoá của máy, kể cả từ bản sao lưu iPhone trên máy tính; mở hoặc sửa được tệp sao lưu có mật khẩu mà không cần mật khẩu, hay sửa tệp mà app không phát hiện; dữ liệu bị mất hoặc bị ghi đè khi app chuyển dữ liệu cũ sang dạng mã hoá; app ghi đè hay xoá khoá mã hoá dữ liệu, hoặc hai iPhone cùng Apple ID làm mất dữ liệu của nhau qua khoá đồng bộ trong Chuỗi khoá iCloud; email giả mạo ngân hàng được tự ghi vào sổ hoặc tự gắn vào giao dịch có sẵn (thư chưa xác minh được người gửi vào hàng chờ duyệt kèm cảnh báo là đúng thiết kế); thư, mã QR hay tệp được tạo đặc biệt làm app chuyển khoản sai người nhận hoặc sai số tiền, hoặc làm app treo hay sập; tệp sao lưu, CSV hay Excel gây hại khi mở hoặc khi nhập lại.
  • Trang henryexpense.com và các trang con, kể cả khung tải thư mẫu (.eml) ở trang Đồng bộ ngân hàng. Ví dụ: chèn mã độc (XSS), xem được tệp người khác đã tải lên, cấu hình trang hay khung tải lên làm lộ tệp hoặc nội dung form.
  • Máy chủ Đồng bộ trực tiếp api.henryexpense.com (và bản thử api-uat.henryexpense.com), kể cả trang liên kết (đường dẫn /link và /link/return), địa chỉ nhận giao dịch từ đối tác (đường dẫn /hook/tx/...) và lệnh xác nhận đã nhận giao dịch (/v1/transactions/ack). Ví dụ: dùng được máy chủ mà không có thuê bao hợp lệ, bằng bằng chứng mua giả, đã hết hạn, đã hoàn tiền hay của sản phẩm khác; đọc, xoá hay làm mất giao dịch, tài khoản đã liên kết hay phiên liên kết của người khác, hoặc liên kết hay gỡ tài khoản ngân hàng thay người khác; đưa giao dịch giả vào hàng chờ của người khác qua địa chỉ nhận giao dịch, hay đoán được địa chỉ hoặc mã bí mật của nó; đọc được nội dung hàng chờ mà không có khoá của máy chủ; máy chủ trả số tài khoản đầy đủ, khoá của đối tác hay thông điệp gốc của đối tác; trang liên kết bị chèn mã, chuyển hướng tới trang lạ hay làm lộ địa chỉ trang của đối tác; app gửi bằng chứng mua tới nơi khác ngoài máy chủ.

Ngoài phạm vi (vui lòng không báo các mục sau ở đây; không kiểm thử dịch vụ của bên thứ ba qua chương trình này):

  • Dịch vụ của bên thứ ba mà app hay trang web dùng: Google và Gmail, Apple, Expo (u.expo.dev), Netlify, Cloudflare, dl.vietqr.io, đối tác kết nối ngân hàng của Đồng bộ trực tiếp (trang liên kết ngân hàng và dịch vụ của họ), nhà cung cấp AI, nguồn tỷ giá và giá tài sản, app ngân hàng. Lỗi của họ xin báo cho chính họ. Cách app và trang web dùng các dịch vụ này vẫn trong phạm vi, ví dụ app tin dữ liệu sai từ nguồn giá hay từ AI, đăng nhập Google bị chặn giữa đường, hay cấu hình khung tải tệp làm lộ tệp.
  • Lỗi chỉ xảy ra trên máy đã jailbreak, lỗi của chính iOS, hoặc tấn công vào phần cứng. Người cầm iPhone đang mở khoá mà vượt được khoá app Henry Expense thì vẫn trong phạm vi.
  • Vượt khoá tính năng trả phí ngay trên máy của chính bạn (máy đã jailbreak, app bị sửa hay bị chèn mã), hoặc mở tính năng trả phí bằng mua thử miễn phí qua TestFlight. Đọc được số hotline hỗ trợ từ tệp cài app hay mã của app khi chưa mua: số này không phải bí mật, app chỉ không hiện nó trước khi mua. Dùng được máy chủ Đồng bộ trực tiếp mà không có thuê bao hợp lệ thì vẫn trong phạm vi.
  • Tấn công làm sập trang web hay dịch vụ (DoS), gửi hàng loạt yêu cầu hay hàng loạt tệp, thư rác, lừa đảo người dùng hay nhà phát triển.
  • Kết quả quét tự động chưa chứng minh được tác hại: thiếu header bảo mật, clickjacking ở trang không có thao tác nhạy cảm, lộ phiên bản phần mềm, cấu hình TLS, bản ghi SPF/DMARC/DKIM của tên miền, self-XSS, lỗ hổng đã công bố của thư viện mà không chứng minh được app hay trang web bị ảnh hưởng.
  • Thư đến từ địa chỉ người gửi mà chính bạn đã thêm vào danh sách nguồn Gmail của app.
  • Giới hạn đã được ghi rõ trong chính sách quyền riêng tư, ví dụ tệp CSV/Excel không có mật khẩu, tệp sao lưu cũ không có mật khẩu do bản cũ của app tạo, đoán được mật khẩu yếu của tệp sao lưu bằng máy khác, dữ liệu không mở được trên iPhone mới khi chuyển bằng bản sao lưu iCloud hay bản sao lưu máy tính không mật khẩu mà khoá không có trong Chuỗi khoá iCloud (khác Apple ID hoặc tắt Chuỗi khoá iCloud), phải chờ khoá đồng bộ rồi thử lại sau khi khôi phục từ iCloud, app tự hỏi máy chủ Expo về bản cập nhật, hay liên kết ở đối tác không tự gỡ khi thuê bao Đồng bộ trực tiếp hết hạn.

Quy tắc khi kiểm thử

  • Chỉ kiểm thử trên máy, dữ liệu và tài khoản của chính bạn. Chỉ dùng API key AI, tài khoản Google, thuê bao Đồng bộ trực tiếp (kể cả mua thử qua TestFlight) và tài khoản ngân hàng của chính bạn. Không dùng dữ liệu thật của người khác.
  • Thử email giả mạo ngân hàng: chỉ gửi tới hộp thư của chính bạn, không gửi thư mạo danh ngân hàng tới người khác. Thử chuyển khoản QR: không chuyển tiền thật tới tài khoản của người khác.
  • Không xem, sửa hay xoá dữ liệu của người khác. Lỡ thấy dữ liệu của người khác thì dừng lại, không lưu, không chia sẻ, và báo ngay.
  • Khung tải thư mẫu trên trang web: chỉ gửi vài lượt thử, dùng tệp tự tạo không chứa dữ liệu thật, ghi "SECURITY TEST" ở ô ghi chú. Không tải lên mã độc.
  • Không làm gián đoạn trang web hay ảnh hưởng tới người dùng khác.
  • Giữ kín thông tin về lỗ hổng cho tới khi đã sửa xong hoặc hai bên thống nhất ngày công bố.
  • Không đòi tiền hay điều kiện để đổi lấy việc không công bố.

Sau khi bạn báo

  • Thường trong 7 ngày (lâu hơn nếu nhà phát triển đi vắng): nhà phát triển trả lời xác nhận đã nhận báo cáo.
  • Trong 30 ngày: báo cho bạn kết quả đánh giá và mức độ nghiêm trọng.
  • Mục tiêu sửa trong 90 ngày kể từ khi xác nhận. Lỗi của app cần Apple duyệt bản cập nhật nên có thể lâu hơn lỗi của trang web; nhà phát triển cố gắng báo bạn tiến độ khoảng mỗi 30 ngày.
  • Khi đã sửa, bạn được báo và có thể công bố sau khi bản sửa đã tới người dùng, hoặc vào ngày hai bên thống nhất.
  • Nếu muốn, tên hoặc biệt danh của bạn được ghi nhận trong ghi chú phát hành của bản sửa, hoặc trên trang này với lỗi của trang web.

Tiền thưởng

Henry Expense là dự án của một nhà phát triển cá nhân, hiện chưa có chương trình trả tiền thưởng cho lỗ hổng. Mọi báo cáo hợp lệ đều được cảm ơn và ghi nhận nếu bạn muốn.

Nghiên cứu thiện chí

Nếu bạn kiểm thử thiện chí, chỉ trên những phần nêu ở mục Phạm vi và làm đúng các quy tắc trên, nhà phát triển coi đó là việc được phép, sẽ không khởi kiện hay khiếu nại bạn vì việc đó, và sẽ làm việc với bạn để hiểu và sửa lỗi nhanh. Cam kết này chỉ thay mặt nhà phát triển Henry Expense, không thay mặt bên thứ ba (Apple, Google, Netlify…) và không thay cho quy định pháp luật. Nếu chưa chắc một việc có nằm trong quy tắc không, hãy hỏi trước qua email.

Tệp security.txt

Thông tin liên hệ bảo mật dạng máy đọc được có tại https://henryexpense.com/.well-known/security.txt (theo chuẩn RFC 9116).

Liên hệ bảo mật

Gửi báo cáo lỗ hổng, tiêu đề bắt đầu bằng [Security]. Thông tin dạng máy đọc: security.txt.

[email protected]