Dùng Bluezone có nguy cơ lộ thông tin như thế nào?

Bluezone đã sửa lỗi! Xem cập nhật ngày 3/8/2020: https://vnhacker.blogspot.com/2020/08/cap-nhat-ve-bluezone.html.

Tôi có viết trả lời phỏng vấn cho một tờ báo, không chắc là họ sẽ đăng. Tôi gửi lên đây để mọi người hiểu dùng Bluezone nguy hiểm như thế nào.

Thú thật quỹ thời gian và năng lượng của tôi cho chuyện này đã cạn. Tôi hi vọng những anh chị em nào quan tâm sẽ tiếp tục trợ giúp.

1. Lỗi về ID hiện là một trong những lỗ hổng lớn nhất của Bluezone. Trong khi các app ở Singapore, Hàn Quốc sẽ dùng các mã thay đổi liên tục. Nhưng app Bluezone lại gắn cho mỗi tài khoản một mã số. Điều này ảnh hưởng như thế nào đến người dùng? Cụ thể hacker có thể khai thác được những thông tin gì từ điểm yếu này? Cộng đồng có thể bị ảnh hưởng thế nào nếu lỗ hổng này bị tấn công?

Các ứng dụng truy vết tiếp xúc như Bluezone hoạt động bằng cách thu phát tín hiệu Bluetooth. Mỗi tín hiệu có chứa hai thông số: mã số người dùng và địa chỉ Bluetooth. Bất kỳ điện thoại hay thiết bị thu sóng Bluetooth nào cũng có thể nhìn thấy hai thông số này khi đứng gần điện thoại của người khác.

Đối với địa chỉ Bluetooth, Android (đã thử nghiệm trên Samsung và Pixel) và iOS đã tự động ẩn đi và thay đổi theo thời gian. Đối với mã số người dùng, không riêng gì Singapore mà tất cả giải pháp của Đức, Anh, Pháp hay của Google và Apple, dẫu có khác nhau về cách thực hiện, đều giống nhau ở chỗ liên tục thay đổi mã số người dùng. Cho đến nay, chỉ có giải pháp của Bluezone là sử dụng một mã số duy nhất.

Cách làm của Bluezone khiến người dùng có nguy cơ bị theo dõi, bị lộ thông tin về danh tính, địa điểm, hành trình duy chuyển, đã gặp ai, vào lúc nào, ở đâu và có nhiễm bệnh hay không. Tôi xin đưa ra vài ví dụ.

Bluezone nói rằng mã số không tiết lộ danh tính người dùng, điều này chỉ đúng khi mã số được thay đổi liên tục. Khi chỉ có một mã số duy nhất, danh tính rất dễ bị lộ. Ví dụ anh A gặp riêng anh C, anh C có thể dễ dàng biết mã số của anh A vì đó là mã số duy nhất mà điện thoại hay thiết bị thu sóng Bluetooth của anh ghi nhận vào lúc đó. Tương tự, một người có thể dễ dàng xác định mã số của đồng nghiệp, của hàng xóm hay tất cả những người mà họ đã tiếp xúc. Việc này đòi hỏi phải biết một chút lập trình, nhưng có cầu thì sẽ có cung, người ta có thể bỏ tiền ra mua ứng dụng xác định mã số của người khác.

Vì mã số Bluezone ID chỉ có 6 chữ số và được hiển thị ngay trên màn hình ứng dụng, nó có thể bị nhìn trộm. Vì mã số được tạo dựa vào thời gian, nếu ai biết khoảng thời gian anh A cài ứng dụng (vì họ mời anh A cài) họ sẽ có thể khoanh vùng mã số của anh ấy. Đó là chưa kể đa số người dùng sẽ không hiểu mã số này có ý nghĩa gì, họ có thể vô tình chia sẻ hoặc bị người khác lừa tiết lộ mã số.

