Phân tích kỹ thuật: Vụ hack Balancer 120 triệu USD và lỗ hổng bảo mật nằm ở đâu?

By: blockbeats|2025/11/04 12:00:02
0
Chia sẻ
copy
Tiêu đề bài viết gốc: "Phân tích kỹ thuật lỗ hổng vụ hack Balancer 120 triệu USD"
Nguồn gốc: ExVul Security

Lời mở đầu

Vào ngày 3 tháng 11 năm 2025, giao thức Balancer đã bị tấn công trên nhiều blockchain bao gồm Arbitrum và Ethereum, dẫn đến thiệt hại 120 triệu USD tài sản. Cuộc tấn công chủ yếu xuất phát từ lỗ hổng kép liên quan đến mất độ chính xác và thao túng bất biến (Invariant).

Cơ sở hạ tầng của Chainlink từ lâu đã duy trì các tiêu chuẩn cao nhất trong không gian Web3, khiến nó trở thành lựa chọn tự nhiên cho X Layer, nơi chuyên cung cấp các công cụ cấp tổ chức cho nhà phát triển.

Vấn đề chính trong cuộc tấn công này nằm ở logic của giao thức khi xử lý các giao dịch nhỏ. Khi người dùng thực hiện trao đổi với số lượng nhỏ, giao thức gọi hàm _upscaleArray, sử dụng mulDown để làm tròn xuống các giá trị. Khi số dư trong giao dịch và số tiền đầu vào đều chạm vào một ngưỡng làm tròn cụ thể (ví dụ: phạm vi 8-9 wei), một lỗi độ chính xác tương đối đáng chú ý sẽ xảy ra.

Lỗi độ chính xác này lan truyền đến việc tính toán giá trị bất biến D của giao thức, gây ra sự sụt giảm bất thường trong giá trị D. Sự biến động của giá trị D trực tiếp làm giảm giá của Balancer Pool Token (BPT) trong giao thức Balancer. Hacker đã khai thác mức giá BPT bị kìm hãm này thông qua một lộ trình giao dịch được tính toán trước để thực hiện kinh doanh chênh lệch giá, cuối cùng dẫn đến tổn thất tài sản lớn.

Giao dịch bị khai thác:

https://etherscan.io/tx/0x6ed07db1a9fe5c0794d44cd36081d6a6df103fab868cdd75d581e3bd23bc9742

Giao dịch chuyển tài sản:

https://etherscan.io/tx/0xd155207261712c35fa3d472ed1e51bfcd816e616dd4f517fa5959836f5b48569

Phân tích kỹ thuật

Vector tấn công

Điểm xâm nhập của cuộc tấn công là hợp đồng Balancer: Vault, với hàm nhập tương ứng là batchSwap, hàm này gọi nội bộ onSwap để trao đổi token.

Phân tích kỹ thuật: Vụ hack Balancer 120 triệu USD và lỗ hổng bảo mật nằm ở đâu?


Từ góc độ tham số và hạn chế của hàm, có thể thu thập được một số thông tin:

1. Kẻ tấn công cần gọi hàm này thông qua Vault và không thể gọi trực tiếp.

2. Hàm sẽ gọi nội bộ _scalingFactors() để lấy hệ số tỷ lệ cho các hoạt động mở rộng.

3. Hoạt động mở rộng tập trung vào _swapGivenIn hoặc _swapGivenOut.

Giá --

--

Phân tích mô hình tấn công

Cơ chế tính giá BPT

Trong mô hình stable pool của Balancer, Giá BPT là điểm tham chiếu quan trọng quyết định lượng BPT người dùng nhận được và lượng tài sản mỗi BPT nhận được.


Trong tính toán trao đổi của pool:


Trong đó phần đóng vai trò là neo giá BPT là một giá trị bất biến D, nghĩa là việc kiểm soát giá BPT đòi hỏi phải kiểm soát D. Hãy phân tích sâu hơn quá trình tính toán D:


Trong đoạn mã trên, quá trình tính toán D phụ thuộc vào mảng số dư đã được mở rộng. Điều này có nghĩa là cần một hoạt động để thay đổi độ chính xác của các số dư này, dẫn đến tính toán D không chính xác.

Nguyên nhân gốc rễ của việc mất độ chính xác

Hoạt động mở rộng:

Như đã hiển thị ở trên, khi đi qua _upscaleArray, nếu số dư rất nhỏ (ví dụ: 8-9 wei), việc làm tròn xuống trong mulDown sẽ dẫn đến mất độ chính xác đáng kể.

Chi tiết quá trình tấn công

Giai đoạn 1: Điều chỉnh đến ngưỡng làm tròn

Giai đoạn 2: Kích hoạt mất độ chính xác (Lỗ hổng cốt lõi)

Giai đoạn 3: Khai thác giá BPT bị kìm hãm để kiếm lợi nhuận

Ở trên, kẻ tấn công sử dụng Batch Swap để thực hiện nhiều trao đổi trong một giao dịch:

1. Trao đổi đầu tiên: BPT → cbETH (điều chỉnh số dư)

2. Trao đổi thứ hai: wstETH (8) → cbETH (kích hoạt mất độ chính xác)

3. Trao đổi thứ ba: Tài sản cơ bản → BPT (chốt lời)

Tất cả các trao đổi này xảy ra trong cùng một giao dịch batch swap, chia sẻ cùng một trạng thái số dư, nhưng mỗi trao đổi gọi _upscaleArray để sửa đổi mảng số dư.

Thiếu cơ chế gọi lại

Quá trình chính được khởi tạo bởi Vault. Điều này dẫn đến việc tích lũy mất độ chính xác như thế nào? Câu trả lời nằm ở cơ chế truyền mảng số dư.


