Bối cảnh
Gần đây, chúng tôi đã nhận được yêu cầu trợ giúp từ một người dùng bị tấn công lừa đảo. Người dùng này phát hiện ra các bản ghi ủy quyền bất thường trong ví của mình, đã cố gắng thu hồi ủy quyền nhưng không thành công và đã cung cấp địa chỉ ví bị ảnh hưởng là 9w2e3kpt5XUQXLdGb51nRWZoh4JFs6FL7TdEYsvKq6Wb. Phân tích trên chuỗi của chúng tôi cho thấy quyền sở hữu tài khoản của người dùng đã được chuyển đến địa chỉ GKJBELftW5Rjg24wP88NRaKGsEBtrPLgMiv3DhbJwbzQ.
Cơ chế sửa đổi chủ sở hữu Solana
Kẻ tấn công đã lừa người dùng nhấp chuột thành công bằng hai kịch bản trái ngược với trực giác:
1. Thông thường, trong quá trình ký giao dịch, ví sẽ mô phỏng kết quả thực hiện của giao dịch. Nếu có thay đổi về tiền, thông tin đó sẽ được hiển thị trên giao diện tương tác. Tuy nhiên, giao dịch được kẻ tấn công thiết kế cẩn thận lại không hiển thị bất kỳ thay đổi nào về tiền;
2. Tài khoản Ethereum EOA truyền thống được kiểm soát bằng khóa riêng tư, và người dùng chủ quan không biết về quyền sở hữu của Solana.
Nó có tính năng cho phép sửa đổi quyền sở hữu tài khoản; Dưới đây, chúng tôi sẽ phân tích chính xác sửa đổi Chủ sở hữu Solana là gì.
Quyền sở hữu tài khoản
Khi chúng ta tạo một tài khoản trong ví, Chủ sở hữu thường là tài khoản hệ thống (11111111111111111111111111111111111111111). Trong quá trình giao dịch, hệ thống cần xác minh xem chữ ký giao dịch có được ký bằng khóa công khai tương ứng hay không. Bạn có thể xem thông tin tài khoản cơ bản bằng lệnh Tài khoản Solana:

Ngoài ra còn có một loại tài khoản được gọi là tài khoản PDA, là một tài khoản được tạo ra từ hợp đồng thông minh. Nó chủ yếu được sử dụng để lưu trữ dữ liệu hợp đồng thông minh. Chủ sở hữu của nó chính là hợp đồng thông minh đã tạo ra nó. Ví dụ: tài khoản được sử dụng để lưu trữ thông tin phát hành và nắm giữ mã thông báo là tài khoản PDA. Khi bạn xem thông tin tài khoản cơ bản bằng Tài khoản Solana, bạn có thể thấy rằng chủ sở hữu của nó là hợp đồng thông minh Token TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA:
Cả hai loại tài khoản đều có thể sửa đổi Chủ sở hữu, nhưng có các quy tắc và hạn chế khác nhau:
Tài khoản thông thường
Không thể sửa đổi Chủ sở hữu trực tiếp bên ngoài thông qua lệnh hoặc tập lệnh, nhưng có thể sửa đổi thông qua lệnh gọi hợp đồng thông minh. Các hướng dẫn chính như sau:
![]()
Tài khoản PDA
Tóm lại, Chủ sở hữu của tài khoản PDA có thể bị thay đổi, nhưng dữ liệu của tài khoản phải trống. Việc này cũng được thực hiện bằng lệnh assign. Chúng tôi đã thực hiện một số thử nghiệm đơn giản về phản hồi của việc thay đổi Chủ sở hữu trong một số trường hợp:
1. Đối với tài khoản PDA mới tạo, Chủ sở hữu có thể được chỉ định tùy ý. Nếu Chủ sở hữu không phải là Chương trình đã tạo ra nó, thì Chương trình không có quyền ghi.
1. Đối với tài khoản PDA mới tạo, Chủ sở hữu có thể được chỉ định tùy ý. Nếu Chủ sở hữu không phải là Chương trình đã tạo ra nó, thì Chương trình không có quyền ghi.
2. Xảy ra lỗi khi cố gắng thay đổi Chủ sở hữu của tài khoản PDA mới tạo: "lệnh đã sửa đổi trái phép ID chương trình của tài khoản."
3. Lỗi xảy ra khi cố gắng ghi dữ liệu trước khi gán tài khoản PDA lần cuối: "lệnh đã sửa đổi dữ liệu của một tài khoản mà nó không sở hữu".
Sau khi Chủ sở hữu tài khoản bị thay đổi, người dùng sẽ mất quyền kiểm soát tài khoản và kẻ tấn công có thể chuyển giao tài sản tài khoản thông qua các lệnh gọi CPI. Một loại thay đổi quyền sở hữu phổ biến khác là quyền sở hữu tài khoản token. Về cơ bản, quyền sở hữu này được kiểm soát bởi logic trong hợp đồng thông minh, chứ không phải bởi logic Solana cơ bản. Tuy nhiên, nó thường được sử dụng trong các cuộc tấn công lừa đảo, và người dùng nên cảnh giác với các cuộc tấn công như vậy.
Phân tích MistTrack
Theo phân tích của MistTrack, công cụ theo dõi chuỗi và chống rửa tiền, về địa chỉ 9w2e3kpt5XUQXLdGb51nRWZoh4JFs6FL7TdEYsvKq6Wb của nạn nhân, đường dẫn chuyển tiền trong cuộc tấn công này rất phức tạp. Kẻ tấn công chủ yếu chuyển tài sản qua hai địa chỉ cốt lõi: BaBcXDg… (lưu lượng đến 1) và 7pSj1R… (lưu lượng đến 2).
Luồng 1: BaBcXDgbPgn85XtEQK7TZV8kZuFpT4iWVAs4QJoyNSmd
Đường dẫn chính đầu tiên liên quan đến các tài sản trị giá khoảng 2,38 triệu đô la, với các đặc điểm cốt lõi là "phân tán đa cấp + tiền gửi phi tập trung thông qua CEX + chuyển nhiều địa chỉ". Những kẻ tấn công đã sử dụng địa chỉ này để đổi nhiều loại token (bao gồm PAYAI, CASH, CARD'S, JitoSOL, POLYFACTS, PUMP, PYUSD, CAP) lấy SOL. Trong số đó, PUMP đã được chuyển đến 7E4eNkK… trước khi được đổi lấy SOL. Các luồng chính của SOL sau khi trao đổi như sau: 1) 717,5 SOL đã được chuyển đến YDrMfsB…, một số SOL đã được chuyển đến nền tảng Binance và số tiền còn lại đã được phân tán và lưu giữ tại khoảng 4 địa chỉ trung chuyển.

2) 7.556,89 SOL + 2.218 SOL (từ sàn giao dịch PUMP) được tổng hợp đồng đều thành 7E4eNkK…, sau đó một số SOL được chuyển sang nền tảng Letsexchange, 5.050,93 SOL được chuyển sang FyB2jDJbTdmW…, và số tiền còn lại được phân tán và duy trì ở khoảng 13 địa chỉ trung chuyển.

