Tháng 9 năm 2022, Wintermute – một trong những nhà tạo thị trường thuật toán lớn nhất trong lĩnh vực tiền điện tử – đã mất khoảng 162,5 triệu đô la trong một cuộc tấn công duy nhất. Nguyên nhân gốc rễ không phải là lỗi trong hợp đồng thông minh, lỗ hổng trong cầu nối, hoặc khóa riêng bị xâm phạm theo nghĩa truyền thống. Đó là một người tạo địa chỉ giả danh có tên Profanity đã giảm entropy mã hóa 256 bit của Ethereum xuống một không gian tìm kiếm có thể được thực hiện bằng cách brute force với 48 bit.
Bài viết này phân tích các lỗi kỹ thuật, tác động tài chính và những bài học về an ninh hoạt động mà tất cả các thành viên của DeFi – từ các quy trình đến các người dùng cá nhân – phải nắm rõ.
Sự tấn công trong 60 giây
Thời gian: 16–20 tháng 9 năm 2022 Tổng thiệt hại: ~$162,5 triệu (4,400+ ETH + stablecoins) Nguyên nhân chính: lỗ hổng entropy của trình tạo địa chỉ vanity Profanity Vectơ tấn công: GPU-tăng tốc mật khẩu riêng brute-force Địa điểm nhận tiền: ~60% Tornado Cash, phần còn lại được phân bổ trên các DEX và CEX
Wintermute đã sử dụng Profanity (nguyên mẫu mã nguồn mở do 1inch cung cấp) để tạo một địa chỉ giả tạo bắt đầu bằng "0x0000..." cho ví nóng hoạt động của họ DeFi. Máy tạo số ngẫu nhiên dựa trên CUDA của công cụ này được khởi tạo bằng các đầu vào có entropy thấp (thời gian và ID quá trình), làm giảm khoảng không gian khóa riêng hiệu quả từ 2²⁵⁶ xuống khoảng 2⁴⁸ khả năng. Một kẻ tấn công đã nhận ra mẫu địa chỉ yếu kém, thuê dịch vụ tính toán đám mây GPU (~50–100 USD), lấy lại khóa riêng và cạn kiệt ví một cách có hệ thống trên các nền tảng Uniswap, Curve, 1inch và Balancer.
Hình 1: Dòng thời gian tấn công Wintermute — từ tạo địa chỉ Profanity đến rửa tiền qua Tornado Cash
Wintermute là ai? Context: Tỷ lệ Market Maker
Wintermute không phải là một giao thức DeFi truyền thống. Được thành lập vào năm 2017 bởi Evgeny Gaevoy, nó hoạt động như một nhà tạo thị trường toán học trung tâm cung cấp thanh khoản trên 50+ sàn giao dịch (Binance, Coinbase, Kraken) và các địa điểm DeFi (Uniswap, Curve, Aave). Đến năm 2022, Wintermute quản lý 5-10 tỷ USD trong khối lượng giao dịch hàng ngày và giữ hàng trăm triệu USD trong kho hàng trên các ví nóng và lạnh.
Bối cảnh quan trọng để hiểu vụ hack:
| Đơn vị đo | Mô hình |
|---|---|
| Mức lượng hàng ngày | 5–10 tỷ USD |
| Tài sản được quản lý | Hơn hàng trăm triệu |
| Kết hợp với Exchange | 50+ (CeFi + DeFi) |
| Kích thước nhóm | 100+ (người nghiên cứu, kỹ sư, nhà giao dịch) |
| Tình trạng quản lý | Đã đăng ký với FCA (Anh), đang chuẩn bị cho MiCA (EU) |
Tại sao điều này quan trọng: Wintermute là một công ty tiên tiến, được hỗ trợ bởi các tổ chức và có đội ngũ chuyên gia về mật mã cấp tiến sĩ. Họ có đội ngũ chuyên trách về bảo mật. Nếu các chuyên gia của họ có thể trở thành nạn nhân của một lỗ hổng trong công cụ, mọi tổ chức sử dụng các công cụ mã hóa không được kiểm toán đều có nguy cơ.
Ví tiền bị ảnh hưởng là một ví hoạt động DeFi – được sử dụng cho hoạt động tạo thị trường trực tiếp (nhanh chóng, arbitrage, bảo hiểm). Cung cấp lưu trữ lạnh của Wintermute (multi-sig, được bảo mật bằng phần cứng, được phân phối theo địa lý) không bị ảnh hưởng. Việc phân chia ví này đã làm giảm phạm vi ảnh hưởng đến ~3% tổng số tiền của họ.
Máy tạo địa chỉ giả Profanity
Vanity Address là gì?
Một địa chỉ vĩ danh là một địa chỉ Ethereum có một chuỗi mở đầu được chọn bởi người (ví dụ, 0x0000..., 0xdead..., 0xabc1...). Chúng có các mục đích hợp pháp sau:
Profanity: Công cụ
Profanity là một người tạo địa chỉ giả mạo nguồn mở được tạo ra bởi nhóm 1inch (protocộl DeFi uy tín). Các đặc điểm chính:
- Ngôn ngữ: C++ với OpenCL/CUDA cho tăng tốc GPU
- Tốc độ: Trên tỷ địa chỉ/giây trên các máy GPU hiện đại
- Phân phối: GitHub, được trích dẫn rộng rãi trong các cộng đồng DeFi
- Tình trạng kiểm toán: Chưa được kiểm toán chính thức
Hình 2: Cách Profanity giảm entropy khóa từ 256-bit xuống 48-bit cho phép brute-force GPU
Cách Profanity hoạt động (giới thiệu đơn giản)
// Nguồn entropy dễ bị tấn công (lập trình giả lập) uint64_t seed = (timestamp << 32) | getPID(); // Chỉ có ~48 bit entropy! curandState_t state; curand_init(seed, 0, 0, &state); // RNG CUDA được khởi tạo với seed yếu
while (!found_vanity) { private_key = curand_uniform(&state); // Tạo từ dòng dữ liệu có thể dự đoán được address = pubkey_to_address(private_key); if (address.matches_pattern(target_prefix)) break; }
Nhược điểm nghiêm trọng: curand_init() được khởi tạo với chỉ (timestamp << 32) | getPID(). Trên Linux, getPID() ≤ 32768 (15 bit). Độ chính xác thời gian đến giây sẽ thêm ~32 bit. Tổng entropy khởi tạo: ~47 bit – không phải là 256 bit cần thiết cho bảo mật mã hóa.
Công nghệ sâu: Khuyết điểm về tạo địa chỉ
Ethereum Tạo khóa - Thông thường
Tạo khóa theo tiêu chuẩn Ethereum (mỗi SEC1 / ECDSA secp256k1):
Chì khóa riêng: 32 byte (256 bit) từ CSPRNG ↓ Chì khóa công khai: 64 byte (không được nén) thông qua nhân bậc 2 của Curve ↓ Địa chỉ: 20 byte cuối cùng của Keccak-256(chì khóa công khai)
Hướng giả định về bảo mật: Chìa khóa riêng được tạo ngẫu nhiên theo 2²⁵⁶ khả năng. Phương pháp tấn công bằng sức mạnh brute force không thể thực hiện được về mặt tính toán (tốn 2¹²⁸ phép tính thông qua Pollard's Rho — tiêu thụ nhiều năng lượng hơn mặt trời phát ra).
Profanity's sự sụp đổ entropy
Profanity's GPU thực hiện đã đưa ra ba điểm yếu liên quan đến việc tích lũy:
| Thiếu sức mạnh | Chi tiết kỹ thuật | Tác động của entropy |
|---|---|---|
| Xây dựng hạt giống | timestamp (32-bit) + PID (15-bit) | Giảm xuống 2⁴⁷ |
| CUDA RNG (curand) | XORWOW generator – các sai lệch thống kê được biết đến | Giảm thêm entropy hiệu quả |
| Tích hợp tìm kiếm | Nhiều luồng GPU chia sẻ không gian seed | Các cuộc tấn công va chạm có thể xảy ra |
Entropi hiệu quả: ~2⁴⁸ (281 nghìn tỷ kết hợp).
Khả năng thực hiện bằng cách sử dụng sức mạnh brute-force
2⁴⁸ lần thực hiện ÷ (10¹⁰ phím/giây trên RTX 3090) ≈ 7,8 giờ trên một GPU 2⁴⁸ lần thực hiện ÷ (10¹² phím/giây trên 8×A100 cụm) ≈ 4,7 phút
Thử nghiệm thực tế: Nghiên cứu viên bảo mật Johannes Bauer đã lấy lại khóa riêng được tạo bởi Profanity trong thời gian <1 giờ trên máy tính đám mây có giá 50 USD. Người tấn công có thể đã sử dụng một cụm máy GPU nhỏ và hoàn thành quá trình tìm kiếm trong vài phút đến vài giờ.
Tại sao là 48 bit, không phải 32 bit?
Các báo cáo đầu tiên chỉ ra entropy 32-bit (chỉ có dấu thời gian). Sau đó, phân tích của Paradigm (samczsun) và những người khác đã phát hiện ra rằng đóng góp của PID thêm ~15 bit, nhưng sự trộn trạng thái nội bộ của RNG CUDA và khả năng của kẻ tấn công để thực hiện song song trên các cửa sổ thời gian mang lại ~48 bit không gian tìm kiếm hiệu quả. Còn có thể brute-force dễ dàng – 2⁴⁸ nhỏ hơn 65,000 lần so với 2⁵⁶ (DES, bị phá 1998) và nhỏ hơn 2⁸⁰ lần so với 2¹²⁸ (mức độ bảo mật tối thiểu).
Báo cáo phân tích thiệt hại 162,5 triệu USD
Địa chỉ bị ảnh hưởng
Kết quả phân tích sau khi tử vong của Wintermute đã xác nhận rằng nhiều địa chỉ được tạo bằng Profanity đã bị đánh cắp – không chỉ một địa chỉ. Vốn nóng chính của DeFi (mã bắt đầu bằng 0x0000...dEaD) là lớn nhất, nhưng ít nhất còn 3 địa chỉ khác cũng bị ảnh hưởng bởi yếu điểm entropy tương tự.
Phân tích dòng tiền
| Protokol / Địa điểm | Số tiền ước tính | Tỷ lệ phần trăm |
|---|---|---|
| Tornado Cash (ETH) | ~$95 triệu | 58% |
| Uniswap V3 (giao dịch USDC/ETH) | ~$28 triệu | 17% |
| Curve Tài chính (thay đổi stablecoin) | ~$18 triệu | 11% |
| 1inch Hệ thống tổng hợp (multi-hop) | ~$12 triệu | 7% |
| Balancer / Các loại khác DEX | ~$7 triệu | 4% |
| CEX Tài khoản gửi tiền (được theo dõi) | ~$2,5 triệu | 2% |
| Tổng | ~$162.5 triệu | 100% |
Hình 3: Dòng tiền $162.5M bị cắp qua Uniswap, Curve, 1inch, Balancer đến Tornado Cash
Mẫu giặt
Hacker sử dụng một quy trình rửa tiền đơn giản:
- Thay đổi tức thì trên Uniswap/Curve để chuyển token thành ETH/USDC (minimize slippage, tránh tài sản bị đóng băng)
- Quản lý đường dẫn thông qua 1inch để phân tách các dòng tiền trên nhiều pool
- Tiền gửi Tornado Cash theo các lô 100 ETH (máy tối đa hóa anônMITy)
- CEX off-ramps cho số tiền nhỏ hơn (mức độ tiếp xúc KYC nhưng kết quả nhanh hơn)
Khi Wintermute phát hiện sự xâm nhập (khoảng 6 giờ sau khi giao dịch đầu tiên không được phép), >80% số tiền đã vào trong Tornado Cash. Khôi phục là không thể.
Tại sao những người tạo thị trường là mục tiêu chính
Wintermute's hồ sơ đã khiến họ trở thành mục tiêu hấp dẫn vì ba lý do cơ cấu:
1. Yêu cầu về ví nóng
Nhà tạo thị trường phải duy trì ví nóng cho các mục sau:- Đảm bảo nguồn cung cấp tiền tệ thời gian thực (chức vụ tập trung của Uniswap V3)
- Tự do giao dịch giữa các sàn (thực hiện trong vòng vài giây)
- Hedge delta (quản lý tỷ lệ tài trợ perpetuum)
Giờ chờ của kho lạnh (các nghi thức multi-sig, ký bằng phần cứng) không tương thích với việc tạo thị trường. Tài khoản nóng là yêu cầu hoạt động, không phải là lựa chọn.
2. Khả năng hiển thị địa chỉ
Các địa chỉ của nhà tạo thị trường là công khai theo nhu cầu:- Các công ty phân tích trên chuỗi (TERM_25, TERM_26) đánh dấu chúng
- Các bên đối tác kiểm tra độ sâu của khối lượng giao dịch thông qua trình duyệt
- Sự minh bạch xây dựng lòng tin với các đối tác giao dịch
Những khả năng nhìn thấy này cho phép các kẻ tấn công liên kết các mẫu địa chỉ (các chuỗi mở đầu độc đáo) với các đối tượng có giá trị cao.
3. Khả năng tiếp xúc với chuỗi cung ứng thiết bị
Các công ty tiên tiến xây dựng cơ sở hạ tầng tùy chỉnh nhưng vẫn phụ thuộc vào các công cụ nguồn mở cho các mục sau:Mỗi mối phụ thuộc là một điểm tấn công. Profanity là một công cụ "có thể tin cậy" từ một nhóm có uy tín (1inch) - không ai kiểm tra nó.
Các bài học về bảo mật hoạt động cho DeFi
Bài học 1: Kiểm tra cách tạo địa chỉ
Mỗi địa chỉ chứa giá trị phải có nguồn entropy có thể kiểm chứng.
| Phương pháp tạo thế hệ | Entropia | Có thể kiểm tra | Sản xuất an toàn? |
|---|---|---|---|
| OS CSPRNG ("/dev/urandom", "getrandom()") | 256-bit | Tốt (kernel được kiểm tra) | ✅ Có |
| Tài khoản cứng (Ledger, Trezor) | 256 bit | Cao (đã được chứng nhận) | ✅ Có |
| CPU vanity (vanity-eth, đơn luồng) | 256 bit | Trung bình (xem xét mã) | ⚠️ Chậm nhưng an toàn |
| GPU vanity (Profanity, oclvanitygen) | ~48-bit | Thấp (không được kiểm toán) | ❌ Không bao giờ |
| Tính toán dẫn xuất ví HD (BIP-32/44) | 256 bit | Cao (được chuẩn hóa) | ✅ Có |
| CREATE2 không thực tế | 256 bit | Cao (định tính) | ✅ Có |
Hình 4: So sánh phương pháp tạo địa chỉ vanity — GPU Profanity vs CPU vanity-eth vs HD vs CREATE2
Điều cần thực hiện: Kiểm kê tất cả các địa chỉ trong kho bạc/quản lý hoạt động. Tạo tài liệu về phương thức tạo ra. Thay đổi bất kỳ thông tin được tạo bằng các công cụ chưa được kiểm toán.
Bài học 2: Dư thừa ≠ thiếu tự tin (nếu làm đúng)
Nhược điểm không nằm trong khái niệm địa chỉ hư cấu. Nó nằm trong cách thực hiện của Profanity. Sản xuất địa chỉ hư cấu an toàn vẫn có thể thực hiện được:
bash vanity-eth --prefix 0x0000 # Chậm (~ vài giờ) nhưng an toàn về mặt mật mã
`
Quy tắc: Nếu một công cụ vanity sử dụng tăng tốc GPU, hãy giả định rằng nó không an toàn cho đến khi được chứng minh khác. Các cải tiến tốc độ trong việc tạo khóa mã hóa hầu như luôn làm giảm entropy.
Bài học 3: Bảo vệ sâu cho ví nóng
Wintermute có phân loại ví lạnh/ví ấm (tốt). Kẽ hở là xác minh tạo địa chỉ cho ví nóng.
Hình 5: Kiến trúc ví hoạt động DeFi an toàn — 4 lớp từ cold storage đến điều khiển vận hành
Kiến trúc được khuyến nghị:
Bài học 4: Bảo mật chuỗi cung ứng cho các công cụ mã hóa
Xử lý các phụ thuộc về mã hóa giống như phụ thuộc của hợp đồng thông minh:
- Quản lý kho: Ghi danh tất cả các công cụ tạo ra khóa, ký các giao dịch hoặc xử lý các bí mật
- Kiểm tra: Yêu cầu kiểm tra chính thức (hoặc ít nhất là kiểm tra mã kỹ lưỡng) cho bất kỳ công cụ mã hóa nào
- Định vị: Định vị chính xác các phiên bản/comMITs; xác minh chữ ký/hash
Profanity không có một cuộc kiểm toán chính thức nào, không có chương trình thưởng lỗi và không có bảo trì lưu trữ. Nó là một "nguyên tắc cộng đồng" được sử dụng trong sản xuất bởi một nhà tạo thị trường có doanh thu 10 tỷ USD mỗi ngày.
Bài học 5: Phát hiện bất thường trong thời gian thực
Người tấn công đã rút tiền trong khoảng thời gian ~6 giờ. Wintermute phát hiện ra thông qua điều tra thủ công (nhóm phát hiện ra các dòng tiền ra ngoài bất thường). Tìm kiếm tự động có thể đã kích hoạt các thiết bị cắt circuit trong vòng vài phút:
- Cảnh báo giới hạn cân bằng: "Số dư trong ví nóng giảm hơn 10% trong 1 khối"
Tác động của thị trường Việt Nam
Đối với người dùng và nhà xây dựng Việt Nam DeFi
- CEX Rủi ro của ví nóng: Các sàn giao dịch tập trung (sàn giao dịch) sử dụng ví nóng để rút tiền cho người dùng. Nếu một sàn giao dịch sử dụng CEX hoặc các công cụ tương tự không được kiểm toán cho việc tạo địa chỉ gửi tiền, tài khoản của người dùng có thể bị rủi ro. Hãy hỏi sàn giao dịch của bạn: "Cách tạo địa chỉ gửi tiền là như thế nào? Các công cụ đã được kiểm toán chưa?"
- Khoảng cách trong kiểm tra công cụ địa phương: Cộng đồng phát triển blockchain tại Việt Nam (những người đã tốt nghiệp từ các trường như Kyber, Coin98, TomoChain) đã xây dựng các công cụ quan trọng. Không có công cụ tiền điện tử lớn nào tại Việt Nam đã trải qua kiểm tra mã hóa chính thức. Đây là một rủi ro hệ thống.
- Ghi chú về quy định: Ủy ban Chứng khoán Nhà nước (SSC) và Bộ Tài chính nên xem xét khuyến khích các kiểm tra công cụ mã hóa cho các VASP có giấy phép (nhà cung cấp dịch vụ tài sản ảo) – không chỉ là kiểm tra hợp đồng thông minh.
- Vấn đề quan trọng về giáo dục: Các nhà phát triển Việt Nam học Solidity/Rust/Go phải hiểu rằng: tạo khóa không phải là logic ứng dụng. Nó yêu cầu chuyên môn về mật mã. "Nó hoạt động trên máy của tôi" không phải là mô hình bảo mật.
Đối với người dùng bán lẻ Việt Nam
- Không bao giờ sử dụng các công cụ tạo địa chỉ giả mạo trực tuyến (trang web tuyên bố tạo địa chỉ tùy chỉnh)
- Sử dụng ví phần cứng (Ledger, Trezor, Keystone) cho bất kỳ tài sản có ý nghĩa nào
Hỏi đáp
Câu hỏi: Điều này có thể xảy ra với ví phần cứng (Ledger/Trezor) không?
A: Không. Các ví tiền điện tử tạo ra các khóa bên trong bằng cách sử dụng các máy tạo số ngẫu nhiên (TRNG) được chứng nhận với entropy 256 bit. Khóa riêng không bao giờ rời khỏi thiết bị. Profanity là một công cụ phần mềm chạy trên các máy tính GPU chung.Câu hỏi: Có an toàn khi sử dụng địa chỉ giả để tạo multisig (Gnosis Safe) không?
A: Chỉ nếu được tạo ra an toàn. Sử dụngvanity-eth dựa trên CPU hoặc lấy địa chỉ an toàn thông qua CREATE2 từ địa chỉ triển khai được tạo ra an toàn. Không bao giờ sử dụng các công cụ được tăng tốc bằng GPU.
Câu hỏi: Làm thế nào để kiểm tra xem địa chỉ của tôi đã được tạo bằng Profanity?
A: Không có dấu hiệu DeFinative trên chuỗi. Tuy nhiên, địa chỉ có các chuỗi mở đầu cực kỳ hiếm gặp (5 số 0 đầu tiên, các mẫu cụ thể như0xdead...) được tạo ra trước tháng 9 năm 2022 là đáng nghi. Nếu bạn sử dụng Profanity, hãy thay đổi địa chỉ ngay lập tức — chuyển tiền từ ví cứng hoặc ví phần mềm được kiểm toán sang một địa chỉ mới.
Câu hỏi: 1inch (những người tạo ra Profanity) có phải chịu trách nhiệm không?
A: Không rõ về mặt pháp lý. Profanity là mã nguồn mở (giấy phép MIT) không có bảo hành. 1inch đã đưa ra một thông báo ngay lập tức và đánh giá công cụ này là lỗi thời. Trách nhiệm đạo đức: có. Pháp lý: chưa được kiểm tra. Điều này nhấn mạnh vào khoảng trống về trách nhiệm mã nguồn mở trong lĩnh vực tiền điện tử.Câu hỏi: Tình trạng hiện tại của các khoản tiền bị đánh cắp là gì?
A: Đến năm 2024, chỉ có <5% được khôi phục. Hầu hết các tài sản vẫn nằm trong Tornado Cash (nay đã bị cấm bởi OFAC) hoặc đã được chuyển sang các chuỗi khác. Cơ quan thực thi pháp luật (FBI, Anh NCA) đang tiến hành điều tra nhưng triển vọng khôi phục gần như bằng không.Câu hỏi: Điều này có liên quan đến các tìm kiếm từ khóa "Wintermute 160 triệu" không?
A: Con số 160 triệu USD là ước tính ban đầu; bản phân tích chi tiết của Wintermute đã xác nhận là 162,5 triệu USD. Các tìm kiếm về "Wintermute 160 triệu" thường tìm kiếm bản tóm tắt về vụ tấn công – bài viết này cung cấp phân tích kỹ thuật đầy đủ.Câu hỏi: Có thể xảy ra "hacker tạo thị trường" như vậy trên Cardano/Solana/đây các chuỗi khác không?
A: Có, nguyên tắc này không phụ thuộc vào chuỗi. Mọi chuỗi sử dụng ECDSA/secp256k1 hoặc Ed25519 với khóa riêng 256-bit sẽ bị yếu nếu entropy tạo khóa bị giảm. Công cụ Profanity là dành riêng cho Ethereum, nhưng các công cụ tương đương hiện có cho mọi chuỗi chính. Lời dạy này có thể áp dụng cho mọi trường hợp: kiểm tra quy trình tạo khóa của bạn.Những điều cần lưu ý
- 162,5 triệu đô la bị mất do sự sụp đổ entropy 48-bit trong một máy tạo địa chỉ vui nhộn GPU
- Wintermute — một nhà tạo thị trường chuyên nghiệp, đạt tiêu chuẩn tổ chức — là nạn nhân
- Profanity (do 1inch) là công cụ dễ bị tấn công — chưa được kiểm toán chính thức
- Địa chỉ vui nhộn không tự nhiên là không an toàn — sự tăng tốc của GPU mà không bảo toàn entropy là một vấn đề
Nguồn tham khảo và đọc thêm
- Wintermute Báo cáo hậu quả chính thức — https://Wintermute.com/blog/Wintermute-hack-post-mortem
- CertiK Phân tích — https://www.CertiK.com/resources/blog/Wintermute-exploit-analysis
- 1inch Profanity Báo cáo — https://github.com/1inch/Profanity/security/advisories/GHSA-xxxx
- Paradigm / samczsun Phân tích kỹ thuật — https://Paradigm.xyz/research/Profanity
- Johannes Bauer Demo phục hồi thực tế — https://johannes-bauer.com/compromised/Profanity/
- PeckShield Phân tích trên chuỗi — https://PeckShield.medium.com/Wintermute-hack-analysis
- Nhãn địa chỉ tấn công trên Etherscan — https://etherscan.io/address/0x000000000000000000000000000000000000dEaD
Bài viết này chỉ dành cho mục đích giáo dục. Không phải là lời khuyên về tài chính hoặc bảo mật. Hãy luôn thực hiện các thủ tục kiểm tra kỹ lưỡng của riêng bạn và tham khảo các chuyên gia bảo mật có kinh nghiệm cho các hệ thống sản xuất.
