MrQuậy
Well-Known Member
-
24/09/2013
-
178
-
2.221 bài viết
Lỗ hổng mật mã trong ứng dụng Blockchain trên Android gửi Bitcoin tới địa chỉ sai
Blockchain, một trong những ví Bitcoin được sử dụng phổ biến nhất trên Internet, vừa phải cập nhật gấp ứng dụng trên Android sau khi phát hiện lỗi lập trình mật mã nghiêm trọng có thể khiến người dùng gửi bitcoin tới địa chỉ sai mà không hề cảnh báo.
Lỗ hổng này ảnh hưởng đến những người dùng Blockchain for Android trên phiên bản 4.1 hay cũ hơn của hệ điều hành. Điều nguy hiểm nhất của lỗ hổng này là việc sử dụng kết nối HTTP (không được mã hóa) khi ứng dụng nối tới trang random.org để lấy số ngẫu nhiên phục vụ cho việc sinh khóa bí mật cho các địa chỉ Bitcoin. Kể từ tháng 1/2015, trang random.org yêu cầu sử dụng giao thức HTTPS và trả về mã lỗi 301 (Moved Permanently) khi nhận được các yêu cầu qua HTTP. Điều đó khiến cho các phiên bản lỗi của Blockchain sinh ra khóa bí mật tương ứng với địa chỉ 1Bn9ReEocMG1WEW1qYjuDrdFzEFFDCq43F trong mọi trường hợp (dù người dùng yêu cầu chuyển tiền đến bất kỳ địa chỉ nào khác).
Kết quả là khá nhiều người đã chuyển tiền tới địa chỉ “may mắn” trên. Theo thông tin từ khoản mục trên Bitcoin, chủ của địa chỉ 1Bn9ReEocMG1WEW1qYjuDrdFzEFFDCq43F đã nhận được gần 34 bitcoin từ tháng 1/2015 đến nay (theo tỷ giá hiện thời thì 34 bitcoin có giá trị khoảng 8.100 USD). Nicholas Weaver - một nhà nghiên cứu bảo mật của International Computer Science Institute ở Berkeley, California – nói rằng có thể nhiều người khác đã được hưởng lợi từ lỗi này do việc sử dụng các dịch vụ "tumbler" để che giấu đường đi của bitcoin.
Ngoài ra, trong một số trường hợp, trình sinh số ngẫu nhiên trong Blockchain for Android không thể truy cập dữ liệu ngẫu nhiên để trộn với giá trị ngẫu nhiên lấy từ random.org. Khi đó, thay vì trả lỗi, ứng dụng lại dùng ngay số 256 bit do random.org cung cấp để sinh khóa bí mật – điều khá nguy hiểm cho quá trình mã hóa.
Hiện vẫn chưa rõ nguyên nhân dẫn đến việc người dùng trên Android 4.1 và các phiên bản cũ hơn bị ảnh hưởng trong khi những người khác lại an toàn. Một số người đoán rằng lỗ hổng nằm ở các thiết bị không thể truy cập các giá trị ngẫu nhiên có trong tệp /dev/urandom.
Việc không dùng HTTPS, không phát hiện lỗi 301 được trả về và một số thiết bị không thể lấy giá trị ngẫu nhiên từ hệ điều hành đã cho thấy rất dễ gây lỗi khi tự phát triển các ứng dụng mật mã.
Đây không phải là lỗi mật mã đầu tiên khiến cho người dùng ví điện tử trên Android mất tiền. Khoảng hai năm trước đây, một lỗ hổng mật mã nghiêm trọng trong hệ điều hành Android đã bị lợi dụng đánh cắp số bitcoin trị giá khoảng 5.720 USD từ một ví điện tử.
Lỗ hổng này ảnh hưởng đến những người dùng Blockchain for Android trên phiên bản 4.1 hay cũ hơn của hệ điều hành. Điều nguy hiểm nhất của lỗ hổng này là việc sử dụng kết nối HTTP (không được mã hóa) khi ứng dụng nối tới trang random.org để lấy số ngẫu nhiên phục vụ cho việc sinh khóa bí mật cho các địa chỉ Bitcoin. Kể từ tháng 1/2015, trang random.org yêu cầu sử dụng giao thức HTTPS và trả về mã lỗi 301 (Moved Permanently) khi nhận được các yêu cầu qua HTTP. Điều đó khiến cho các phiên bản lỗi của Blockchain sinh ra khóa bí mật tương ứng với địa chỉ 1Bn9ReEocMG1WEW1qYjuDrdFzEFFDCq43F trong mọi trường hợp (dù người dùng yêu cầu chuyển tiền đến bất kỳ địa chỉ nào khác).
Kết quả là khá nhiều người đã chuyển tiền tới địa chỉ “may mắn” trên. Theo thông tin từ khoản mục trên Bitcoin, chủ của địa chỉ 1Bn9ReEocMG1WEW1qYjuDrdFzEFFDCq43F đã nhận được gần 34 bitcoin từ tháng 1/2015 đến nay (theo tỷ giá hiện thời thì 34 bitcoin có giá trị khoảng 8.100 USD). Nicholas Weaver - một nhà nghiên cứu bảo mật của International Computer Science Institute ở Berkeley, California – nói rằng có thể nhiều người khác đã được hưởng lợi từ lỗi này do việc sử dụng các dịch vụ "tumbler" để che giấu đường đi của bitcoin.
Ngoài ra, trong một số trường hợp, trình sinh số ngẫu nhiên trong Blockchain for Android không thể truy cập dữ liệu ngẫu nhiên để trộn với giá trị ngẫu nhiên lấy từ random.org. Khi đó, thay vì trả lỗi, ứng dụng lại dùng ngay số 256 bit do random.org cung cấp để sinh khóa bí mật – điều khá nguy hiểm cho quá trình mã hóa.
Hiện vẫn chưa rõ nguyên nhân dẫn đến việc người dùng trên Android 4.1 và các phiên bản cũ hơn bị ảnh hưởng trong khi những người khác lại an toàn. Một số người đoán rằng lỗ hổng nằm ở các thiết bị không thể truy cập các giá trị ngẫu nhiên có trong tệp /dev/urandom.
Việc không dùng HTTPS, không phát hiện lỗi 301 được trả về và một số thiết bị không thể lấy giá trị ngẫu nhiên từ hệ điều hành đã cho thấy rất dễ gây lỗi khi tự phát triển các ứng dụng mật mã.
Đây không phải là lỗi mật mã đầu tiên khiến cho người dùng ví điện tử trên Android mất tiền. Khoảng hai năm trước đây, một lỗ hổng mật mã nghiêm trọng trong hệ điều hành Android đã bị lợi dụng đánh cắp số bitcoin trị giá khoảng 5.720 USD từ một ví điện tử.
Nguyễn Anh Tuấn (theo Ars Technica)