3) 2.161,88 SOL + 5.050,93 SOL nói trên đã được phân tán thêm trong FyB2jD… và được chuyển đến nhiều nền tảng (HTX, Binance, Kucoin, ChangeNOW, Changelly), một phần được chuyển vào một địa chỉ không xác định (25nULbv…). Số tiền còn lại đã được phân tán và lưu giữ tại khoảng 25 địa chỉ trung chuyển.

4) 2.053 SOL đã được chuyển đến 6qdtH5D…, một số SOL đã được chuyển đến nền tảng Letsexchange và số tiền còn lại đã được phân tán và lưu giữ tại khoảng 15 địa chỉ trung chuyển.

5) 20 SOL được chuyển đến 5rJdvkp…, sau đó được chuyển và duy trì tại địa chỉ 2etvjZH….

6) 2.142 SOL đã được chuyển đến 2xFzAda…, 352 SOL đã được chuyển đến nền tảng Binance, 200 SOL đã được chuyển đến nền tảng Letsexchange và số tiền còn lại đã được phân tán và lưu giữ tại khoảng 11 địa chỉ trung chuyển.

Luồng 2: 7pSj1RxHf77G3XeisvnNAtbyx5AFjYPcChswWhZe9bM8
Luồng chính thứ hai liên quan đến các tài sản trị giá khoảng 790.000 đô la, với đặc điểm cốt lõi là "giao dịch tuần hoàn xuyên chuỗi và đa chuỗi". Những kẻ tấn công cũng đổi các token nhận được lấy SOL, trong đó JitoSOL, PUMP và POLYFACTS chiếm tỷ lệ tương đối cao. Các điểm đến chính của SOL được trao đổi như sau: 5.742 SOL đã được chuyển đến FiywJZ2Z…, FiywJZ2Z… cũng nhận được 2.772,8 SOL từ các địa chỉ lừa đảo khác được MistTrack đánh dấu là “Phishing”. Kẻ tấn công đã sử dụng Relay.link để đổi 8.579,92 SOL lấy ETH và chuyển chuỗi chéo sang địa chỉ Arbitrum 0xDCFa6f…, sau đó sử dụng 1inch để đổi tiền lấy SOL và chuyển chuỗi chéo sang nhiều địa chỉ Solana khác. Sau đó, chúng liên tục sử dụng 1inch cho các giao dịch chuyển chuỗi chéo. Chi tiết về quá trình này được bỏ qua ở đây. FiywJZ2Z… đã chuyển 215,89 SOL còn lại đến Ah5Rs916…, và sau đó đổi lấy 29.875 USDC. USDC sau đó được đổi lấy DAI thông qua Relay.link theo các mức tăng dần là 5000, 5000, 5000, 5000 và 19.875,38, và được chuyển qua các chuỗi đến địa chỉ Base và Ethereum là 0xd2c1c2A…. Hai giao dịch trị giá 5000 USDC đã được trả lại và DAI vẫn chưa được chuyển ra ngoài.


