Skip to main content

Bluezone

Các lỗ hổng nghiêm trọng trong ứng dụng Bluezone

Thứ Hai 27, Tháng Tư 2020

     

Kính mời bạn đọc xem một bài viết của FB ThaiDN ngày 24/4/2020. Phía bênh vực Bluezone đã phản hồi tại đây và được ThaiDN trả lời tại đây

Bluezone là gì

Bluezone là một ứng dụng truy vết tiếp xúc, giúp cảnh báo nếu bạn đã ở gần người nhiễm COVID-19. Ứng dụng này do Chính phủ Việt Nam phát hành và được thực hiện bởi các doanh nghiệp công nghệ số Việt Nam gồm: Memozone, VNPT, MobiFone và BKAV.

Ngày 18/4/2020 VnExpress dẫn lời Bộ trưởng Nguyễn Mạnh HùngBluezone là bước tiến mới, có tính đột phá trong việc sử dụng công nghệ để phòng chống dịch bệnh. Đột phá ở chỗ, chính quyền không thu thập thông tin người dân [...] người dân có thể giám sát phần mềm mình đang dùng có an toàn không. Chúng ta không phải quốc gia đầu tiên dùng giải pháp này, nhưng phần mềm Việt Nam giải quyết được cơ bản các lỗi của các phần mềm trước đó.

Trong kết luận tại cuộc họp Thường trực Chính phủ về phòng, chống dịch COVID-19 ngày 23/4/2020, Thủ tướng Nguyễn Xuân Phúc cũng đã yêu cầu "khẩn trương đánh giá [...] ứng dụng Bluezone".

Tôi thấy vui mừng khi Chính phủ Việt Nam quan tâm đến quyền riêng tư của người dân. Sẵn có chút nghề trong người, thông qua một người bạn, tôi đã ngỏ ý trực tiếp với BKAV sẽ giúp họ đánh giá an ninh, nhưng cho đến nay chưa nhận được phản hồi. Ngày 24/4/2020, sau khi thấy ứng dụng Bluezone cho Android được đưa lên Google Play, tôi đã tải về coi thử.

Bằng cách dịch ngược mã phần mềm, tôi đã phát hiện nhiều lỗ hổng nghiêm trọng ảnh hưởng đến sự an toàn và riêng tư của người dùng. Tại thời điểm tôi viết những dòng này, đã có gần 10.000 người đăng ký sử dụng Bluezone và con số này tăng lên rất nhanh, chỉ riêng hôm nay đã tăng gấp 3 lần. Tôi muốn gửi lời cảnh báo đến tất cả mọi người, ai đã lỡ cài thì nên gỡ bỏ, còn ai chưa cài thì không nên cài.

Tôi đã gửi toàn bộ thông tin chi tiết về lỗ hổng đến BKAV. Tôi đề nghị BKAV và các đơn vị phát triển Bluezone tạm ngừng phát hành sản phẩm này. Thay vì tìm cách sửa chữa giải pháp hiện thời, tôi đề nghị sử dụng lại các giải pháp mở đã được thiết kế và kiểm định bởi những chuyên gia có uy tín. Giải pháp mở tốt nhất hiện tại là DP3T của Châu Âu.

Nếu việc phát triển Bluezone diễn ra trên một không gian mở như GitHub (mạng xã hội của lập trình viên), những vấn đề này đã sớm được phát hiện. Tôi đề nghị nhóm phát triển Bluezone ngay lập tức chuyển tất cả mã nguồn, tài liệu và đưa việc phát triển Bluezone lên GitHub.

Các quốc gia khi phát triển giải pháp truy vết tiếp xúc đều tham khảo ý kiến của các chuyên gia. Tôi thấy ứng dụng Bluezone có rất nhiều lỗ hổng sơ đẳng, chứng tỏ việc thiết kế và triển khai không có sự tham gia của những chuyên gia về an ninh mạng và riêng tư. Tôi đề nghị Chính phủ Việt Nam tổ chức đánh giá và phản biện độc lập trước khi giới thiệu với người dân một ứng dụng nhạy cảm như Bluezone.