Thậm chí, không cần phải tiếp xúc trực tiếp với nạn nhân, kẻ xấu vẫn có thể xác định danh tính bằng cách theo dõi hành vi. Kẻ theo dõi đặt máy thu sóng Bluetooth ở các khu dân cư, trường học, siêu thị, văn phòng, nhà hàng, quán cafe, nhà nghỉ. Giả sử mã số của anh A là 123456. Buổi sáng anh từ nhà đưa con đi học rồi đến cơ quan. Máy thu sóng Bluetooth gần nhà anh ấy sẽ ghi nhận có một người có mã số 123456. Khi anh A đưa con đến trường hay khi anh ấy đến văn phòng, máy thu sóng ở đó sẽ lại ghi nhận mã số 123456. Buổi trưa anh A đi ăn trưa và uống cafe, máy thu sóng ở những nơi này sẽ tiếp tục "nhìn thấy" anh ấy.

Kẻ theo dõi có thể chưa biết anh A là ai, nhưng nếu anh A lập đi lập lại hành trình này hàng ngày, họ có thể suy đoán ra được nhà anh A ở đâu, con anh ấy học trường gì, anh ấy làm việc ở đâu, thích uống cafe quán nào, v.v. Từ những thông tin này có thể suy đoán ra được danh tính thật sự của anh A. Tương tự cho chị B. Nếu anh A và chị B hẹn gặp nhau, máy thu sóng Bluetooth đặt ở đó sẽ biết hai người này đã ở chung một chỗ. Ứng dụng Bluezone ID cài trên điện thoại của hai người cũng sẽ ghi lại sự gặp gỡ mà có thể họ không muốn ai khác biết.

Khi mã số và danh tính bị lộ, không những thông tin về vị trí, hành trình di chuyển, đã gặp ai, ở đâu, lúc nào của anh A sẽ có nguy cơ bị lộ, mà tình trạng sức khỏe của anh ấy cũng bị lộ. Mã số của những người bị nhiễm bệnh sẽ được công bố rộng rãi, nhìn vào danh sách này những người đã thu thập mã số của anh A sẽ biết ngay anh ấy có nhiễm bệnh hay không. Nguy hiểm hơn nữa, nếu anh A vô tình lây cho anh C, khiến anh C bị cách ly, anh C có thể xác định nguồn lây là anh A và từ đó trả thù anh A. Nếu anh D biết mã số của anh E, anh D có thể dùng mã số của anh E khi làm việc với các cơ quan Y tế, từ đó khiến những người từng tiếp xúc với anh E bị cách ly, mặc dù anh E không bị bệnh.

Nói tóm lại, giải pháp của Bluezone khiến điện thoại của bạn liên tục phát đi một mã số cố định, thông báo cho thế giới xung quanh biết bạn đang ở đâu, làm gì, vào lúc nào, với ai. Đây là những thông tin cá nhân cực kỳ nhạy cảm. Để bảo vệ những thông tin này, các giải pháp trên thế giới phát ra nhiều mã số. Bluezone không thể làm khác.

2. Đứng ở phương diện người làm về bảo mật, theo anh có những tiếp cận nào để giải quyết điểm yếu này? Biện pháp hữu dụng nhất mà Bluezone có thể áp dụng ngay lúc này là gì?

Vừa rồi Bluezone đã công bố mã nguồn. Tôi hoan nghênh tinh thần minh bạch của nhóm Bluezone. Bước tiếp theo Bluezone cần phải làm là tạm dừng ứng dụng, thay đổi thiết kế, làm lại cho tốt rồi hẵng chạy tiếp. Với nguồn lực hiện tại, Bluezone không nên tự thiết kế giải pháp mà nên dùng lại những thiết kế của các nhóm chuyên gia ở Châu Âu và Mỹ. Tôi đã gửi kiến nghị trực tiếp qua email và trang chủ của dự án trên GitHub (xem ở đây). Tôi cũng đã liên hệ với những nhóm chuyên gia ở Châu Âu và Mỹ, nhờ họ hỗ trợ Bluezone.

