
150 kho mã Bitcoin bị quét, hơn chục lỗ hổng lộ diện: AI mã nguồn mở là cứu tinh hay mối đe dọa?
Một nhóm tình nguyện viên bảo mật vừa công bố kết quả rà soát 150 kho mã nguồn Bitcoin. Họ phát hiện hơn một chục lỗ hổng, và đang phát triển một nền tảng AI mã nguồn mở để tự động hóa việc đánh giá bảo mật phần mềm. Câu chuyện nghe có vẻ đáng mừng, nhưng tôi lại thấy một sự bất an lớn.
Bạn có thấy FOMO không? Không phải FOMO về giá - mà là FOMO về bảo mật. Khi ai cũng đổ xô vào Bitcoin, rất ít người hỏi: đoạn mã đang chạy trên node của tôi có an toàn không? Tôi đã chứng kiến quá nhiều dự án tự hào 'đã được kiểm tra' nhưng chỉ vài tháng sau là sụp đổ. 150 kho mã, hơn chục lỗ hổng - đó là thành tích, hay là lời cảnh tỉnh?
Cần phải nói rõ: Bitcoin không chỉ là Bitcoin Core. Hệ sinh thái của nó là một mạng lưới khổng lồ gồm các kho lưu trữ: ví di động, ví phần cứng, sàn giao dịch phi tập trung, cầu nối, các triển khai Lightning, sidechain, và những thư viện nhỏ chuyên xử lý chữ ký hoặc mã hóa. Mỗi một kho lưu trữ là một điểm chạm đầu vào. Kẻ tấn công không cần tấn công Bitcoin Core - nó quá khó. Chúng chỉ cần tìm một lỗ hổng trong một thư viện phổ biến mà nhiều ví sử dụng, rồi âm thầm khai thác.
Bối cảnh càng trở nên nghiêm trọng khi thị trường bước vào giai đoạn tăng nóng. Lịch sử 11 năm tôi theo dõi ngành cho thấy: càng FOMO, càng ít người nhìn vào code. Các đội ngũ phát triển chạy đua ra mắt sản phẩm, cắt giảm kiểm thử, và thường đặt niềm tin vào các công ty kiểm toán bên ngoài. Nhưng một bản kiểm toán không phải là sự bảo đảm. Năm 2021, tôi suýt mất một khoản tiền vì một hợp đồng NFT đã được 'audit bởi công ty nổi tiếng' nhưng vẫn có lỗi khiến người dùng mất toàn bộ tài sản. Từ đó, tôi có nguyên tắc: không bao giờ tin vào nhãn mác, chỉ tin vào mã nguồn.
Nhóm tình nguyện này, ngược lại, tiếp cận theo hướng hoàn toàn khác. Họ không bán dịch vụ. Họ không phát hành token. Họ quét 150 kho mã, tìm thấy hơn một chục lỗ hổng, và công bố. Điều đó đáng quý. Nhưng cách họ tiết lộ lỗ hổng như thế nào mới là điều tôi quan tâm.
Trước tiên, hãy nói về các loại lỗ hổng mà một kho mã Bitcoin thường mắc phải. Trong quá trình tham gia rà soát mã nguồn cho các dự án tại Austin, tôi nhận thấy ba nhóm lỗi phổ biến nhất. Một là lỗi số học: các hàm xử lý số tiền dùng số nguyên 64-bit, và một phép tính sai có thể tạo ra tiền từ hư không. Hai là lỗi xác thực: không kiểm tra đúng quyền của người gọi, khiến bất kỳ ai cũng có thể gọi các hàm quản trị. Ba là sử dụng các thư viện đã lỗi thời có lỗ hổng đã biết. Trong 150 kho mã, nếu họ tìm thấy 'hơn một chục' lỗ hổng, rất có thể chúng nằm ở ba nhóm này.
Con số 150 nghe có vẻ lớn, nhưng thực ra chỉ là một giọt nước trong đại dương. Trên GitHub, số kho lưu trữ liên quan đến Bitcoin có thể lên tới hàng chục nghìn. Vậy chiến lược chọn 150 kho mã này rất quan trọng. Tôi nghi ngờ họ chọn những kho mã có ảnh hưởng lớn nhưng ít được kiểm tra, ví dụ như các thư viện Python hoặc JavaScript phổ biến mà nhiều ví sử dụng. Nếu vậy, họ đang nhắm đúng vào những nơi kẻ tấn công cũng sẽ nhắm đến. Volume bắt đầu nhảy. Đó là lúc tôi nhìn vào số lỗ hổng.
Điểm đáng chú ý nhất là nền tảng AI mã nguồn mở. Họ muốn tự động hóa việc rà soát bảo mật phần mềm. Về mặt lý thuyết, điều này có thể giải quyết bài toán thiếu hụt nhân lực bảo mật. Nhưng tôi đã thử nghiệm quá nhiều công cụ tự động hóa tương tự để biết rằng: chúng tạo ra rất nhiều cảnh báo giả. Năm 2020, tôi viết một script Python tự động chốt lời trên Uniswap. Nó hoạt động tốt trong ba tháng, kiếm được 2 ETH. Đến một ngày, gas tăng đột biến, script của tôi thực hiện một giao dịch với phí cao gấp ba lần, nuốt mất 0.2 ETH. Lỗi không nằm ở logic, mà nằm ở việc tôi không đặt ngưỡng dừng khẩn cấp. Một nền tảng AI cũng có thể mắc những lỗi tương tự theo cách tinh vi hơn.
Làm thế nào để huấn luyện một mô hình AI nhận biết các lỗ hổng? Cần dữ liệu về những đoạn mã không an toàn. Nhưng các lỗ hổng thực tế thường hiếm khi được chia sẻ công khai vì các lý do bảo mật. Nếu nhóm này tự tạo dữ liệu bằng cách trộn các mẫu mã an toàn và không an toàn, họ cần sự chính xác rất cao. Tôi từng thấy một công cụ AI tự hào có thể phát hiện lỗi tái nhập trong hợp đồng thông minh, nhưng khi áp dụng vào mã thực tế, nó cho 90% cảnh báo sai. Một nền tảng tương tự cho Bitcoin sẽ gặp phải thử thách lớn hơn, vì mã nguồn Bitcoin thường phức tạp và yêu cầu hiểu biết về giao thức.
Ngoài ra, tôi còn nhớ một vụ việc năm 2010 khi Bitcoin có một lỗi tràn số nguyên nghiêm trọng. Kẻ tấn công có thể tạo ra 184 tỷ Bitcoin từ không khí. Lỗi đó đã được vá, nhưng bài học vẫn còn đó: các hệ thống tiền tệ dựa trên mã nguồn luôn tồn tại những lỗi cực kỳ nguy hiểm mà chỉ có thể tìm thấy dưới áp lực khai thác thực tế. Một công cụ AI có thể tìm thấy các mẫu tương tự nếu được huấn luyện đúng, nhưng nếu không có dữ liệu lịch sử, nó có thể bỏ sót. Tôi từng tham gia một cuộc rà soát mã nguồn cho một dự án nhỏ ở Austin, và chúng tôi tìm thấy một lỗi logic mà ba công cụ tự động khác nhau đều bỏ qua. Lỗi đó nằm ở thứ tự thực hiện các phép tính trong một hàm xử lý phí. Chỉ một con người đọc kỹ mới có thể nhận ra.
Tuy nhiên, nếu họ thực sự làm được, tác động sẽ rất lớn. Tự động hóa rà soát bảo mật có thể hạ thấp rào cản cho các dự án nhỏ. Thay vì phải trả hàng trăm nghìn đô la cho một công ty kiểm toán, họ có thể chạy nền tảng AI này và ít nhất phát hiện ra các lỗi thô thiển. Điều đó sẽ cứu được rất nhiều dự án khỏi những vụ hack đau đớn. Nhưng cũng chính vì vậy, tôi lo lắng cho giai đoạn chuyển tiếp: con người có xu hướng tin tưởng mù quáng vào kết quả do máy đưa ra.
Điều tôi muốn nói ở đây có thể đi ngược lại số đông. Mọi người vỗ tay khen ngợi 'tuyệt vời, có 12 lỗ hổng được tìm thấy'. Nhưng tôi nhìn con số đó theo cách khác. Nếu một nhóm tình nguyện với nguồn lực hạn chế có thể tìm ra 12 lỗ hổng trong 150 kho mã, thì có bao nhiêu lỗ hổng đang ẩn nấp trong hàng nghìn kho mã còn lại mà không ai rà soát? Tỷ lệ 8% là một con số đáng sợ. Có thể nói rằng, kết quả này không chứng minh sự an toàn của hệ sinh thái Bitcoin; nó chứng minh điều ngược lại: chúng ta đang ngồi trên một thùng thuốc nổ.
Hơn nữa, việc tiết lộ công khai các lỗ hổng có thể phản tác dụng. Nếu nhóm này công bố chi tiết trước khi các dự án kịp vá lỗi, họ vô tình cung cấp cho tin tặc một danh sách các mục tiêu sẵn sàng để khai thác. Một quy trình tiết lộ có trách nhiệm thường là báo riêng cho nhà phát triển, chờ vá, rồi mới công khai sau 30-90 ngày. Thông cáo của họ không nói rõ họ đã làm điều đó hay chưa. Nếu họ không tuân thủ, họ không phải là anh hùng, mà là người gây hại.
Nền tảng AI mã nguồn mở cũng có một mặt tối. AI là con dao hai lưỡi. Một công cụ tự động tìm kiếm lỗ hổng được phát hành miễn phí, tin tặc sẽ tải về, chạy trên các repo mục tiêu, và có được danh sách các điểm yếu tiềm năng trong vài giờ. Trước đây, khai thác bảo mật là một nghề đòi hỏi tay nghề cao. Bây giờ, chỉ cần một chiếc máy tính và một chương trình mã nguồn mở. Điều này làm thay đổi hoàn toàn cán cân giữa phòng thủ và tấn công. Và trong một thị trường tăng nóng như hiện nay, ai sẽ là người sử dụng AI trước? Chắc chắn không phải các nhà phát triển đang vội vàng ra mắt sản phẩm. FOMO quay lại rồi - check volume đi. Nhưng lần này, hãy check số lỗ hổng trước khi check volume.
Nền tảng AI này sẽ sớm được phát hành dưới dạng mã nguồn mở. Tôi sẽ theo dõi chặt chẽ, không phải vì tôi tin rằng nó sẽ tìm ra tất cả các lỗi, mà vì tôi muốn xem cộng đồng đón nhận nó ra sao. Liệu nó có trở thành một công cụ tiêu chuẩn trong quy trình phát triển, hay sẽ bị bỏ xó như nhiều công cụ khác? Và quan trọng hơn: bạn có sẵn sàng để một con bot đọc toàn bộ mã nguồn của mình trước khi phát hành không? Nếu không, tại sao không?
Với những nhà phát triển tại Việt Nam và trên toàn thế giới, lời khuyên của tôi rất đơn giản: đừng chờ AI. Hãy tự đọc code của bạn, và hãy thuê người đọc nó với con mắt hoài nghi. Bởi vì trong một thị trường mà mọi thứ đều có thể tăng gấp đôi qua đêm, thứ đáng giá nhất vẫn là sự an toàn của đồng vốn. AI có thể quét 150 kho mã, nhưng nó không thể thay thế được sự thận trọng của con người.