Cách thức hoạt động của Bluezone

Tóm tắt những lỗ hổng nghiêm trọng

1/ Bluezone sử dụng sóng Bluetooth để phát và thu mã số ngẫu nhiên. Thay vì liên tục thay đổi mã số ngẫu nhiên như các giải pháp của Singapore, Châu Âu hay Google/Apple, mỗi người sử dụng Bluezone chỉ có một mã số duy nhất, gọi là mã ID Bluezone. Người sử dụng không thể thay đổi mã số này, trừ khi xóa và cài lại ứng dụng. Cách làm không giống ai này khiến người sử dụng có thể bị theo dõi, bị lộ thông tin vị trí, hành trình, đã gặp ai, có bị nhiễm hay phơi nhiễm hay không.

2/ Ngoài việc không thay đổi mã ID Bluezone, ứng dụng Bluezone cũng không thay đổi địa chỉ Bluetooth của thiết bị. Nếu không thay đổi địa chỉ Bluetooth người dùng sẽ bị theo dõi và lộ bị lộ thông tin vị trí, hành trình, đã gặp ai, có bị nhiễm hay phơi nhiễm hay không. Đây cũng làm một cách làm không giống ai, vì các giải pháp của Châu Âu, Singapore hay Google/Apple đều nhấn mạnh phải thay đổi địa chỉ Bluetooth.

  • Cập nhật 24/4/2020 7:30PM: chỗ này không công bằng với Bluezone vì muốn thay đổi địa chỉ Bluetooth thì cần sự hỗ trợ của hệ điều hành và phần cứng. Để an toàn, mã ID Bluezone và địa chỉ Bluetooth phải được đổi cùng lúc. Trên một số dòng điện thoại Android, nếu ứng dụng khởi động lại quá trình gửi quảng cáo qua Bluetooth thì địa chỉ Bluetooth sẽ thay đổi, nhưng chuyện này còn phụ thuộc vào nhà sản xuất điện thoại. Còn trên iOS hiện giờ tôi không biết có cách nào không. API mới mà Google/Apple sắp phát hành vào tháng 5 năm nay hi vọng sẽ tự động hóa việc này, các ứng dụng truy vết như Bluezone có thể dùng lại mà không cần quan tâm đến vấn đề này nữa.

3/ Mã ID Bluezone quá ngắn, dễ dẫn đến trùng mã. Tổng số lượng mã ngẫu nhiên là ở khoảng 36^6, tức lớn hơn 2^31 một chút. Theo nghịch lý ngày sinh, chỉ cần 2^16 người đăng ký sử dụng, tức là khoảng 65 ngàn người, thì sẽ có hai người có mã ID Bluezone trùng nhau với xác suất cao. Khi đó, nếu một trong hai người bị nhiễm (phơi nhiễm), người kia cũng sẽ bị tính là nhiễm (phơi nhiễm)!

4/ Thuật toán tạo mã ID Bluezone rất dễ đoán. Chỉ cần biết thời điểm bạn đăng ký sử dụng app, người khác có thể đoán được mã ID của bạn. Tôi có thể tính được mã ID Bluezone của tất cả người dùng. Nếu bị lộ mã ID Bluezone, người dùng có thể bị kẻ xấu quy kết là đã nhiễm bệnh hoặc phơi nhiễm, dẫn đến bị cách ly, mặc dù hoàn toàn khỏe mạnh.

5/ Khi chạy app Bluezone lần đầu tiên, Bluezone đăng ký để nhận tin nhắn từ máy chủ BKAV qua dịch vụ Firebase Cloud Messaging. Quá trình đăng ký dựa vào ID Bluezone, nhưng vì ID Bluezone có thể bị đoán trước, kẻ xấu có thể dễ dàng đăng ký để nhận mã ID Bluezone của tất cả người dùng, hoặc của một nhóm người dùng. Khi đó tất cả tin nhắn mà máy chủ BKAV gửi xuống người dùng đều sẽ bị lộ.

