Từ chữ ký trước đến sự mất kiểm soát quyền hạn, tại sao hàng rào bảo mật của Drift lại như không tồn tại?

Bài viết: Bốn Trụ Cột

Biên dịch: AididiaoJP, Tin tức Foresight

Điểm chính

Ngày 1 tháng 4 năm 2026, 16:05 (giờ UTC), giao thức Drift đã chịu một cuộc tấn công lớn khoảng 285 triệu đô la Mỹ. Drift là sàn giao dịch phi tập trung hàng đầu về hợp đồng vĩnh viễn trong hệ sinh thái Solana. Cuộc tấn công này thuộc về một kế hoạch thao túng tài sản thế chấp phức tạp: kẻ tấn công đã tận dụng khóa quản trị bị rò rỉ, tạo ra một thị trường giao dịch mới cho một đồng token vô giá trị, sau đó đã tắt cơ chế bảo vệ rút tiền, cuối cùng đã rút tài sản thực bằng cách giả mạo giá trị tài sản thế chấp.

Cuộc tấn công này kết hợp giữa công nghệ ký trước dựa trên số ngẫu nhiên duy trì và các kỹ thuật kỹ thuật xã hội nâng cao. Từ ngày 23 tháng 3, kẻ tấn công đã tạo ra các tài khoản số ngẫu nhiên duy trì cho hai người ký đa chữ ký và hai tài khoản do kẻ tấn công kiểm soát. Ngay cả khi vào ngày 27 tháng 3, bên giao thức thực hiện chuyển nhượng đa chữ ký hợp pháp, kẻ tấn công vẫn thành công trong việc khôi phục quyền truy cập vào hai người ký trong đa chữ ký mới. Kẻ tấn công đã lấy chữ ký trước từ người ký hợp pháp bằng cách thao túng nội dung giao dịch và lưu trữ bằng số ngẫu nhiên duy trì, sau đó thực hiện hàng loạt vào ngày 1 tháng 4, cuối cùng giành quyền quản trị. Sự kiện này không liên quan đến việc rò rỉ cụm từ khôi phục hoặc lỗ hổng hợp đồng thông minh.

Sự kiện này là một lần nữa một sai sót lớn trong an ninh hoạt động, chỉ cách sự kiện tấn công Resolv 10 ngày. Sự sụp đổ của Resolv xuất phát từ việc hoàn toàn không thiết lập cơ chế đa chữ ký; trong khi Drift mặc dù có cơ chế đa chữ ký, nhưng do ngưỡng quá thấp và thiếu các biện pháp an toàn bổ sung cũng đã thất bại. Hai sự kiện này cùng chỉ ra rằng việc thiết kế lại toàn bộ cấu trúc đặc quyền đã trở nên cấp bách.

Tóm tắt sự kiện

Nguồn: @DriftProtocol

Vào lúc 16:05 (UTC) ngày 1 tháng 4 năm 2026, giao thức giao dịch phi tập trung hàng đầu trên Solana, Drift, đã bị tấn công quy mô lớn. Drift là một giao thức cung cấp giao dịch đòn bẩy, giao dịch giao ngay, cho vay và nhiều dịch vụ tài chính phi tập trung khác, với kiến trúc kết hợp giữa các nhà tạo lập thị trường tự động ảo và sổ đặt hàng trên chuỗi. Ngay trước khi cuộc tấn công xảy ra, tổng giá trị bị khóa trong giao thức này khoảng 309 triệu USD.

Nguồn: @PeckShieldAlert

Khoảng 18:10 (UTC), tức là khoảng hai giờ sau khi cuộc tấn công bắt đầu, đội ngũ Drift đã đăng bài trên nền tảng X, yêu cầu người dùng tạm dừng gửi tiền. Sau đó, đội ngũ xác nhận sự kiện tấn công và đã tạm dừng tất cả các chức năng gửi và rút tiền. Nhiều công ty an ninh và phân tích chuỗi, bao gồm PeckShield và Lookonchain, ước tính thiệt hại khoảng 285 triệu USD. Ví Phantom đã nhanh chóng hành động, chặn quyền truy cập vào giao thức này.

