HomeBlogPhân tích tấn công Bybit qua JavaScript và bài học bảo mật
Blockchain Security
News & Trends

Phân tích tấn công Bybit qua JavaScript và bài học bảo mật

CyStack blog 5 phút để đọc
CyStack blog08/03/2025
Locker Avatar

LinhDTM

Locker logo social
Reading Time: 5 minutes

Mới đây, sàn giao dịch tiền mã hóa Bybit đã hứng chịu một cuộc tấn công mạng nghiêm trọng, gây thiệt hại khoảng 1,5 tỷ USD. Đây được xem là vụ trộm tiền kỹ thuật số lớn nhất trong lịch sử. Vậy hacker đã làm thế nào để đánh cắp số tiền khổng lồ từ sàn giao dịch crypto lớn và uy tín bậc nhất thế giới này? Hãy cùng tìm hiểu qua bài viết Phân tích tấn công Bybit qua JavaScript & bài học bảo mật” của tác giả Phuong Nguyen – COO của Công ty Verichains.

bybit


Tổng Quan Vụ Tấn Công Bybit

Vào ngày 21/02/2025, Bybit bị tấn công với thiệt hại hơn 1.4 tỷ USD, chủ yếu từ ví lạnh multisig Ethereum. Cuộc tấn công bắt đầu từ việc chèn mã JavaScript độc hại vào ứng dụng web của Safe.Global, nơi các signers của Bybit thực hiện các giao dịch multisig.
  • Mã độc được nhúng vào app.safe.global thông qua AWS S3/CloudFront bị xâm nhập.
  • Khi người ký (signer) của Bybit truy cập web Safe.Global, mã JavaScript độc hại được thực thi.
  • Mã độc này thao túng các giao dịch multisig, chuyển tài sản vào ví của hacker.

Phân Tích JavaScript Độc Hại

Cuộc tấn công dựa vào việc thay thế các file JavaScript chính của Safe.Global, bao gồm:

  • _app-52c9031bfa03da47.js
  • 6514.b556851795a4cbaa.js

Mã độc hoạt động như sau:

  1. Nhận diện địa chỉ ví multisig của Bybit.
  2. Sửa đổi giao dịch multisig, thay đổi địa chỉ nhận thành ví của hacker.
  3. Thực thi giao dịch và xóa dấu vết bằng cách khôi phục dữ liệu gốc.

Mã độc sửa đổi ba hàm quan trọng:

  1. executeTransaction – thao túng quá trình thực thi giao dịch.
  2. signTransaction – sửa đổi dữ liệu trước khi ký giao dịch.
  3. useGasLimit – thay đổi giới hạn gas để đánh lừa hệ thống kiểm tra bảo mật.

=> Cách thức này giúp hacker kiểm soát giao dịch mà không bị phát hiện ngay lập tức.

Cách Tấn Công Qua JavaScript Hoạt Động

Lý do JavaScript là mục tiêu hấp dẫn cho hacker:

  • Chạy trên trình duyệt của người dùng, có thể bị khai thác nếu nguồn phân phối bị xâm phạm.
  • Có quyền truy cập vào API của ứng dụng web, cho phép thao túng giao dịch mà không cần xâm nhập trực tiếp vào máy chủ.
  • Dữ liệu JavaScript được cache trong trình duyệt, giúp hacker duy trì mã độc ngay cả khi file gốc bị xóa.

=> Trong trường hợp Bybit, hacker đã xâm nhập AWS S3 hoặc CloudFront của Safe.Global để thay thế file JavaScript hợp lệ bằng mã độc.

Các Nguy Cơ Tấn Công JavaScript Phổ Biến

Supply Chain Attack (Tấn Công Chuỗi Cung Ứng)

  • Hacker xâm nhập dịch vụ lưu trữ CDN (như AWS CloudFront, GitHub, npm) và thay thế file JavaScript hợp lệ bằng mã độc.
  • JavaScript bị thay thế có thể đánh cắp thông tin đăng nhập, khóa API, hoặc thực hiện giao dịch trái phép.

Man-in-the-Middle Attack (Tấn Công Trung Gian)

  • Nếu kết nối HTTPS không được bảo mật đúng cách, hacker có thể chặn và thay đổi nội dung JavaScript trước khi nó tải lên trình duyệt của người dùng.

DOM-Based XSS (Cross-Site Scripting)

  • Khi trang web xử lý dữ liệu đầu vào không an toàn, hacker có thể chèn mã JavaScript độc hại trực tiếp vào trình duyệt người dùng.

=> Trong vụ Bybit, hacker đã thực hiện một cuộc tấn công chuỗi cung ứng bằng cách thay đổi file JavaScript trên Safe.Global.

Cách Phòng Chống Tấn Công JavaScript