Có người nói nếu bây giờ tạm dừng, trong thời gian chỉnh sửa Bluezone, lỡ có người bị nhiễm bệnh thì sao? Tôi nghĩ nguy cơ lây nhiễm ở Việt Nam hiện nay rất thấp và thế giới đã chỉ ra cách thiết kế giải pháp truy vết thế nào để giảm thiểu các nguy cơ mất riêng tư mà tôi viết ở đây. Người ta đã làm sẵn hết rồi, chỉ cần dùng lại thôi, nên cũng không mất nhiều thời gian lắm đâu. Với một sản phẩm an toàn và đảm bảo riêng tư tốt hơn, Bluezone sẽ thuyết phục được nhiều người đăng ký sử dụng hơn. Lúc đó, tôi sẽ là người đầu tiên đi quảng cáo cho Bluezone.

Comments

anh Thái lèm bèm nhỉ? Họ công bố mã nguồn rồi đó anh, anh minh chứng cho mọi người thấy lỗ hổng đi để còn biết đường mà tránh.
Lưu Ngọc Mai said…
Tôi nói thật anh nhé: Anh chẳng có chút tinh thần người Việt chung tay đẩy dịch gì cả. 1 ứng dụng người ta sx ra để mọi người cùng chung tay phát hiện việc tiếp xúc nhiễm bệnh thì việc mấy truy cập kia có là gì. Hàng nghìn ứng dụng khác trên CH Play hay App Store đều bắt cấp quyền mà người sử dụng vẫn dùng chẳng ai kêu than. Chưa kể bên NSX cũng đã nói rõ không ảnh hưởng gì vì họ k thu thập, mà có thu thập hay k thì tôi thấy nó k quá nguy hiểm. Việc đẩy lùi dịch bệnh bây giờ là cần thiết nhất. Ngoài ra ứng dụng này cũng công bố mã nguồn mở rồi, anh hay các ông giỏi công nghệ thì cùng phân tích góp ý mà xây dựng cho nó hoàn thiện thêm chứ làm gì cứ phải bới móc lỗi ra rồi kêu gọi mọi người đừng cài là thế nào. Anh tệ thật
Quang Nguyễn said…
Tôi khâm phục anh Thái ghê, mấy bạn kia chẳng lịch sự tí nào mà anh vẫn để vậy. Nếu tôi là a Thái tôi block mấy bạn kia cho sạch sẽ.
Tester said…
Người ta đã dành thời gian pentest trên tinh thần đóng góp không thu lợi rồi mà vẫn còn bắt bẻ. Phải mình thì cứ bugcrowd hay hackerone cho đỡ đau đầu, vừa có tiếng vừa có miếng lại đỡ bị thiên hạ soi mói :) Nhưng căn bản cũng phải thông cảm cho họ, không có kiến thức chuyên môn nên không hiểu được mức độ nghiêm trọng của vấn đề. Những thứ liên quan đến tính riêng tư chỉ có người trong ngành mới quan tâm. Ở VN đa phần mọi người nghĩ nếu thông tin bị lộ cũng chẳng sao.
Thai Duong said…
Quang Nguyễn: có nhiều người như vầy ghét mình thì chắc chắn mình phải làm đúng cái gì đó rồi, phải để trưng khoe thiên hạ chớ.