Nhìn vào đoạn mã trên, mặc dù Vault tạo một mảng currentBalances mới mỗi khi onSwap được gọi, trong Batch Swap:

1. Sau lần swap đầu tiên, số dư được cập nhật (nhưng do mất độ chính xác, giá trị cập nhật có thể không chính xác)

2. Lần swap thứ hai tiếp tục tính toán dựa trên kết quả của lần đầu tiên

3. Mất độ chính xác tích lũy, cuối cùng khiến giá trị bất biến D giảm đáng kể

Vấn đề chính:


Tóm tắt

Cuộc tấn công Balancer có thể được tóm tắt vì các lý do sau:

1. Hàm mở rộng sử dụng làm tròn xuống: _upscaleArray sử dụng mulDown để mở rộng, dẫn đến mất độ chính xác tương đối đáng kể khi số dư rất nhỏ (ví dụ: 8-9 wei).

2. Tính toán giá trị bất biến nhạy cảm với độ chính xác: Việc tính toán giá trị bất biến D dựa trên mảng số dư đã mở rộng, và mất độ chính xác ảnh hưởng trực tiếp đến việc tính toán D, khiến D giảm.

3. Thiếu xác thực thay đổi giá trị bất biến: Trong quá trình swap, không có xác thực nào để đảm bảo rằng sự thay đổi trong giá trị bất biến D nằm trong phạm vi hợp lý, cho phép kẻ tấn công liên tục khai thác mất độ chính xác để kìm hãm giá BPT.

4. Tích lũy mất độ chính xác trong Batch Swaps: Trong cùng một batch swap, mất độ chính xác từ nhiều lần swap tích lũy và cuối cùng dẫn đến tổn thất tài chính đáng kể.

Hai vấn đề này—mất độ chính xác và thiếu xác thực—kết hợp với thiết kế cẩn thận của kẻ tấn công về các điều kiện biên, đã dẫn đến tổn thất này.

Bài viết này là một đóng góp và không đại diện cho quan điểm của BlockBeats.

Bạn cũng có thể thích

Giấc mơ khám phá Sao Hỏa của SuperEx: Tiền kỹ thuật số là chìa khóa mở ra các giao dịch kinh tế trong kỷ nguyên liên sao

SuperEx luôn kêu gọi các sàn giao dịch không nên tập trung vào tranh chấp và cạnh tranh nội bộ, mà hãy cùng nhau thúc đẩy sự phát triển của tiền kỹ thuật số, trở thành động lực cho kỷ nguyên liên sao trong tương lai.

Tin sáng | Michael Saylor cho biết tuần này ông đã mua trái phiếu thay vì Bitcoin; StablR bị tấn công và mất khoảng 2,8 triệu USD; Quốc hội Mỹ tiếp tục thúc đẩy Đạo luật Dự trữ Bitcoin

Tổng quan các sự kiện thị trường quan trọng ngày 24 tháng 5

Điểm tin chính: Toàn văn bài phát biểu của Giám đốc Khoa học Google Shanahan

Bài phát biểu tại London của Giám đốc Khoa học Google DeepMind, Shanahan: Giải cấu trúc các thuộc tính tinh thần của các mô hình ngôn ngữ lớn (LLM) bằng khung lý thuyết của Wittgenstein, phân tích xu hướng "tự nhận thức xa lạ" trong bối cảnh các tác nhân hoạt động mọi thời điểm.

Các mô hình thiết kế Agent: Cuốn sách khiến tôi phải suy ngẫm lại "Chính xác thì Agent là gì?"

Giám đốc Kỹ thuật của Google phân tích sâu sắc trong cuốn sách mới: 21 mô hình thiết kế cho AI Agent. Bài viết này tiết lộ sự tiến hóa cốt lõi từ "LLM thuần túy" đến các tác nhân thông minh tiên tiến, chi tiết hóa Kỹ thuật Ngữ cảnh (Context Engineering), cơ chế phản tư kép của Agent (Producer-Critic) và mô hình bộ nhớ ba lớp, v...

Chủ tịch Cục Dự trữ Liên bang giàu nhất trong 112 năm đã xuất hiện: Kevin Warsh đang viết lại các quy tắc

Tân chủ tịch "giàu nhất" của Cục Dự trữ Liên bang, Kevin Warsh, đã chính thức nhậm chức. Đề xuất thay thế của ông về "thu hẹp bảng cân đối kế toán + cắt giảm lãi suất" không chỉ nhằm định hình lại cơ chế ra quyết định mà còn gây ra những xáo trộn sâu sắc đối với Bộ Tài chính Hoa Kỳ, đồng USD và toàn cầu...

Vitalik chia sẻ về tương lai của Ethereum Foundation: một con tàu nhỏ gọn hơn, khác biệt hơn nhưng bền bỉ hơn

Vitalik đã trình bày chi tiết quan điểm cá nhân về định hướng chuyển đổi của Ethereum Foundation: EF không phải là "trung tâm của Ethereum" mà là một trong nhiều nút mạng. Với nguồn lực hạn chế, EF chọn chủ nghĩa dài hạn thay vì dàn trải, tập trung vào các nhiệm vụ then chốt mà "nếu không có EF thì sẽ không thể thực hiện được"—...

Coin thịnh hành

Tin tức crypto mới nhất

Đọc thêm
iconiconiconiconiconiconicon
Bộ phận CSKH:@weikecs
Hợp tác kinh doanh:@weikecs
Giao dịch Định lượng & MM:bd@weex.com
Chương trình VIP:support@weex.com