6/ Ứng dụng Bluezone Android yêu cầu người dùng cấp quyền truy cập thông tin vị trí, hình ảnh, tài liệu lưu trên điện thoại. Bluezone không cần sử dụng những thông tin này để thực hiện truy vết. Nhóm phát triển ứng dụng nên gỡ bỏ những yêu cầu này.

  • Cập nhật 3PM 24/4/2020: Bluezone phải yêu cầu người dùng cấp quyền truy cập thông tin vị trí vì Android bắt buộc (nguồn). Đây là một tính năng privacy của Android, vì thông qua Bluetooth có thể định vị vị trí của người dùng. Cảm ơn bạn Triệu Minh Khôi đã chỉ ra (nhưng không hiểu sao lại xóa comment rồi àh đã post còm mới rồi). Bluezone yêu cầu quyền đọc và ghi external storage, đây là nơi Android lưu hình ảnh, tài liệu. Bạn Triệu Minh Khôi có nói sở dĩ Bluezone làm vậy là vì muốn backup các ID Bluezone đã thu thập được. Tôi nghĩ không nên backup thông tin nhạy cảm ra external storage, vì đây là nơi ai cũng có thể đọc.
  • Cập nhật 8:30PM 24/4/2020: Tôi đã xác nhận Bluezone ghi xuống external storage những ID Bluezone và địa chỉ của các thiết bị mà nó đã thấy. Tất cả các ứng dụng khác trên cùng điện thoại có thể đọc được dữ liệu này và qua đó có thể biết được người dùng đã gặp ai, ở đâu, vào lúc nào. Các ứng dụng này cũng có thể xóa hay ngụy tạo dữ liệu để khiến người dùng bị false positive (không bị phơi nhiễm nhưng bị quy là có) và false negative (bị phơi nhiễm nhưng tưởng là không).

Thứ Hai 27, Tháng Tư 2020

     

Kính mời bạn đọc xem một bài viết của FB ThaiDN ngày 24/4/2020. Phía bênh vực Bluezone đã phản hồi tại đây và được ThaiDN trả lời tại đây

Bluezone là gì

Bluezone là một ứng dụng truy vết tiếp xúc, giúp cảnh báo nếu bạn đã ở gần người nhiễm COVID-19. Ứng dụng này do Chính phủ Việt Nam phát hành và được thực hiện bởi các doanh nghiệp công nghệ số Việt Nam gồm: Memozone, VNPT, MobiFone và BKAV.

Ngày 18/4/2020 VnExpress dẫn lời Bộ trưởng Nguyễn Mạnh HùngBluezone là bước tiến mới, có tính đột phá trong việc sử dụng công nghệ để phòng chống dịch bệnh. Đột phá ở chỗ, chính quyền không thu thập thông tin người dân [...] người dân có thể giám sát phần mềm mình đang dùng có an toàn không. Chúng ta không phải quốc gia đầu tiên dùng giải pháp này, nhưng phần mềm Việt Nam giải quyết được cơ bản các lỗi của các phần mềm trước đó.

Trong kết luận tại cuộc họp Thường trực Chính phủ về phòng, chống dịch COVID-19 ngày 23/4/2020, Thủ tướng Nguyễn Xuân Phúc cũng đã yêu cầu "khẩn trương đánh giá [...] ứng dụng Bluezone".

Tôi thấy vui mừng khi Chính phủ Việt Nam quan tâm đến quyền riêng tư của người dân. Sẵn có chút nghề trong người, thông qua một người bạn, tôi đã ngỏ ý trực tiếp với BKAV sẽ giúp họ đánh giá an ninh, nhưng cho đến nay chưa nhận được phản hồi. Ngày 24/4/2020, sau khi thấy ứng dụng Bluezone cho Android được đưa lên Google Play, tôi đã tải về coi thử.