Nói thiệt với bạn ý nghĩ xóa còm có thoáng qua trong đầu tôi, nhưng sau đó tôi nhớ đến lời một ông thầy tu nói. Ổng nói người ta ghét mình, đem oán hờn đến nhà mình, mình không nhận thì họ phải đem về thôi, chứ hổng lẽ bỏ cho chó ăn ;-)
HИD said…
Dân Việt cũng ngây thơ lạc quan y như dân Trung Quốc: “có thu thập hay k thì tôi thấy nó k quá nguy hiểm”
khanglg said…
Không hiểu những người phát triển phần mềm đó bảo thủ gì nữa. Ai làm trong ngành phần mềm cũng biết viết phần mềm có lỗi là chuyện bình thường. Có người pentest ra lỗi thì mình fix, cứ khăng khăng đúng để làm gì
Son said…
- Mình nghĩ BKAV ban đầu nôn nóng đưa ra sản phẩm + thêm muốn PR bản thân nên họ đã lỡ PR quá nhiều rồi, cả các cơ quan nhà nước cũng PR cho họ và báo chí. Giờ mà chấp nhận thiết kế ko tốt thì mất mặt quá. Nên cứ ko chịu nhận sự đóng góp của người khác. theo mình ban đầu họ nên public source cho mọi người đóng góp trước đã rồi hãy quảng bá cho người dùng sử dụng. giờ chuyện đã lỡ nên phải cố biện minh chứ sao giờ, nếu chấp nhận đóng góp thì mất mặt quá.
- Vấn đề của BKAV nếu vẫn giữ thói quan như vậy theo cá nhân mình rất là tai hại, họ dù gì cũng là 1 công ty có tiếng, cũng hay được các cơ quan chính phủ nhà nước quan tâm và có phần tin tưởng không ít. Dẫn chứng như trong cái app Bluezone này. chưa gì mà cơ quan chính phủ đã nhãy vào PR cho họ và cả Bộ TTTT là đơn vị chuyên trách cũng khuyến cáo người dân 1 người cài giúp cho 3 người.
- Nếu không có những người như anh Thái pentest và công bố những nguy cơ đó thì chắc ai cũng nghĩ là an toàn tuyệt đối. Thì liệu các cơ quan chuyên trách của nhà nước có biết mình đang vội vàng không, quản bá cho một sản phẩm ảnh hưởng lớn đến người dùng mà chưa được đánh giá và đóng góp. Hy vọng những bài trên blog đến được tai các bác bên Bộ TTTT. Để các bác cũng nên rút kinh nghiệm cho các lần sau. nhất là hiện nay các bác đang muốn lên chính phủ điện tử, mà theo mình biết nhiều sản phẩm đang chạy ở các sở ban ngành do các công ty trong nước phát triển thậm chí các đơn vị này còn không có khái niệm hay đội ngủ bảo mật. Cá nhân mình rất lo về nguy cơ lộ thông tin khi nhà nước triển khai mạnh chính phủ điện tử @@.
Kha Nguyen said…
Hi anh Thái, em có sơ qua video của VietBay Sharing gần đây, có một ý kiến góp ý (và có liên quan một chút đến bài này).

Em nghĩ, sẽ hay hơn nếu các hệ thống tracing không broadcast các ID của người A khi người A nhiễm bệnh, mà nên broadcast các ID đã có tiếp xúc với người A. Có 2 lợi ích ở đây:

1, là kích thước dữ liệu cần broadcast sẽ nhỏ hơn nhiều, vì phần lớn thời gian của con người là ở nhà và đi ngủ (vốn ít tiếp xúc với người lạ), cũng như sẽ có nhiều người cứ về nhà là sẽ tắt app (họ quan niệm rằng app này là để kiểm soát việc tiếp xúc với người ngoài mà không phải trong gia đình)

2, là việc xác định danh tính người A nhiễm bệnh sẽ khó hơn một chút. Giả sử tất cả các ID của người A được broadcast, rất dễ khiến kẻ truy lùng thông tin gom nhóm "đây là danh sách ID của một người", và như vậy, nếu họ đặt các máy thu sóng bluetooth, họ sẽ dễ tìm được các ID đó hơn. Tất nhiên, việc broadcast các ID của những ai có tiếp xúc với người A cũng sẽ cho ra kết quả tương tự, nhưng em cho là khó xác định hơn.

Em cũng biết là 2 cái lợi ích vừa nêu là nhỏ, nhưng nghĩ lại thì việc broadcast ID của A hay của người có tiếp xúc với A thì độ khó là như nhau. Cho nên em nghĩ nếu em mà làm thì em sẽ chọn cách có thêm tí lợi ích mà không mất gì.
Huyy said…
Ủng hộ Thái. Mong bạn tiếp tục đóng góp.
Unknown said…
Trước kia mình rất hâm mộ Thái. Theo dõi vụ này thì mình thay đổi quan điểm.
Thai Duong said…
Kha Nguyen: làm sao biết được "các ID đã tiếp xúc với người A"? Mục tiêu của hệ thống truy vết là đi tìm các ID này mà.
Kha Nguyen said…
anh Thái: Em nghĩ cái này rõ ràng mà...