Giải cứu Tài sản DeFi
Ngoài ra, số tài sản còn lại của nạn nhân trong DeFi đã được rút thành công với sự hỗ trợ của nhiều bên và được chuyển qua địa chỉ fgR5PJF…, bao gồm khoảng 2,17 triệu PYUSD và 4548 USDC: Dòng tiền này thể hiện rõ ràng mô hình hành vi của kẻ tấn công: Phân tán nhanh chóng, chuyển hướng nhiều địa chỉ, trộn lẫn đa nền tảng, lưu thông xuyên chuỗi, gửi tiền đồng thời vào CEX và tái sử dụng tài sản DeFi, tạo nên một mạng lưới rửa tiền đa tầng, xuyên hệ sinh thái, làm tăng đáng kể độ khó theo dõi. MistTrack đã đánh dấu tất cả các địa chỉ liên quan. Làm thế nào để ngăn chặn các cuộc tấn công tương tự? Đối với người dùng thông thường, loại tấn công này về cơ bản là một "cuộc tấn công lừa đảo". Kẻ tấn công sẽ sử dụng nhiều phương pháp khác nhau để đóng gói các liên kết, chẳng hạn như airdrop, phần thưởng, nhiệm vụ, chứng chỉ kiểm tra sớm, hoặc thậm chí giả vờ là thông báo chính thức, khiến mọi người nghĩ rằng đó chỉ là một hoạt động đơn giản. Tuy nhiên, chữ ký bật lên thực sự ẩn chứa các quyền rủi ro cao như sửa đổi chủ sở hữu. Sau khi được ký, ví về cơ bản đã bị chiếm quyền. Do đó, phương pháp phòng ngừa quan trọng nhất là suy nghĩ kỹ trước khi nhấp vào liên kết và "chữ ký": Nguồn có đáng tin cậy không? Trang này có chính thức không? Chữ ký này thực sự có tác dụng gì? Nếu nội dung hiển thị trong ví hoàn toàn khó hiểu, hoặc đột nhiên hiển thị một số quyền lạ, địa chỉ không quen thuộc hoặc những nơi yêu cầu bạn phải xác thực một cách khó hiểu, thì bạn phải dừng lại và tuyệt đối không bao giờ ép buộc bản thân nhấp vào xác nhận. Ngoài ra, hãy cố gắng không sử dụng ví chứa lượng lớn tài sản cho các tương tác mở rộng. Khi hoàn thành nhiệm vụ, tham gia dự án hoặc nhận airdrop, hãy chuẩn bị một tài khoản phụ chuyên dụng với số dư thấp, chỉ sử dụng cho tương tác. Hãy giữ các tài sản thực sự quan trọng của bạn trong một ví riêng hoặc thậm chí là ví lạnh. Điều này sẽ giảm thiểu tổn thất ngay cả khi bạn vô tình đăng nhập. Ngoài ra, tránh cấp quyền không giới hạn; hãy giới hạn phạm vi và số lượng bất cứ khi nào có thể để giảm không gian cho kẻ tấn công lợi dụng hệ thống. Tóm lại, hãy kiểm tra kỹ lưỡng, tránh nhấp chuột hoặc đăng nhập bừa bãi và tạo các lớp bảo vệ cho bản thân. Lưu trữ lượng lớn tài sản riêng biệt; sử dụng tài khoản phụ để tương tác và chỉ sử dụng tài khoản chính để bảo quản. Dừng ngay lập tức nếu bạn gặp bất kỳ dấu hiệu bất thường nào; đừng mạo hiểm. Bằng cách làm theo các bước này, nguy cơ bị nhắm mục tiêu bởi các cuộc tấn công lừa đảo có thể giảm đáng kể. Cuối cùng, tôi thực sự khuyên bạn nên đọc "Sổ tay tự lực Blockchain Dark Forest" (https://darkhandbook.io/).