Securityadvancedarticle25 min read

Hack Badger DAO: 120 triệu USD bị đánh cắp thông qua lỗ hổng Front-End | VCC

Ngày 2 tháng 12 năm 2021, BadgerDAO – nhà tổng hợp lợi nhuận Bitcoin lớn nhất trên Ethereum – phát hiện ra rằng 120 triệu đô la đã biến mất khỏi khoảng 100 ví người dùng. Các hợp đồng không bị ảnh hưởng, các kho đã được kiểm toán, và không có bất kỳ private key nào bị đánh cắp. Điều bị phá vỡ là

Vietcardano teamTeam

Đội ngũ biên tập VietCardanoCommunity — các chuyên gia blockchain và Cardano, cung cấp nội dung giáo dục và nghiên cứu chuyên sâu cho cộng đồng.

Published 14 tháng 9, 2026

Ngày 2 tháng 12 năm 2021, BadgerDAO – nhà tổng hợp lợi nhuận Bitcoin lớn nhất trên Ethereum – phát hiện ra rằng 120 triệu đô la đã biến mất khỏi khoảng 100 ví người dùng. Các hợp đồng không bị ảnh hưởng, các kho đã được kiểm toán, và không có bất kỳ private key nào bị đánh cắp. Điều bị phá vỡ là trang web. Trong 22 ngày, một đoạn mã độc hại được chèn vào thông qua một khóa API của Cloudflare đã âm thầm thay đổi mọi giao dịch mà người dùng chấp thuận trên app.badger.com, thay thế khoản tiền gửi trong kho của nạn nhân bị tấn công Badger DAO hack bằng một approval mã thông tin vô hạn cho một địa chỉ được kiểm soát bởi attacker. Khi các approval được rút sau đó bằng transferFrom, blockchain đã làm chính xác những gì được yêu cầu – vì sự nói dối đã xảy ra trong trình duyệt, không phải trên chuỗi. Hiểu tại sao sự kiện phá vỡ giao diện trước của DeFi này thành công – và tại sao Content-Security-Policy, Subresource Integrity và các mã thông tin API có quyền hạn thấp nhất sẽ ngăn chặn nó – lại đặt lại khung bảo mật DeFi cho mỗi nhóm vẫn xem trang web của mình như là một chiến lược tiếp thị hơn là một giới hạn tin cậy.

BadgerDAO làm gì và tại sao kho Bitcoin của nó trở thành mục tiêu hấp dẫn

BadgerDAO được ra mắt vào cuối năm 2020 với một mục tiêu duy nhất: các chủ sở hữu Bitcoin muốn nhận lợi tức mà không cần rời khỏi tài sản BTC của họ. Thông qua giao thức, Badger đã xây dựng Setts – các kho chứa lợi tức trên Ethereum, chấp nhận các tài sản gắn với Bitcoin (wBTC, renBTC, ibBTC) và các mã thông báo LP Curve, sau đó tự động tích lũy các phần thưởng của Curve, Convex và Badger. Đến tháng 11 năm 2021, Badger đã quản lý tổng giá trị bị khóa khoảng 1,5 tỷ USD, với các kho Curve bveCVX và ibBTC / renBTC chứa lượng tiền BTC ổn định mà rất ít nhà cung cấp dịch vụ khác có thể so sánh.

Hai đặc điểm đã làm cho Badger trở thành một mục tiêu frontend có giá trị độc nhất. Thứ nhất, người dùng của nó là những người BTC whale – ví chứa 50–1,000+ wBTC (mỗi wBTC có giá trị khoảng 55,000 USD vào thời điểm đó), không phải là những người dùng cá nhân. Một sự đồng ý bị xâm phạm có thể có giá trị 50 triệu USD. Thứ hai, các token của kho của Badger (bveCVX, bCRV, bBadger, ibBTC LP) là các ERC-20 hoạt động giống như tiền – một khi attacker giữ một sự đồng ý vô hạn, transferFrom có thể hoạt động ở bất kỳ khối tương lai nào mà không cần tương tác người dùng thêm. Không có khóa thời gian trên một khoản cho phép, không có thiết bị phân phối cấp kho, và không có việc tạm dừng phát hành (không giống như USDT, wBTC không thể được tạm dừng một cách trung tâm). Trang frontend là điểm hẹp nhất kiểm soát giá trị rộng nhất.

Điều quan trọng là các hợp đồng của Badger đã được kiểm toán (Haechi, 2021) và không có lỗi lặp lại hoặc lỗi kế toán. Việc khai thác không cần lỗi hợp đồng vì nó không bao giờ chạm đến logic hợp đồng – nó nhận được các approval hợp pháp thông qua giao diện người dùng bị xâm phạm, sau đó sử dụng các hợp đồng chính xác như đã thiết kế. Điểm khác biệt này là lý do tại sao các danh sách kiểm tra sau khi chết cho các giao thức cho vay và kho bây giờ phân tách "kiểm toán hợp đồng" và "thẩm tra giới hạn tin cậy giao diện trước" làm hai cổng độc lập.