Bằng cách dịch ngược mã phần mềm, tôi đã phát hiện nhiều lỗ hổng nghiêm trọng ảnh hưởng đến sự an toàn và riêng tư của người dùng. Tại thời điểm tôi viết những dòng này, đã có gần 10.000 người đăng ký sử dụng Bluezone và con số này tăng lên rất nhanh, chỉ riêng hôm nay đã tăng gấp 3 lần. Tôi muốn gửi lời cảnh báo đến tất cả mọi người, ai đã lỡ cài thì nên gỡ bỏ, còn ai chưa cài thì không nên cài.

Tôi đã gửi toàn bộ thông tin chi tiết về lỗ hổng đến BKAV. Tôi đề nghị BKAV và các đơn vị phát triển Bluezone tạm ngừng phát hành sản phẩm này. Thay vì tìm cách sửa chữa giải pháp hiện thời, tôi đề nghị sử dụng lại các giải pháp mở đã được thiết kế và kiểm định bởi những chuyên gia có uy tín. Giải pháp mở tốt nhất hiện tại là DP3T của Châu Âu.

Nếu việc phát triển Bluezone diễn ra trên một không gian mở như GitHub (mạng xã hội của lập trình viên), những vấn đề này đã sớm được phát hiện. Tôi đề nghị nhóm phát triển Bluezone ngay lập tức chuyển tất cả mã nguồn, tài liệu và đưa việc phát triển Bluezone lên GitHub.

Các quốc gia khi phát triển giải pháp truy vết tiếp xúc đều tham khảo ý kiến của các chuyên gia. Tôi thấy ứng dụng Bluezone có rất nhiều lỗ hổng sơ đẳng, chứng tỏ việc thiết kế và triển khai không có sự tham gia của những chuyên gia về an ninh mạng và riêng tư. Tôi đề nghị Chính phủ Việt Nam tổ chức đánh giá và phản biện độc lập trước khi giới thiệu với người dân một ứng dụng nhạy cảm như Bluezone.

Cách thức hoạt động của Bluezone

Tóm tắt những lỗ hổng nghiêm trọng

1/ Bluezone sử dụng sóng Bluetooth để phát và thu mã số ngẫu nhiên. Thay vì liên tục thay đổi mã số ngẫu nhiên như các giải pháp của Singapore, Châu Âu hay Google/Apple, mỗi người sử dụng Bluezone chỉ có một mã số duy nhất, gọi là mã ID Bluezone. Người sử dụng không thể thay đổi mã số này, trừ khi xóa và cài lại ứng dụng. Cách làm không giống ai này khiến người sử dụng có thể bị theo dõi, bị lộ thông tin vị trí, hành trình, đã gặp ai, có bị nhiễm hay phơi nhiễm hay không.

2/ Ngoài việc không thay đổi mã ID Bluezone, ứng dụng Bluezone cũng không thay đổi địa chỉ Bluetooth của thiết bị. Nếu không thay đổi địa chỉ Bluetooth người dùng sẽ bị theo dõi và lộ bị lộ thông tin vị trí, hành trình, đã gặp ai, có bị nhiễm hay phơi nhiễm hay không. Đây cũng làm một cách làm không giống ai, vì các giải pháp của Châu Âu, Singapore hay Google/Apple đều nhấn mạnh phải thay đổi địa chỉ Bluetooth.

  • Cập nhật 24/4/2020 7:30PM: chỗ này không công bằng với Bluezone vì muốn thay đổi địa chỉ Bluetooth thì cần sự hỗ trợ của hệ điều hành và phần cứng. Để an toàn, mã ID Bluezone và địa chỉ Bluetooth phải được đổi cùng lúc. Trên một số dòng điện thoại Android, nếu ứng dụng khởi động lại quá trình gửi quảng cáo qua Bluetooth thì địa chỉ Bluetooth sẽ thay đổi, nhưng chuyện này còn phụ thuộc vào nhà sản xuất điện thoại. Còn trên iOS hiện giờ tôi không biết có cách nào không. API mới mà Google/Apple sắp phát hành vào tháng 5 năm nay hi vọng sẽ tự động hóa việc này, các ứng dụng truy vết như Bluezone có thể dùng lại mà không cần quan tâm đến vấn đề này nữa.

