Vì sao ví của bạn hiển thị một giao dịch chuyển tiền mà bạn chưa từng gửi: Giao dịch giá trị bằng không và đầu độc địa chỉ
Một giao dịch gửi đi không rõ nguồn gốc không tự động có nghĩa là ví của bạn đã bị xâm nhập. Hãy tìm hiểu những gì bản ghi giá trị bằng không, địa chỉ trông giống nhau và việc tài sản thực sự dịch chuyển có thể chứng minh.
Mục này chứng minh điều gì về ví của tôi?
Nếu lịch sử đột nhiên cho biết bạn đã gửi 0 USDT tới một địa chỉ lạ, riêng mục đó không chứng minh ai đó đã truy cập khóa riêng của bạn. Bên thứ ba có thể tạo một số bản ghi chuyển token bằng không ghi địa chỉ của bạn mà không cần chữ ký của bạn hoặc quyền chi tiêu số tiền khác không. Bản ghi có thể tồn tại trên blockchain dù bạn chưa từng khởi tạo giao dịch.
Các câu hỏi hữu ích cần cụ thể hơn: Đây là tài sản nào? Thực tế đã chuyển bao nhiêu? Ai gửi giao dịch lên mạng? Điều gì đã cấp quyền cho bất kỳ khoản chi thực sự nào?
- Sự kiện token có số lượng bằng không không chứng minh bạn đã ký hoặc chi tiêu bất cứ thứ gì. Với token thật, số lượng chính xác bằng không nghĩa là lần chuyển đó không di chuyển token nào.
- Giao dịch dưới tên token quen thuộc không xác định được tài sản. Một hợp đồng không liên quan có thể dùng cùng tên và ký hiệu.
- Khoản thanh toán nhỏ nhận vào có thể là thật, đồng thời cài một địa chỉ người gửi gây hiểu nhầm vào lịch sử của bạn.
- Việc tài sản thật được xác nhận chuyển ra ngoài mà không rõ lý do cần được điều tra. Đừng bỏ qua chỉ vì trường khác ghi số không.
Hướng dẫn này đề cập đến Ethereum, BNB Smart Chain (BSC) và các mạng tương tự sử dụng hợp đồng token kiểu Ethereum. Các ví dụ là bản ghi hư cấu được cố ý đơn giản hóa, không phải ảnh chụp màn hình hay kết quả điều tra một ví cụ thể.
Trước tiên, xác định trường nào ghi số không
Mọi người dùng thuật ngữ giao dịch giá trị bằng không cho nhiều trường hợp khác nhau. Chỉ một cách hiển thị trong số này nói rằng số lượng token bằng không:
- Số lượng token: 0 USDC. Đối với hợp đồng USDC thật, số lượng chính xác bằng không nghĩa là lần chuyển đó không chuyển USDC nào.
- Giá trị giao dịch: 0 ETH. Không có ETH được đính kèm giao dịch chính. Token vẫn có thể được chuyển và hành động của hợp đồng vẫn có thể thực thi.
- Giá trị ước tính: $0.00. Giao diện hiển thị giá trị quy đổi sang tiền pháp định. Điều này không xác định số lượng token.
Trên BSC, trường đồng tiền gốc thường dùng BNB thay cho ETH. Tương tác hợp đồng có giá trị đồng gốc bằng không vẫn có thể chuyển token, thay đổi quyền chi tiêu hoặc kích hoạt hoạt động khác. Giá trị đồng gốc tách biệt với dữ liệu đầu vào của giao dịch.
Một số lượng dương rất nhỏ có thể được làm tròn thành $0.00. Tài sản không có giá đáng tin cậy cũng có thể có giá trị tiền pháp định hiển thị không hữu ích. Hãy mở rộng số lượng token để xem đầy đủ độ chính xác; ngay cả số lượng token hiển thị 0.00 cũng có thể che giấu một số dương nhỏ hơn. Giá trị danh mục biến động không phải là bản ghi đáng tin cậy về số đơn vị đã vào hoặc ra khỏi tài khoản.
Số không là số lượng token được phép, vì vậy chỉ số không không xác lập có tấn công. Địa chỉ trông giống nhau và chi tiết thanh toán sao chép là những dấu hiệu cần điều tra.
Vì sao hai trường From có thể khác nhau
Lịch sử ví có thể kết hợp thông tin từ các lớp khác nhau:
- Giao dịch: chỉ thị đã ký gửi tới mạng. Với giao dịch Ethereum thông thường, trường From chính xác định tài khoản ký.
- Sự kiện token: bản ghi do hợp đồng phát ra khi thực thi. Sự kiện Transfer có các trường From, To và số lượng riêng.
- Dòng lịch sử: cách ví hoặc trình khám phá trình bày thông tin đó. Nó có thể gắn nhãn sự kiện là OUT vì sự kiện ghi địa chỉ của bạn là người gửi.
Hai trường From đó không thể hoán đổi cho nhau. Địa chỉ của bạn xuất hiện trong sự kiện không phải chữ ký từ ví của bạn. Hợp đồng độc hại có thể đưa địa chỉ bạn vào dữ liệu sự kiện, nhưng điều đó không khiến nhật ký của nó xuất phát từ hợp đồng token thật. Vì vậy, hợp đồng phát ra sự kiện là một phần chứng cứ thiết yếu.
Tương tự, mã băm giao dịch xác định một giao dịch, chứ không chứng minh bạn đồng ý. Giao dịch được đưa vào chuỗi và đánh dấu Success cho thấy quá trình thực thi bên ngoài không bị hoàn tác. Đó không phải sự xác nhận về token, người nhận hay mục đích.
Năm ví dụ có chú giải về lịch sử giao dịch
Ví dụ 1: Giao dịch chuyển token bằng không đi ra mà bạn chưa từng ký
Mục lịch sử: OUT · 0 USDC · Từ địa chỉ của bạn tới một địa chỉ lạ trông tương tự.
- From của giao dịch: một tài khoản không liên quan đã gửi giao dịch.
- From của sự kiện token: sự kiện ghi địa chỉ của bạn.
- Hợp đồng token phát ra sự kiện: hợp đồng USDC thật trên mạng này.
- Số lượng token chính xác: bằng không.
Điều này chứng minh: hợp đồng token thật ghi nhận một lần chuyển token bằng không có tên địa chỉ của bạn. Lần chuyển đó không di chuyển USDC nào. Nó không chứng minh ví của bạn đã ký giao dịch, người gọi có quyền chi một lượng dương hay khóa của bạn đã bị đánh cắp.
Cơ chế: ERC-20, tiêu chuẩn token phổ biến, yêu cầu các giao dịch chuyển số lượng bằng không phát ra sự kiện Transfer. Trong các cách triển khai phổ biến, hàm chuyển được ủy quyền transferFrom kiểm tra xem số lượng yêu cầu có vượt quá hạn mức được cấp cho người gọi không. Số không không vượt quá hạn mức bằng không. Tùy những quy tắc khác của hợp đồng, lệnh gọi có thể thành công mà không cần phê duyệt trước.
Điều này không đúng tuyệt đối cho mọi token. Từng hợp đồng có thể áp dụng hạn chế bổ sung.
Cần kiểm tra tiếp: xem phần còn lại của giao dịch. Một dòng bằng không chỉ mô tả chính dòng đó; hoạt động khác có thể gây hiệu ứng khác. Nếu đây chỉ là bản ghi đầu độc đơn lẻ, không có chi tiêu đáng ngờ hoặc thay đổi quyền, phản ứng phù hợp là tránh địa chỉ bị cài cắm, chứ không mặc định phải thay ví.
Ví dụ 2: Giao dịch giả hiển thị số lượng token lớn
Mục lịch sử: OUT · 2,500 USDC · Từ địa chỉ của bạn tới địa chỉ lạ.
- Ký hiệu token hiển thị: USDC.
- Hợp đồng phát ra: hợp đồng không liên quan, không phải USDC thật.
- Số lượng sự kiện báo cáo: 2,500.
- USDC thật dịch chuyển trong giao dịch này: không có.
Điều này chứng minh: hợp đồng khác phát ra bản ghi được trình bày dưới nhãn USDC. Nó không chứng minh 2,500 USDC thật đã rời tài khoản bạn.
Giao dịch giả trong ví có thể là dữ liệu blockchain thật nhưng được diễn giải gây hiểu nhầm. Kẻ tấn công có thể sao chép tên, ký hiệu token và phát ra sự kiện giống khoản thanh toán trước đây của bạn, kể cả số lượng. Hợp đồng không tuân thủ chuẩn cũng có thể phát ra bản ghi chuyển tiền không tương ứng với thay đổi số dư của chính nó.
Cần kiểm tra tiếp: xác định mạng và chính xác hợp đồng phát ra sự kiện. So sánh địa chỉ đó với thông tin hợp đồng trên mạng tương ứng được lấy độc lập từ bên phát hành. Ký hiệu, logo quen thuộc hoặc nhãn xác minh mã nguồn không đủ để xác lập danh tính bên phát hành.
Ví dụ 3: Khoản thanh toán thật rất nhỏ từ địa chỉ trông giống
Mục lịch sử: IN · 0.000001 USDC · Từ địa chỉ lạ tới địa chỉ của bạn.
Giả sử hợp đồng token thật xác nhận việc chuyển và số dư token của bạn tăng thêm lượng rất nhỏ đó. Ở đây token thật đã đến. Việc nhận token không đòi hỏi bạn phê duyệt người gửi và không trao cho người gửi quyền chi tiêu.
Cái bẫy nằm ở địa chỉ. Xem các ví dụ hư cấu sau, được nhóm bằng khoảng trắng để nhìn rõ mọi ký tự. Địa chỉ thật không có khoảng trắng; các nhóm ở giữa in đậm là khác nhau:
Người nhận đã xác minh: 0x7a2f 1111 2222 3333 4444 5555 6666 7777 8888 9c4d
Địa chỉ bị cài cắm: 0x7a2f aaaa bbbb cccc dddd eeee ffff 0000 1111 9c4d
Giao diện chỉ hiện phần đầu và cuối có thể hiển thị cả hai là 0x7a2f...9c4d.
Điều này chứng minh: ai đó gửi cho bạn một lượng nhỏ từ địa chỉ đó. Nó không chứng minh người gửi là người nhận thường dùng hoặc tài khoản do bạn kiểm soát. Những ký tự hiển thị trùng nhau không xác lập quyền sở hữu.
Cần kiểm tra tiếp: lấy địa chỉ đích dự định từ liên hệ đã xác minh riêng hoặc trang tài khoản đáng tin cậy của người nhận. So sánh toàn bộ địa chỉ. Đầu độc địa chỉ nhằm biến một mục lịch sử bị cài vào thành địa chỉ bạn chọn cho lần thanh toán sau. Tổn thất có thể xảy ra về sau khi bạn cho phép một giao dịch hoàn toàn hợp lệ tới sai địa chỉ.
Ví dụ 4: ETH bằng không nhưng 2,500 token thật rời ví
Tiêu đề giao dịch: Value · 0 ETH.
- Giá trị đồng gốc gắn với lệnh gọi: 0 ETH.
- Chuyển token thật: 2,500 USDC từ địa chỉ của bạn.
- Thay đổi số dư USDC do giao dịch: giảm 2,500 USDC.
- Trạng thái thực thi: Success.
Điều này chứng minh: USDC thật đã chuyển ra trong ví dụ này. Số không mô tả ETH đính kèm lệnh gọi, không mô tả lượng USDC chuyển hoặc loại trừ phí gas.
Điều vẫn chưa rõ: tại sao khoản thanh toán xảy ra và bạn có chủ định hay không. Nó có thể là hoán đổi, nạp tiền, hoạt động theo lịch, thanh toán nhầm địa chỉ hoặc chi tiêu trái phép. Đối chiếu với hành động đã thực hiện và đích định gửi trước khi phân loại.
Ví dụ 5: Token thật rời ví nhưng tài khoản khác gửi giao dịch
Mục lịch sử: OUT · 500 USDC thật · Đích đến lạ.
Giả sử giao dịch thành công làm số dư USDC thật của bạn giảm 500, nhưng trường From chính lại ghi người khác.
Điều này chứng minh: token đã dịch chuyển. Người gửi giao dịch khác không làm cho sự dịch chuyển đó thành giả.
Người được phê duyệt từ trước có thể sử dụng hạn mức token mà không cần yêu cầu bạn ký giao dịch mới cho từng lần rút. Một số token cũng hỗ trợ chữ ký permit, cấp hạn mức qua thông điệp đã ký mà bên khác có thể gửi. Tài khoản thông minh và ví ủy quyền còn tạo những cách khác để người khác gửi hoạt động được cho phép.
Cần kiểm tra tiếp: xem người được quyền chi, hạn mức hay quyền được ký liên quan, và hoạt động ví. Nếu khoản ghi nợ vẫn không giải thích được, hãy xem đó là sự cố bảo mật. Bằng chứng có thể chỉ ra phê duyệt gây hại, chữ ký bị lừa hoặc quyền kiểm soát tài khoản bị xâm phạm; riêng dòng lịch sử không phân biệt được.
Đối với giao dịch thông thường được ký trực tiếp, địa chỉ của bạn trong trường From chính là bằng chứng có chữ ký hợp lệ cho tài khoản đó. Tuy vậy, nó không chứng minh bạn đã hiểu hành động, định gửi tới người nhận đó hoặc tự mình khởi tạo. Trường From của sự kiện token là bằng chứng yếu hơn nhiều.
270 triệu lần đầu độc được nghiên cứu thực sự đo lường điều gì
Phân tích hai năm hoạt động Ethereum và BSC, từ ngày 1 tháng 7 năm 2022 đến ngày 30 tháng 6 năm 2024, xác định khoảng 270 triệu bản ghi chuyển tiền đầu độc nhắm vào 17 triệu địa chỉ.
Các bản ghi thuộc ba nhóm:
- 147.7 triệu lượt chuyển giá trị bằng không.
- 118.4 triệu lượt chuyển token giả mạo.
- 4.0 triệu lượt chuyển rất nhỏ.
Đây là các bản ghi chuyển trong khoảng 18.2 triệu giao dịch, vì kẻ tấn công có thể gộp nhiều bản ghi. Địa chỉ bị nhắm tới không đồng nghĩa với số người, ví bị xâm nhập hay nạn nhân mất tiền.
Phân tích xác định 6,633 lượt chuyển mang lại lợi ích cho kẻ tấn công thành công, tổng ít nhất $83.8 triệu. Một số nạn nhân trả nhiều lần. Việc phát hiện tập trung vào một số stablecoin được chọn nên ước tính tổn thất là cận dưới trong phạm vi đó, không phải tổng cho mọi token hay chuỗi.
Ý nghĩa thực tiễn là chỉ kiểm tra số lượng bằng không sẽ bỏ sót phần đáng kể của cuộc tấn công. Mục giả mạo có thể bắt chước khoản thanh toán có giá trị, còn chuyển vào rất nhỏ có thể mang token thật đồng thời giới thiệu địa chỉ nguy hiểm.
Cách kiểm tra một mục giao dịch lạ cụ thể
- Mở giao dịch trên đúng mạng. Dùng tùy chọn trình khám phá của ví hoặc trình khám phá quen thuộc như Etherscan hay BscScan. Kiểm tra trạng thái giao dịch. Đọc chi tiết giao dịch công khai không đòi hỏi kết nối ví, phê duyệt token, ký thông điệp hoặc nhập cụm từ khôi phục.
- Xác định tài sản thực. Phân biệt ETH hoặc BNB gốc với token dùng tên đó. Với token, đối chiếu chính xác mạng và hợp đồng phát sự kiện với nguồn tin đáng tin cậy từ bên phát hành.
- Đọc số lượng với độ chính xác đầy đủ. Tách số lượng token khỏi giá trị giao dịch bằng đồng gốc và ước tính tiền pháp định.
- Phân biệt người gửi giao dịch với người gửi sự kiện. Với tài khoản thông minh, kiểm tra cả hoạt động của ví và các quyền. Người khác trả gas không chứng minh tài sản của bạn không thể đã dịch chuyển.
- Xem toàn bộ giao dịch. Kiểm tra mọi lần chuyển token, đồng gốc và thay đổi quyền liên quan. Nếu trình khám phá cung cấp thay đổi số dư ở cấp giao dịch, dùng chúng để đối chiếu kết quả. Số dư hôm nay không đổi là bằng chứng yếu hơn: khoản nạp sau đó hoặc giao dịch bù trừ có thể che giấu việc dịch chuyển trước đây.
- Xác minh địa chỉ đích độc lập. Dùng chi tiết thanh toán đáng tin cậy của người nhận hoặc mục danh bạ bạn đã xác minh trước đây. Dòng lịch sử gần đây là bằng chứng để xem xét, không phải bằng chứng về đích đến chính xác.
Nếu trình khám phá không làm rõ kết quả, hãy cung cấp cho nhóm hỗ trợ chính thức của nhà cung cấp ví tên mạng và mã băm giao dịch công khai. Mô tả hành động bạn mong đợi, nếu có. Những chi tiết đó giúp phân biệt hoạt động lạ nhưng có chủ đích với việc chi tiêu không rõ nguyên nhân mà không tiết lộ bí mật kiểm soát ví.
Cần làm gì sau khi kiểm tra
Nếu bạn chỉ thấy một bản ghi đầu độc đơn lẻ
Ẩn hoặc báo cáo spam nếu ví hỗ trợ và tránh sử dụng các địa chỉ trong đó. Ẩn một dòng chỉ thay đổi giao diện; nó không xóa lịch sử blockchain hoặc thu hồi quyền.
Chuyển tiền bằng không có thể xảy ra khi hạn mức cũng bằng không, nên riêng bản ghi không phải lý do thu hồi mọi phê duyệt hoặc chuyển toàn bộ tiền. Có thể không có quyền chi tiêu nào gắn với bản ghi đó để thu hồi. Đừng bao giờ dùng trang web quảng cáo của token hay liên kết khôi phục của người lạ để “dọn sạch” ví.
Nếu bạn thấy quyền chi tiêu đáng ngờ
Dùng đường dẫn quản lý phê duyệt đáng tin cậy của ví để xem xét và thu hồi hạn mức liên quan. Ngắt kết nối một trang web khỏi ví không thu hồi các phê duyệt token đã tồn tại trên chuỗi. Thu hồi giải quyết quyền đó; không thể khắc phục khóa riêng bị đánh cắp.
Nếu tài sản thật dịch chuyển ngoài ý muốn của bạn
Lưu mã băm giao dịch, mạng, tài sản bị ảnh hưởng và địa chỉ liên quan. Xem lại chữ ký, phê duyệt và hoạt động ví gần đây qua kênh hỗ trợ chính thức.
Nếu có bằng chứng cụm từ khôi phục hoặc khóa riêng bị lộ, hãy tạo ví mới với cụm từ khôi phục mới trên thiết bị đáng tin cậy và làm theo kế hoạch thận trọng để chuyển tài sản còn lại. Tài khoản khác được tạo từ cụm từ đã lộ không khắc phục sự lộ lọt đó. Nếu tiền tự động biến mất, đừng tiếp tục nạp tiền gas: chương trình quét ví có thể lấy chúng.
Nếu bạn biết mình đã ký thanh toán nhưng sao chép địa chỉ đích bị đầu độc, hãy ghi nhận sự khác biệt đó. Thanh toán có thể đã được ký và thực thi chính xác nhưng gửi sai người nhận. Chỉ kết quả ấy không chứng minh khóa riêng đã bị đánh cắp.
Câu hỏi thường gặp về giao dịch lạ
Kẻ tấn công có khiến tôi phải trả phí gas không?
Trong kịch bản đầu độc thông thường, kẻ tấn công gửi giao dịch và trả phí mạng. Chỉ ghi địa chỉ bạn trong sự kiện token không làm tài khoản bạn bị tính phí. Tuy nhiên, giao dịch được tài trợ phí và tài khoản thông minh có nghĩa là chỉ nhìn người trả phí không xác lập hoạt động vô hại. Hãy kiểm tra tác động thực tế.
Nếu giao dịch thất bại thì sao?
Giao dịch chuyển token bị hoàn tác không hoàn thành lần chuyển đó, dù phí gas vẫn có thể bị tính. Nếu ví dùng ủy quyền tài khoản, hãy kiểm tra riêng: Ethereum có thể giữ ủy quyền ngay cả khi thực thi sau đó thất bại. Một ủy quyền lạ đáng được xem xét.
Ví phần cứng có ngăn đầu độc địa chỉ không?
Nó cung cấp thêm nơi để kiểm tra đích đến trước khi ký. Nó không thể khiến đích do kẻ tấn công kiểm soát trở thành đúng nếu bạn phê duyệt. So sánh toàn bộ địa chỉ trên màn hình ký đáng tin cậy với thông tin người nhận được xác minh độc lập.
Tôi có thể ngăn người lạ thêm những mục này không?
Nhìn chung bạn không thể ngăn bên thứ ba gửi tài sản hoặc tạo các bản ghi áp dụng cho một địa chỉ công khai. Bộ lọc của ví và trình khám phá có thể giảm những gì bạn thấy. Lưu người nhận đã xác minh và kiểm tra toàn bộ địa chỉ đích trước khi thanh toán; chỉ ẩn các mục giá trị bằng không không thể phát hiện mọi biến thể giả mạo hay chuyển khoản rất nhỏ.