Diagram - BadgerDAO architecture: user wallet connecting via app.badger.com frontend trust boundary to Setts holding wBTC/ibBTC and Curve LP assets that the frontend approvals controlled

Thời gian: 22 ngày trong trang web trước khi ai đó phát hiện ra

Sự xâm nhập của Badger DAO là một cuộc xâm nhập theo phong cách APT – sự bền vững quan trọng hơn tốc độ.

10 tháng 11, 2021 — attacker, sau khi lấy được khóa API của Cloudflare thuộc về một kỹ sư của BadgerDAO, đã sử dụng API của Cloudflare để tạo hoặc chỉnh sửa một đường dẫn Cloudflare Worker trên api.badger.com. Worker đã chèn khoảng 40 dòng JavaScript bị che giấu vào mỗi phản hồi được cung cấp bởi app.badger.com. Badger sau đó xác nhận rằng khóa có phạm vi rộng (sửa Workers + Zone, không có danh sách IP cho phép, không có lịch quay vòng và không có cổng MFA khi sử dụng API). Sự chèn đã hoạt động kể từ ngày này, nhưng các biện pháp khắc phục đã được triển khai để tránh phát hiện sớm.

10 tháng 11 – 1 tháng 12, 2021 (thời gian tồn tại) — Mã được chèn chạy trong trình duyệt của mỗi người truy cập. Nó bao quanh window.ethereum.request, chặn eth_sendTransaction và eth_sign, và — khi người dùng gửi một khoản tiền hợp lệ — thầm thay thế hoặc bổ sung một approve(attackerContract, 0xfff…fff) (MAX_UINT / approval vô hạn) cho bất kỳ token nào trong ví, sau khi gọi eth_call để kiểm tra số dư và mục tiêu các chủ sở hữu lớn. Giao diện người dùng vẫn hiển thị chi tiết giao dịch mong đợi; địa chỉ người chi của approval (do attacker kiểm soát) không bao giờ được hiển thị dưới dạng cảnh báo dễ đọc. Trong hơn ba tuần, hơn 100 ví đã tích lũy các quyền chấp thuận vô hạn cho các hợp đồng của attacker. attacker đã thay đổi địa chỉ người chi một lần trong thời gian tồn tại để phân chia rủi ro.

2 tháng 12, 2021, ~00:00–06:00 UTC — Các thành viên cộng đồng trên Discord báo cáo về các hoạt động transferFrom không được phép. Trên chuỗi, attacker đã bắt đầu thu thập các phiếu chấp thuận tích lũy theo từng lô — không phải tất cả cùng một lúc, để giữ cho mức gas và biểu đồ TVL luôn ổn định. Người bị hại lớn nhất đã mất khoảng 50 triệu USD (wBTC + token kho).

2 tháng 12, 2021, ~09:00 UTC — BadgerDAO phát hiện được lỗ hổng hoạt động, ngừng hoạt động tất cả kho và smart contract thông qua chức năng quản trị pause(), và đưa app.badger.com ra khỏi hoạt động. Khóa API của Cloudflare đã bị hủy, các Worker đã bị xóa, và hash của mã độc đã được công bố để xác minh. Không có thêm tiền nào bị rút sau khi ngừng hoạt động.

2–3 tháng 12, 2021 — PeckShield, BlockSec và SlowMist đã công bố các bài viết độc lập về nguyên nhân sâu sau vài giờ, tất cả đều tập trung vào khóa API của Cloudflare → chèn Worker → chuỗi approval vô hạn. Phân tích hack bằng dao badger đã được củng cố từ giả thuyết đến sự đồng thuận trước khi có bài viết hậu quả chính thức.

10 tháng 12, 2021 — BadgerDAO đã đăng bài phân tích kỹ thuật sau khi xảy ra sự cố trên Medium: Cloudflare API key bị xâm phạm đã được xác nhận, chi tiết về việc chèn, địa chỉ của attacker và một kế hoạch khắc phục (CSP, SRI, phạm vi token, canary frontend). Một khung thanh toán do Quỹ tài chính tài trợ đã được đề xuất trong các bài viết về quản trị sau đó.

2022–2023 — Kiểm tra pháp y (SlowMist, Chainalysis) theo dõi các khoản tiền được tích lũy và gửi vào tài khoản Tornado Cash trong khoảng 100 lô ETH. Trong số 120 triệu USD, khoảng 70 triệu USD trở lên đã bị làm mờ qua máy trộn vào tháng 1 năm 2022; cấu trúc chủ yếu là BTC khiến việc rửa tiền trở nên phức tạp hơn vì wBTC phải được giải nén và kết nối trước khi trộn. Không có danh tính của attacker được xác nhận công khai; không có khoản tiền nào được trả lại.

Timeline - Badger DAO hack timeline: Nov 10 Worker injection, 22-day stealth dwell with selective approvals, Dec 2 detection and vault pause, Dec 10 post-mortem disclosure