Sự kiện này đặc biệt thu hút sự chú ý vì nó xảy ra chỉ 10 ngày sau sự kiện tấn công Resolv, trở thành một vụ rò rỉ khóa quản trị quy mô lớn liên tiếp trong thời gian ngắn. Hai sự kiện này có nguồn gốc chung: nguyên nhân thực sự không phải do lỗ hổng mã hợp đồng thông minh, mà là do sai sót trong an ninh hoạt động.

Phân tích nguyên nhân gốc rễ

Trọng tâm của cuộc tấn công này là kẻ tấn công đã lợi dụng quyền quản trị bị rò rỉ để thực hiện thao tác thao túng tài sản thế chấp. Nếu sự kiện Resolv là "chìa khóa có quyền tạo ra bị rò rỉ", thì sự kiện Drift là "chìa khóa có quyền ra mắt thị trường và cấu hình an toàn bị rò rỉ". Hai sự kiện này có hình thức khác nhau nhưng có nguồn gốc giống nhau. Dưới đây sẽ phân tích từng bước quy trình tấn công.

Nguồn: Dexscreener

Công cụ trực tiếp nhất trong vụ tấn công này là CarbonVote Token (CVT), một đồng token có tính thanh khoản cực thấp. Một trong những địa chỉ do kẻ tấn công kiểm soát (FnYXwy...LpAjjx) đã phát hành đồng token này ba tuần trước khi tấn công. Tổng nguồn cung CVT khoảng 750 triệu đồng, trong đó ví của kẻ tấn công nắm giữ hơn 80%. Kẻ tấn công đã tạo ra một pool thanh khoản tối thiểu trị giá khoảng 500 USD trên Raydium, sau đó thực hiện giao dịch rửa liên tục.

Hàm initializeSpotMarket trong giao thức Drift cho phép quản trị viên chỉ định trực tiếp địa chỉ oracle và nguồn tham số của nó. Kiểm tra cấu hình bộ công cụ phát triển phần mềm cho thị trường hiện tại cho thấy mỗi thị trường đều được định nghĩa riêng biệt oracle, nguồn oracle và các trường đúc token. Điều này có nghĩa là, ngay cả với một đồng token như CVT không có giá từ Pyth, miễn là kẻ tấn công nhận được quyền quản trị, họ có thể sử dụng bất kỳ nguồn oracle nào để đưa nó lên làm thị trường.

Trong cuộc tấn công này, kẻ tấn công đã chỉ định một Switchboard giá cho thị trường CVT làm oracle của nó. Switchboard là một mạng oracle, việc tạo ra giá tùy chỉnh tương đối dễ dàng. Kẻ tấn công đã cấu hình một giá mà họ kiểm soát, định giá 785 triệu CVT thành hàng trăm triệu USD. Các nền tảng theo dõi giá như Dexscreener cho thấy giá CVT khoảng 1 USD, nhưng tính thanh khoản và giá trị nội tại thực tế gần như bằng không.

Ví bị tấn công (HkGz4K...ovpZES) lần đầu tiên xuất hiện hoạt động khoảng tám ngày trước, tức là vào ngày 24 tháng 3. Ví này đã cố gắng nhận được tiền gửi trước thông qua giao thức NEAR, ghi nhận trên chuỗi cho thấy đến ngày tấn công, ví này đã thực hiện tổng cộng 325 giao dịch.

Hoạt động trên chuỗi của người ký quản trị (H7PiGq...y7ZgL) được sử dụng trong cuộc tấn công cũng đáng chú ý. Khóa này chỉ ghi lại tổng cộng 29 giao dịch. Giao dịch đầu tiên xảy ra vào ngày 31 tháng 3 lúc 15:05 (UTC), tức là một ngày trước cuộc tấn công; giao dịch cuối cùng xảy ra vào ngày 1 tháng 4 lúc 18:05 (UTC), tức là vào ngày tấn công. Toàn bộ thời gian tồn tại trên chuỗi của khóa này khoảng 27 giờ. Nguyên nhân có thể rõ ràng từ các bản ghi trên chuỗi.