Giả sử chị B có tiếp xúc gần với anh B, thì 2 người sẽ trao đổi ID (cái được sinh ngẫu nhiên), khi đó máy anh A lưu lại ID của chị B và ngược lại. Như vậy máy A có lưu 2 danh sách: các ID của anh A và các ID đã tiếp xúc với anh A. Và thay vì broadcast cái thứ nhất thì broadcast cái thứ hai.

À, bổ sung một cái lợi nữa:

3, là sẽ chống được false alarm một chút. Trong trường hợp cho broadcast ID của A, kẻ tấn công thu thập ID của A và broadcast như là anh A bị nhiễm, việc này khiến những người có tiếp xúc với A (lúc A chưa đổi ID, trong 15 phút đủ để A đi từ ga tàu điện đến siêu thị - nơi giả định có máy theo dõi bluetooth) bị thông báo là "nghi ngờ nhiễm". Trong trường hợp ngược lại, chỉ broadcast ID đã tiếp xúc với A, thì cùng lắm là kẻ tấn công tạo false alarm cho anh A thôi, mà không thể tấn công vào người khác nữa.
Thai Duong said…
>Giả sử chị B có tiếp xúc gần với anh B, thì 2 người sẽ trao đổi ID (cái được sinh ngẫu nhiên), khi đó máy anh A lưu lại ID của chị B và ngược lại. Như vậy máy A có lưu 2 danh sách: các ID của anh A và các ID đã tiếp xúc với anh A. Và thay vì broadcast cái thứ nhất thì broadcast cái thứ hai.

Àh, ý này hay đó. So với cách làm hiện giờ thì nó sẽ tăng lượng dữ liệu mà người dùng phải tải về. Giả sử làm theo thiết kế của DP3T, thay vì tải về 14 daily keys của A, thì sẽ phải tải về tất cả tất cả IDs mà A sẽ thấy. Thử nghiệm cho thấy sẽ có khoảng vài trăm ID, tức là lượng dữ liệu sẽ tăng cỡ vài chục lần.

Nhưng hiện giờ tôi biết nhiều nơi đang chuyển sang xu hướng thay vì chia sẻ daily keys của A thì sẽ chia sẻ những ID của A tạo ra từ daily keys. Nếu như vậy thì ý của bạn sẽ giúp tiết kiệm một chút. Để tôi coi lại xem về an ninh và riêng tư thì sẽ thay đổi như thế nào.

Rất cảm ơn bạn đã chia sẻ ý tưởng này.
Kha Nguyen said…
Em không rành các giải pháp như DP3T làm thế nào. Cũng không thường xuyên theo dõi các convo liên quan. Nhưng nếu anh submit cái này đi đâu thì để lại link ở đây giúp em, em cũng muốn xem thiên hạ nói chung đánh giá hướng đó thế nào. (Nhiều khi có ai đó làm cách này luôn rồi)
Thai Duong said…
Kha Nguyen: tôi có nói chuyện với team thì nhiều người có lo ngại là anh A phải chia sẻ social graph cho máy chủ. Máy chủ có khả năng biết được những người mà A đã gặp.

Dữ liệu cũng sẽ tăng lên nhiều, chỉ cần 2-3 người sống chung một nhà thì số lượng ID mà mỗi người nhận được sẽ tăng cao. Có một idea là triển khai "safe zone", nghĩa là khi ở nhà thì không thu và gửi IDs nữa, nhưng cho đến nay chưa có làm.

Nếu bạn muốn tiếp tục theo đuổi ý tưởng này, tôi nghĩ bạn nên mở ticket ở đây: https://github.com/DP-3T/documents.
Kha Nguyen said…
> Máy chủ có khả năng biết được những người mà A đã gặp.

Nếu chị B không đưa tất cả các ID của chị lên máy chủ thì máy chủ sẽ không biết được. Và theo em thấy thì không có động lực để làm như vậy. Tất nhiên, nếu cả anh A và anh C đều cùng gặp chị C và cùng có xét nghiệm dương tính để cùng broadcast lên server, thì server có thể nhận ra là anh A và C đã cùng gặp một người vào cùng thời điểm.