3/ Mã ID Bluezone quá ngắn, dễ dẫn đến trùng mã. Tổng số lượng mã ngẫu nhiên là ở khoảng 36^6, tức lớn hơn 2^31 một chút. Theo nghịch lý ngày sinh, chỉ cần 2^16 người đăng ký sử dụng, tức là khoảng 65 ngàn người, thì sẽ có hai người có mã ID Bluezone trùng nhau với xác suất cao. Khi đó, nếu một trong hai người bị nhiễm (phơi nhiễm), người kia cũng sẽ bị tính là nhiễm (phơi nhiễm)!

4/ Thuật toán tạo mã ID Bluezone rất dễ đoán. Chỉ cần biết thời điểm bạn đăng ký sử dụng app, người khác có thể đoán được mã ID của bạn. Tôi có thể tính được mã ID Bluezone của tất cả người dùng. Nếu bị lộ mã ID Bluezone, người dùng có thể bị kẻ xấu quy kết là đã nhiễm bệnh hoặc phơi nhiễm, dẫn đến bị cách ly, mặc dù hoàn toàn khỏe mạnh.

5/ Khi chạy app Bluezone lần đầu tiên, Bluezone đăng ký để nhận tin nhắn từ máy chủ BKAV qua dịch vụ Firebase Cloud Messaging. Quá trình đăng ký dựa vào ID Bluezone, nhưng vì ID Bluezone có thể bị đoán trước, kẻ xấu có thể dễ dàng đăng ký để nhận mã ID Bluezone của tất cả người dùng, hoặc của một nhóm người dùng. Khi đó tất cả tin nhắn mà máy chủ BKAV gửi xuống người dùng đều sẽ bị lộ.

6/ Ứng dụng Bluezone Android yêu cầu người dùng cấp quyền truy cập thông tin vị trí, hình ảnh, tài liệu lưu trên điện thoại. Bluezone không cần sử dụng những thông tin này để thực hiện truy vết. Nhóm phát triển ứng dụng nên gỡ bỏ những yêu cầu này.

  • Cập nhật 3PM 24/4/2020: Bluezone phải yêu cầu người dùng cấp quyền truy cập thông tin vị trí vì Android bắt buộc (nguồn). Đây là một tính năng privacy của Android, vì thông qua Bluetooth có thể định vị vị trí của người dùng. Cảm ơn bạn Triệu Minh Khôi đã chỉ ra (nhưng không hiểu sao lại xóa comment rồi àh đã post còm mới rồi). Bluezone yêu cầu quyền đọc và ghi external storage, đây là nơi Android lưu hình ảnh, tài liệu. Bạn Triệu Minh Khôi có nói sở dĩ Bluezone làm vậy là vì muốn backup các ID Bluezone đã thu thập được. Tôi nghĩ không nên backup thông tin nhạy cảm ra external storage, vì đây là nơi ai cũng có thể đọc.
  • Cập nhật 8:30PM 24/4/2020: Tôi đã xác nhận Bluezone ghi xuống external storage những ID Bluezone và địa chỉ của các thiết bị mà nó đã thấy. Tất cả các ứng dụng khác trên cùng điện thoại có thể đọc được dữ liệu này và qua đó có thể biết được người dùng đã gặp ai, ở đâu, vào lúc nào. Các ứng dụng này cũng có thể xóa hay ngụy tạo dữ liệu để khiến người dùng bị false positive (không bị phơi nhiễm nhưng bị quy là có) và false negative (bị phơi nhiễm nhưng tưởng là không).

Comments

Popular posts from this blog

​Trong mỗi gia đình, luôn có một người như thế