Quyền quản trị của giao thức Drift không được quản lý bởi một tài khoản bên ngoài duy nhất mà được thực hiện thông qua cơ chế đa chữ ký. Tuy nhiên, các cuộc điều tra sau đó đã tiết lộ rằng con đường tấn công phức tạp hơn nhiều so với đơn giản chỉ là xâm nhập đa chữ ký. Khoảng chín ngày trước cuộc tấn công, kẻ tấn công đã tạo ra bốn tài khoản số ngẫu nhiên duy trì. Hai trong số đó liên quan đến người ký của hội đồng an ninh Drift đa chữ ký, trong khi hai tài khoản còn lại do kẻ tấn công kiểm soát. Số ngẫu nhiên duy trì là một cơ chế trên Solana, cho phép bỏ qua thời gian hiệu lực khoảng một phút của băm khối trong giao dịch thông thường, cho phép thu thập chữ ký trước và thực hiện trong tương lai. Kẻ tấn công được cho là đã sử dụng cơ chế này để lấy chữ ký trước từ người ký hợp pháp bằng cách thao túng nội dung giao dịch.

Bốn ngày sau, đội ngũ Drift thực hiện chuyển nhượng đa chữ ký theo kế hoạch do sự thay đổi thành viên trong hội đồng an ninh. Chuyển nhượng này thuộc quy trình hoạt động thông thường, nhưng kẻ tấn công đã thành công thích ứng với sự thay đổi này.

Một ngày trước cuộc tấn công, kẻ tấn công đã tạo ra một tài khoản số ngẫu nhiên duy trì mới cho một người ký trong đa chữ ký đã di chuyển (6UJbu9...Pvu924). Lúc này, kẻ tấn công đã khôi phục quyền truy cập hiệu quả vào 40% người ký trong đa chữ ký đã được cập nhật. Điều này cho thấy kẻ tấn công đã thâm nhập sâu vào hệ thống, thậm chí có thể ứng phó với những thay đổi bất ngờ như di chuyển đa chữ ký.

Vào ngày tấn công, đội ngũ Drift đã thực hiện một lần rút tiền thử nghiệm thường lệ từ quỹ bảo hiểm. Khoảng một phút sau, kẻ tấn công nhanh chóng thực hiện hai giao dịch đã được ký trước bằng số ngẫu nhiên duy trì.

Nguồn: solscan

Giao dịch đầu tiên đã thực hiện lệnh VaultTransactionCreate, ProposalCreate và ProposalApprove trên đa chữ ký Squads, tạo ra một đề xuất chuyển nhượng quản trị độc hại và ghi nhận lần phê duyệt đầu tiên.

Ngay sau đó, giao dịch thứ hai đã sử dụng số ngẫu nhiên duy trì để thực hiện các lệnh ProposalApprove và VaultTransactionExecute. Ngưỡng 40% ngay lập tức đạt được, và do khóa thời gian được đặt thành không giây, giao dịch này đã được thực hiện ngay lập tức. Lúc này, lệnh UpdateAdmin trong chương trình Drift V2 đã được gọi, chuyển địa chỉ quản trị cho kẻ tấn công (H7PiGq...y7ZgL).

Chi tiết quan trọng ở đây là cả hai giao dịch đều đã hoàn thành tất cả chữ ký trước và được nộp hàng loạt vào ngày tấn công. Người ký vào thời điểm đó có thể chưa hoàn toàn hiểu nội dung giao dịch mà họ đã ký. Thuật ngữ "giao dịch bị lừa" mà đội ngũ Drift sử dụng cho thấy người ký đã bị dụ để ký vào giao dịch chuyển nhượng quản trị độc hại được ngụy trang thành một thao tác thông thường. Vai trò của số ngẫu nhiên duy trì là lưu trữ những chữ ký trước này một cách vô hạn, cho phép kẻ tấn công thực hiện vào thời điểm mà họ chọn.

Người ký quản trị đã được thay thế sau đó đã gọi chương trình Drift V2 (dRifty...cn33UH), thực hiện hai thao tác.

Nguồn: solscan

Thứ nhất, kẻ tấn công đã đăng ký CVT làm thị trường giao ngay mới trên Drift thông qua lệnh initializeSpotMarket. Trong quá trình này, một tài khoản thị trường giao ngay mới (BY3WYn...FVU1Cf) và hai tài khoản CVT đã được tạo ra, và địa chỉ chương trình kế thừa của kho Drift (PDA, JCNCMF...XXJfrw) được thiết lập làm chủ sở hữu đồng token.