Cuộc tranh luận về ý tưởng này có vẻ dẫn tới chuyện xác suất việc trùng hợp thế kia có cao hay không...
NamPtiter said…
Cứ tiếp tục nhé a Thái!
We are allway by your side.
For a Viet Nam better!
Unknown said…
Mạnh mẽ lên anh nhé. Quân địch rất đông và vô cùng hung hãn, không ngại công kích và cả phơi bày sự ngu muội của chính họ :)
Alex said…
Nhân nói về Bluezone với nội hàm là bảo mật thông tin cá nhân, thì mình cũng muốn hỏi thêm quan điểm của a Thái về vấn đề Privacy.
Anh Thái làm về bảo mật ở Google thì cũng rõ các sản phẩm của Google có bảo mật (security) rất tốt. Thế nhưng Privacy (đảm bảo sự riêng tư) của các sản phẩm đó thì lại là một câu chuyện rất khác (Do Model sinh lời của các sản phẩm đó).
Ở VN, vấn đề security quan trọng, nhưng privacy cũng rất quan trọng thì giờ nó là quan hệ giữa chính quyền quản lý với người dân nữa cơ.
Ví dụ: Mình dùng tất các sản phẩm Google mà sử dụng thêm tính năng đồng bộ hóa thì hầu như tất cả các thông tin của mình Google nắm hết. Khi CQ yêu cầu Google trích xuất thông tin đó thì....(anh có thể liên hệ ngay với câu chuyện của Facebook).
Hiện tại có một số sản phẩm trình duyệt quảng cáo rất nhiều về Privacy (Brave, Vivaldi..). Anh có đánh giá về Privacy ở các trình duyệt đó như nào (nếu có)?
Cám ơn Anh.
Phạm Duy An said…
Vụ này có vẻ lộn xộn quá nhể, các bố cứ nháo nhào hết lên
mathe said…
Yes. Và sẽ bớt lộn xộn nếu các bác Bluezone làm đúng trình tự: Tham khảo ý kiến chuyên gia trong và ngoài nước, đưa source code cho cộng đồng tham khảo, rồi mới release beta, rồi mới ra thông cáo báo chí, sau đó mới release chính thức và để cho các bác chính trị như Bộ trưởng lên nói.
Phan Chuong said…
Mã nguồn của Bluezone vẻ không được sync với app release https://phannotes.home.blog/2020/05/09/bluezone-co-thuc-su-minh-bach-code-cua-minh/
Kha Nguyen said…
@Phan Chuong: Tôi đã hỏi, và đã có câu trả lời ở đây: https://github.com/BluezoneGlobal/bluezone-app/issues/13

Họ chỉ đơn giản là để dev làm riêng, và sẽ merge lại sau đó. Quy trình có vẻ không giống với cách giới open source thường làm, nhưng mình nghĩ bước đầu thế là tốt.
Unknown said…
Thỉnh thoảng đọc, nhưng bổ ích. Cảm ơn Thái.

Ngay từ đầu mình đã không dùng, còn ai dùng kệ họ.
Với đa số người không chuyên, việc lộ ID chả là gì cả, thông cảm cho họ đi và đừng xóa comments, để vậy mình có thêm một thông tin về các user đó để tránh.

Mình sợ nhất sau vụ dịch COVIS, BZ sẽ dùng để theo dõi mình có hay đi cafe với tụi bạn hay chửi CP hay không (Mình không chửi, bạn mình chửi). Hehe
Unknown said…
cảm ơn anh Thái đã dành thời gian để có thể cải thiện kĩ năng các dev nước nhà, chúng em cần lắm những người đàn anh đi trước như anh , người có đủ tầm và tâm để review như thế.
em ko làm dự án đó nhưng từ những bài báo anh viết, e có thể biết và né những phản ảnh từ chuyên gia như anh.
em chúc anh sức khỏe và luôn có thời gian để quan tâm tới công nghệ thông tin nước nhà, giúp thế hệ trẻ đọc block của anh lun có kiến thức mới cũng như sẽ ko lặp lại những sai lầm của người đi trước.
Chúc anh và gia đình sức khỏe, em thấy rất vui sướng khi việt nam có những người có tầm và tâm như anh chia sẻ và dẫn dắt lớp trẻ quê hương