Bảo Vệ Nguồn JavaScript

  • Sử dụng Subresource Integrity (SRI):
    • Thêm integrity vào <script> để kiểm tra checksum của file.
<script src="https://safe.global/script.js" integrity="sha384-abc123..." crossorigin="anonymous"></script>
  • Triển khai Content Security Policy (CSP):
    • Giới hạn nguồn JavaScript chỉ từ tên miền đáng tin cậy.
Content-Security-Policy: script-src 'self' https://safe.global
  • Quản lý chặt chẽ quyền truy cập vào dịch vụ CDN (AWS, Cloudflare, GitHub, npm).

Kiểm Tra Mã JavaScript Định Kỳ

  • Lưu trữ checksum của tất cả file JavaScript trên server.
  • Dùng công cụ kiểm tra file JavaScript bất thường (Sentry, Diffy, Tripwire).
  • Lập lịch kiểm tra Wayback Machine để phát hiện thay đổi bất thường.

Xác Minh Môi Trường Thực Thi

  • Dùng Web Integrity API để kiểm tra tính hợp lệ của trình duyệt.
  • Chặn tải JavaScript từ nguồn bên thứ ba không xác định.
  • Yêu cầu xác thực người dùng trước khi thực hiện giao dịch quan trọng.

Cách Ứng Phó Khi Bị Tấn Công

  • Xác minh lịch sử thay đổi file JavaScript qua git, S3 logs, CloudFront logs.
  • Xóa toàn bộ cache trình duyệt và CDN.
  • Tạo bản cập nhật khẩn cấp thay thế mã độc.
  • Báo cáo với các cơ quan bảo mật (CERT, Cloudflare, Google Safe Browsing).

Takeaways Quan Trọng

  • Kiểm tra chặt chẽ JavaScript của bên thứ ba – mỗi dòng code có thể là một điểm yếu bảo mật.
  • Bảo vệ môi trường phân phối mã (CDN, GitHub, AWS S3) để tránh bị tấn công chuỗi cung ứng.
  • Sử dụng Subresource Integrity (SRI) và Content Security Policy (CSP) để giới hạn nguồn tải JavaScript.
  • Thường xuyên giám sát lịch sử thay đổi của file JavaScript thông qua Wayback Machine.
  • Luôn giả định rằng mã front-end có thể bị xâm nhập – hãy bổ sung lớp bảo mật ở back-end.

Làm sao để bảo vệ bản thân khỏi những vụ tấn công JavaScript?

Đối với người dùng cá nhân

  • Kiểm tra kỹ địa chỉ ví trước khi gửi tiền – Nếu bạn đang thực hiện một giao dịch quan trọng, đừng tin tưởng hoàn toàn vào những gì hiển thị trên màn hình. Hãy kiểm tra lại địa chỉ ví một lần nữa từ nhiều nguồn khác nhau.
  • Hạn chế sử dụng máy tính lạ để đăng nhập ví tiền số – Hacker có thể cài phần mềm theo dõi hoặc thay đổi nội dung trang web trên máy tính mà bạn không biết.
  • Cập nhật trình duyệt và hệ điều hành thường xuyên – Nhiều lỗ hổng bảo mật đã được sửa trong các phiên bản cập nhật, nhưng nếu bạn không cập nhật, hacker vẫn có thể khai thác chúng.
  • Không bấm vào quảng cáo hoặc tải file không rõ nguồn gốc – Một số phần mềm giả mạo có thể thay đổi cách trang web hoạt động mà bạn không nhận ra.

Đối với công ty và doanh nghiệp

  • Bảo vệ dịch vụ lưu trữ và phân phối mã – Hacker đã tấn công Bybit bằng cách thay đổi JavaScript trên Safe.Global. Các công ty nên bảo vệ nghiêm ngặt CDN, GitHub, AWS S3, nơi lưu trữ các file này.
  • Kiểm tra thường xuyên các file quan trọng – Nếu có bất kỳ thay đổi nào trên trang web hoặc ứng dụng, cần kiểm tra xem chúng có hợp lệ hay không.
  • Sử dụng công nghệ bảo vệ JavaScript – Các kỹ thuật như Subresource Integrity (SRI)Content Security Policy (CSP) giúp giảm rủi ro mã JavaScript bị thay đổi mà không được phát hiện.
  • Giám sát hoạt động bất thường – Nếu có giao dịch hoặc hành vi đáng ngờ, hệ thống cần gửi cảnh báo ngay lập tức.

Bài viết này giúp bạn hiểu cách một cuộc tấn công JavaScript có thể gây ra thiệt hại hàng tỷ đô la, và cách bạn có thể bảo vệ hệ thống của mình khỏi các cuộc tấn công tương tự.

Xem bài viết gốc tại đây.

Nguồn: Phuong Nguyen

CyStack blog

Mẹo, tin tức, hướng dẫn và các best practice độc quyền của CyStack

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.