Trong mỗi gia đình, luôn có một người như thế… Người ấy không hỏi nhiều, không kể lể, chẳng tranh phần đúng, cũng chưa từng đòi phần hơn. Nhưng lạ lắm – cứ mỗi lần nhà có chuyện, thì chính người ấy lại là người đầu tiên chao đảo. Khi ai đó gặp hạn, người ấy lại ốm. Khi cả nhà cùng lo âu, người ấy lại gánh thêm những điều chẳng ai thấy. Không phải vì người đó yếu. Mà bởi trời đất đôi khi có một cách sắp đặt kỳ lạ: Để một người chịu nhiều hơn một chút – Để những người còn lại, được bình yên hơn một chút. co là con út trong một gia đình năm người. Chị gái lấy chồng xa, anh trai có công việc ổn định, bố mẹ vẫn khỏe mạnh ở tuổi về chiều. Chỉ riêng Co – đi đâu cũng lận đận, làm gì cũng va vấp. Đã có lúc, cô ngồi một mình và hỏi: "Hay là mình là đứa gánh nghiệp cả nhà?" Và rồi cô để ý – rất rõ – Mỗi lần trong nhà có người gặp chuyện: mẹ ốm, bố té xe, hay chị gái buồn bực chuyện chồng con… Thì chỉ vài hôm sau, Linh lại là người "đón hạn": xe hư, mất việc, hay bỗng dưng té ...

SÂU BỌ LÊN NGÔI

Ánh sáng Miền Nam đưa tôi về chân lý Vùng đất hiền hoà, nhân bản, phồn vinh Cuộc sống tự do, dân chủ, nghĩa tình Không sắt máu, căm thù, như Miền Bắc. (Phan Huy) Lời thơ như hơi thở. Hơi thở còn sống của một con người nhân bản, đạo nghĩa và sống với trái tim còn nóng. Dù ở đâu, ra sao, nó vẫn không nói lên điều tà tâm gỉa dối, nhưng là một sự thật rất đáng trân trọng trong đời thường của con người! Xem ra nó hoàn toàn khác biệt với cái "người hay bóng ma" của Trần Lực. Vậy Trần Lực là ai? Trong mục kể về chuyện cụ Phan bội Châu bị bắt, ông Trịnh Vân Thanh tác gỉa "Thành ngữ-Điển tích-Danh nhân Từ điển" (NXB Hồn Thiêng, Gia Định. ngày 7-7 1967, quyển 2. Quyển 1 đã xuất bản trước đó đúng 1 năm), ghi lại như sau : "Năm 1925, nghe theo lời của Lý Thụy và Lâm Đức Thụ, Phan Bội Châu gia nhập vào tổ chức "Toàn thể giới bị áp bức nhược tiểu dân tộc", nhưng sau đó Lý Thụy và các đồng chí lập mưu bắt Phan Bội Châu nộp cho thực dân Pháp để : Tổ chức lấy được m...
Chuyện tù "cải tạo" của Phó Tổng Thanh Tra Ngân Hàng Quốc Gia VNCH Một bạn thân ở Montréal Canada vừa gửi cho tôi cuốn Pháp Ngữ Souvenirs et Pensées, viết bởi Bà Bác Sỹ Nguyễn Thị Đảnh và được Bác Sỹ Từ Uyên chuyển qua Việt Ngữ. Bạn lại khuyến khích tôi nếu có thì giờ thì chuyển qua Anh Ngữ theo sự mong muốn của tác giả. Sau khi đọc tôi thấy đặc biệt ở chỗ tù cải tạo này là một chuyên viên tài chính ngân hàng, khác hẳn trường hợp thường thấy của các sỹ quan trong quân lực. Ông Thảo bị đầy đọa sáu năm rưỡi trời để hy vọng moi các hiểu biết của ông về tài sản Ngân Hàng Quốc Gia. Bà Bác Sỹ Đảnh nay định cư tại Oslo Na Uy là một phụ nữ miền Nam, Tây học. Phu quân Đỗ Văn Thảo cũng là người Nam, sinh ngày 21/8/1927 tại Gò Công. Sau khi tốt nghiệp Đại Học tại Pháp ông Thảo đã về làm việc tại Ngân Hàng Quốc Gia Việt Nam từ tháng Tư năm 1955. Ông đã giữ chức Giám Đốc Nha Ngoại Viện rồi Phó Tổng Thanh Tra Ngân Hàng Quốc Gia cho đến ngày 30/4/1975. Ông bị đi tù cải tạo tháng 6/1975 rồi ...