Drift vận hành hệ thống thế chấp đa tài sản, nghĩa là các đồng token được đăng ký trên thị trường giao ngay mới có thể ngay lập tức được sử dụng làm tài sản thế chấp. Tuy nhiên, để được coi là tài sản thế chấp đủ tiêu chuẩn, các tham số initial_asset_weight và maintenance_asset_weight của thị trường đó phải được đặt lớn hơn không, trong khi giá trị khởi tạo mặc định thì quá thấp hoặc gần bằng không. Phân tích giao dịch tấn công (4a5962R...st82X) cho thấy, updateSpotMarketMarginWeights (hoặc cập nhật tham số rủi ro tương đương) đã được thực hiện trong cùng một giao dịch với initializeSpotMarket, kẻ tấn công đã thiết lập trọng số tài sản thế chấp của CVT ở mức tối đa.

Điều này đã phơi bày một thiếu sót thiết kế quan trọng từ góc độ phòng ngừa sâu: các thao tác như ra mắt thị trường, chỉ định nguồn oracle, cấu hình trọng số tài sản thế chấp tối đa, và vô hiệu hóa bảo vệ rút tiền đều có thể được thực hiện trong một giao dịch duy nhất. Yếu tố chiết khấu trọng số được áp dụng để ngăn chặn rủi ro tập trung vị thế lớn đã mất đi hiệu quả thực tế sau khi trọng số được thiết lập ở mức tối đa. Nếu chương trình này đặt giới hạn trọng số cho các thị trường mới tạo ra, hoặc thiết lập khóa thời gian độc lập cho việc thay đổi trọng số, thì một cuộc tấn công phá hủy tất cả các biện pháp phòng ngừa này sẽ không thể xảy ra.

Nguồn: solscan

Thứ hai, trong cùng một giao dịch, kẻ tấn công đã gọi lệnh updateWithdrawGuardThreshold năm lần, nâng hạn mức rút tiền của thị trường tài sản chính lên mức cực đoan. Tất cả các thị trường đều được thiết lập với hạn mức khoảng 500 triệu tỷ, thực tế đẩy ngưỡng bảo vệ rút tiền lên vô hạn, loại bỏ chức năng bảo vệ an toàn nhằm ngăn chặn việc rút tiền lớn bất thường.

Giao dịch này (4a5962R...st82X) đã đồng thời tiêu diệt ba hàng phòng thủ cốt lõi của Drift.

Thứ nhất, giá cơ chế đã bị tấn công bằng cách phân bổ một Switchboard giá mà kẻ tấn công kiểm soát làm oracle. Thứ hai, trọng số tài sản thế chấp đã được thiết lập ở mức tối đa, khiến một đồng token không có giá trị nội tại được công nhận là tài sản thế chấp chất lượng. Thứ ba, ngưỡng bảo vệ rút tiền đã được nâng lên mức khoảng 500 triệu tỷ, thực tế loại bỏ cơ chế chặn việc rút tiền bất thường.

Bao gồm cả việc thay đổi quyền quản trị, kẻ tấn công chỉ cần hai giao dịch để phá hủy toàn bộ kiến trúc an ninh của giao thức. Từ góc độ kiểm toán mã, điều này tạo ra một nghịch lý sâu sắc: mã hợp đồng của Drift hoạt động hoàn toàn theo cách mà kiểm toán đã xác nhận. initializeSpotMarket đã đăng ký thị trường mới theo thiết kế, chỉ định nguồn oracle và thiết lập tham số trọng số; updateWithdrawGuardThreshold đã sửa đổi hạn mức theo thiết kế. Nguyên nhân vấn đề nằm ở chính thiết kế hệ thống - thiết kế này cho phép một chuỗi tấn công hoàn chỉnh được thực hiện trong một giao dịch duy nhất. Điều này không còn thuộc phạm vi của kiểm toán mã, mà thuộc về thiết kế cấu trúc đặc quyền và ràng buộc tham số.

Cuối cùng, kẻ tấn công đã gửi khoảng 785 triệu CVT dưới dạng tài sản thế chấp thông qua một tài khoản người dùng Drift mới được tạo. Giá oracle Switchboard do kẻ tấn công kiểm soát đã đánh giá giá trị này thành hàng trăm triệu USD, trong khi trọng số tài sản thế chấp tối đa được thiết lập đã công nhận gần như toàn bộ giá trị như tài sản thế chấp hợp lệ. Hệ thống ký quỹ của Drift hoạt động hoàn toàn theo thiết kế dự kiến. Vấn đề nằm ở chỗ, mọi tham số đầu vào của hệ thống này đã bị kẻ tấn công thao túng một cách độc hại.