Số liệu: 120 triệu USD đi đâu và tại sao nó tập trung vào BTC

Tiêu đề tròn lại thành 120 triệu đô la, nhưng việc kiểm tra lại các nhà tổng hợp cho thấy sự khác biệt dự kiến theo giá chụp nhanh. PeckShield đưa ra 120,3 triệu đô la, BadgerDAO cho biết 120 triệu đô la, và Rekt báo cáo 120 triệu đô la – sự khác biệt tương ứng với giá trong ngày của BTC (53.000 – 57.000 đô la vào ngày 2 tháng 12 năm 2021). Sử dụng 120 triệu đô la với sự khác biệt được ghi nhận; độ chính xác vượt quá đó phụ thuộc vào chụp nhanh.

Sản phẩmGiá trị
Thiệt hại chủ yếu~$120 triệu (~$120–121 triệu theo snapshot USD)
Máu chiến được tính bằng BTC~2,100 BTC (wBTC + ibBTC_interest-bearing) ≈ 85–90 triệu USD
BADGER + LP bảo tàng~151 BADGER + bBadger / bveCVX / bCRV / ibBTC Curve LP ≈ 25–30 triệu USD
ERC-20 còn lạiDIGG, renBTC LP, các hóa đơn kho chứa khác ≈ 5 triệu USD
Tài khoản bị ảnh hưởng~100 với các approval vô hạn; ~10 với thiệt hại > 1 triệu USD
Người bị hại lớn nhất~$50 triệu (wBTC của cá voi đơn lẻ + token sett)
Việc vay bằng Flash có liên quan không?Không – đây không phải là một cuộc tấn công bằng khoản vay nhanh; các approval được thu thập trong nhiều tuần
Tiền đã được hoàn trả$0 (0% phục hồi) — do attacker kiểm soát, không có lệnh tạm dừng của nhà phát hành
Ai chịu thiệt hạiNgười dùng ban đầu; Khung thanh toán tài chính/hành chính của Badger được đề xuất

Ba điểm khác biệt giữa các số này với các tổn thất khác trong năm 2021. Thứ nhất, ~75% giá trị được liên kết với BTC, không phải là stablecoin – trái ngược với các vụ khai thác cho vay như Cream Finance (130 triệu USD trong các lĩnh vực khác nhau). Giá BTC vào cuối năm 2021 có nghĩa là mỗi cá voi bị đánh cắp có giá trị hàng chục triệu USD. Thứ hai, tỷ lệ tập trung theo nạn nhân rất cao: 10 ví lớn nhất chiếm khoảng 60% tổng số, vì mã lệnh được chèn ưu tiên các số dư lớn thông qua kiểm tra balanceOf trước khi yêu cầu approval. Thứ ba, vì wBTC và ibBTC không thể được đóng băng như USDT của Tether (khi Tether đã đóng băng 33 triệu USD trong vụ tấn công mạng Poly), không có điểm chặn trên chuỗi để thu hồi tiền sau cuộc thanh lý – một khi transferFrom được thực hiện, tài sản trở thành thuộc quyền chủ sở hữu.

Nguyên nhân: Làm thế nào một khóa API của Cloudflare trở thành một nguồn tiền 120 triệu USD cho smart contract

Đây là chuỗi approval mã độc hại gồm bốn liên kết. Bất kỳ một liên kết nào cũng bị phá vỡ, và 120 triệu đô la sẽ không bị mất.

1. Khóa API Cloudflare có tuổi thọ dài, phạm vi rộng

Thông tin chứng thực bị xâm phạm là chìa khóa API toàn cầu hoặc token API có phạm vi thuộc về một kỹ sư có quyền truy cập Workers Scripts:Edit + Zone:Edit. Nó không có danh sách IP cho phép, không có thời hạn TTL ngắn, không có lịch sử thay đổi, và — quan trọng hơn — API của Cloudflare không yêu cầu MFA cho việc sử dụng chìa khóa ngay cả khi tài khoản có MFA cho việc đăng nhập. Trong thực tế, bất kỳ ai có được chuỗi đó có thể thay đổi bất kỳ đường dẫn được proxy bởi Cloudflare cho các miền của Badger. Báo cáo của Badger rõ ràng phân biệt điều này với "Cloudflare bị hack", tức là cơ sở hạ tầng của Cloudflare không bị xâm phạm; một chìa khóa có phạm vi đã bị lạm dụng, giống như một chìa khóa GitHub bị rò rỉ có thể thay đổi một kho lưu trữ.

2. Cloudflare Worker được chèn vào api.badger.com

Dùng API, attacker đã tạo hoặc cập nhật một Worker Cloudflare gắn với đường dẫn api.badger.com (cùng tên miền cung cấp API cho giao diện trước và, thông qua Workers, có thể được chèn vào các phản hồi của app.badger.com). Worker đã thêm một thẻ