Đây là câu chuyện về cách Corey Fields, một trong những nhà phát triển đáng kính của Bitcoin Core (cùng với Gavin Andresen), làm việc cho Sáng kiến tiền kỹ thuật số tại MIT Media Lab, phát hiện và báo cáo lỗ hổng nghiêm trọng trong Bitcoin Cash, nguyên nhân khiến BCH Blockchain phân đôi. Điều quan trọng cần lưu ý là lỗi hiện tại cố định chỉ ảnh hưởng đến Bitcoin Cash (BCH) chứ không ảnh hưởng đến Bitcoin (BTC). Mặc dù lỗi này được báo cáo vào tháng 4/2018 và được sửa vào tháng 5/2018, nhưng chỉ đến ngày 9/8/2018, Corey mới quyết định kể câu chuyện của mình trong một bài đăng trên Medium blog của DCI.
Mặc dù Corey làm việc cho Sáng kiến tiền kỹ thuật số của MIT Media Lab (DCI), một cộng đồng nghiên cứu với mục tiêu là “tập hợp những người thông thái nhất tại MIT và các nơi khác để tiến hành nghiên cứu cần thiết để hỗ trợ phát triển công nghệ Blockchain và kỹ thuật số.” Cụ thể hơn, trách nhiệm chính của Corey là “giúp phát triển và duy trì Bitcoin Core, triển khai phần mềm chính của Bitcoin”.
Corey giải thích rằng lý do ông kể câu chuyện này không phải là để cười nhạo Bitcoin Cash, mà là nâng cao nhận thức về mối đe dọa do lỗi phần mềm gây ra cho không gian mật mã:
” Quá trình sửa chữa lỗi mà có khả năng gây nên thảm họa nghiêm trọng, đã tái khẳng định niềm tin của tôi rằng mối đe dọa của lỗi phần mềm đang bị đánh giá thấp trong thế giới tiền kỹ thuật số. Tôi trình bày một báo cáo chi tiết về vụ việc này như một ví dụ thực tế về việc cần phải nỗ lực bao nhiêu để đạt được trình độ kỹ thuật tinh vi mà tiền mã hóa yêu cầu, và như một lời cảnh báo đối với các công ty chưa chuẩn bị đầy đủ cho loại kịch bản này.”
Lỗi này là gì?
“Tóm lại, một phần mã xác minh chữ ký giao dịch đã được viết lại, nhưng mã mới bỏ qua một kiểm tra quan trọng về một bit cụ thể trong kiểu chữ ký. Tôi tham khảo bit đó trong tiết lộ như SIGHASH_BUG. Sự thiếu sót này sẽ đặc cách giao dịch thủ công, cho phép chúng tách Blockchain Bitcoin Cash thành hai chuỗi không tương thích.”
Lỗi phân chuỗi
- “Phần mềm được giao nhiệm vụ thực thi các quy tắc xác nhận sẽ luôn cần tiến hóa phát triển. Thay đổi liên tục được thực hiện để cải thiện hiệu suất, thêm tính năng, cải thiện bảo mật, vv… Tuy nhiên, điều quan trọng là các quy tắc được thực thi theo một cách giống nhau từ phiên bản đầu đến phiên bản tiếp theo.”
- “Vì vậy, điều gì sẽ xảy ra khi một lỗi lập trình ngẫu nhiên trong một phiên bản mới của phần mềm làm cho một giao dịch được coi là hợp lệ khi tất cả các phiên bản trước đó của phần mềm từ chối nó là không hợp lệ? Kết quả xảy ra chính là” tách chuỗi “, và nó có nghĩa là chỉ có tập con của những người tham gia đã nâng cấp phần mềm của họ mới chấp nhận giao dịch được do các giao dịch và các khối được ghép lại với nhau, hai tập hợp con sẽ từ chối mọi giao dịch sau đó. Nếu không có động thái nhanh chóng từ các nhà phát triển để điều chỉnh những người tham gia ở một bên fork thì tất cả mọi người sẽ bị từ chối. Vào thời điểm đó, đồng tiền đã được chia thành hai loại tiền tệ không tương thích – giao dịch như trước đây sẽ không còn khả thi nữa.”
Cách phát hiện lỗi
Bởi vì Bitcoin Core là mã nguồn mở, miễn phí, và được thử nghiệm tốt, nó được sử dụng như là điểm khởi đầu cho nhiều loại tiền mã hóa mới. Việc thực hiện phần mềm chính của Bitcoin Cash, Bitcoin ABC, dựa trên Bitcoin Core.
Bởi vì các dự án phái sinh này thường có các lỗi tương tự (và sửa lỗi), Corey thường xem xét mã nguồn của các dự án này để xem có lỗi sửa chữa nào nên được tích hợp vào mã Bitcoin Core hay không.
Vào tháng 4, trong khi Corey đang nghiên cứu các bản ghi thay đổi của Bitcoin ABC, ông nhận thấy một phần quan trọng trong mã xác nhận giao dịch của Bitcoin ABC đã được “tái cấu trúc” (tức là sửa đổi để cải thiện khả năng bảo trì hơn là thay đổi chức năng) và chỉ có hai người nhận ra sự thay đổi trước khi nó được chấp nhận.
Corey quyết định kiểm tra mã này vì một số lượng lớn các dòng đã được thay đổi và mã chỉ nhận được một đánh giá tối thiểu. Chỉ sau 10 phút, Corey có thể phát hiện ra lỗi nghiêm trọng.
Cách báo cáo lỗi
Nếu Corey trực tiếp báo cáo lỗi cho nhóm phát triển Bitcoin ABC và một nhân viên đã sửa lỗi trong một thời gian ngắn sau đó, Corey có thể bị buộc tội là kẻ tấn công, và vì hàng tỷ USD có thể đã bị mất do tấn công mạng.
Vì vậy, không quan tâm đến sự an toàn của anh ta, Corey quyết định tìm một phương thức tiết lộ hoàn toàn ẩn danh.
Vì Bitcoin ABC không có chính sách “tiết lộ trách nhiệm” chính thức, Corey phải tìm các khóa mã hóa đã được xuất bản cho một trong những nhà phát triển Bitcoin ABC hàng đầu để anh ta có thể gửi cho người nào đó một thông điệp được mã hóa.
Cuối cùng, vào ngày 25/04/018, thông qua một lời kêu gọi về GitHub, Corey đã có thể nắm giữ public key PGP gửi cho một trong những nhà phát triển Bitcoin ABC, sau đó ông đã sử dụng để gửi một tin nhắn được mã hóa tới trình theo dõi lỗi của Bitcoin ABC vào ngày 26/04/2018.
Vào ngày 27/04/2018, Corey phát hiện ra rằng báo cáo của ông về lỗi đã được nhận do ông thấy trên GitHub “yêu cầu” sửa lỗi đã được mở ra. Nhóm Bitcoin ABC đã khắc phục lỗ hổng này và họ đã tiết lộ công khai vào ngày 07/05/2018. Phản hồi từ nhóm Bitcoin ABC Hôm qua, nhóm Bitcoin ABC đã bày tỏ lòng biết ơn của họ đối với Corey về cách ông đã xử lý tình huống này.
- Tại sao các cố vấn đầu tư mong đợi Bitcoin sẽ đạt $ 17,570 vào năm 2023?
- [Series] Sống bằng Bitcoin (Ngày 1): “Nó sẽ chẳng đi đến đâu cả”
- Bitcoin 2029: 10 năm nữa sẽ như thế nào?