< Quay lại Tin tức

Halborn kiểm toán các hợp đồng Account Abstraction của SSP

·4 phút đọc·Bởi SSP Editorial Team
Phù hiệu SECURITY với biểu tượng khiên, chìa khóa, CPU và mắt tắt trên dòng tiêu đề Halborn kiểm toán AA của SSP — hợp đồng multisig Schnorr được rà soát

Ngày 16 tháng 01 năm 2025, SSP Wallet v1.9.0 khép lại nhiều tuần rà soát an ninh cùng Halborn với các hợp đồng Solidity Account Abstraction của SSP — Factory và Account Implementation đứng sau mọi địa chỉ Ethereum và Sepolia. Cuộc kiểm toán cho kết quả sạch ở những phần quan trọng, chỉ có ba phát hiện Thông tin và hai phát hiện ưu tiên Thấp, tất cả nằm trong mã không sử dụng hoặc mã chết. Dù vậy, chúng tôi vẫn chọn xử lý từng phát hiện, triển khai lại các hợp đồng và phát hành các phiên bản sạch hơn trong v1.9.0. Việc triển khai lại đó là thay đổi gãy tương thích đối với người dùng Ethereum và Sepolia: địa chỉ tất định của bạn trên hai chuỗi này sẽ đổi sau khi nâng cấp.

TL;DR

  • Halborn đã kiểm toán phần Solidity của Account Abstraction trong SSP: các hợp đồng Factory và Account Implementation.
  • Phát hiện: 3 Thông tin, 2 Thấp, 0 Trung bình, 0 Cao. Tất cả nằm trên các nhánh mã không dùng hoặc đã chết. Các hợp đồng đã triển khai trước đó vẫn an toàn.
  • Chúng tôi vẫn triển khai lại để giữ codebase hoàn toàn sạch — các hợp đồng Factory và Account Implementation mới ra mắt trong v1.9.0.
  • Thay đổi gãy tương thích: địa chỉ Ethereum và Sepolia thay đổi sau khi nâng cấp. Hãy chuyển tiền trước khi nâng cấp hoặc liên hệ hỗ trợ SSP để có hướng dẫn di trú.
  • Các chuỗi UTXO — Bitcoin, Zcash, Bitcoin Cash, Flux — không bị ảnh hưởng.

Halborn đã kiểm toán những gì

Phạm vi là phần Solidity của các hợp đồng ERC-4337 với multisig Schnorr mà chúng tôi phát hành trong v1.6.0 và đã lặp đi lặp lại kể từ đó. Cụ thể: kho @runonflux/account-abstraction — hợp đồng Factory triển khai một tài khoản theo cách tất định khi người dùng giao dịch lần đầu, và hợp đồng Account Implementation định nghĩa cách tài khoản đó xác thực UserOperations, kiểm tra chữ ký Schnorr và tuân thủ luồng bundler-và-EntryPoint của ERC-4337.

Đội kỹ thuật của Halborn đã chạy toàn bộ bộ thử nghiệm họ dành cho các hợp đồng thông minh ở môi trường sản xuất. Theo lời họ, kho mã vững, tôn trọng các khuyến nghị ERC-4337 và triển khai Schnorr một cách sạch sẽ. Kết luận đó quan trọng vì phần Schnorr là phần có ít nền tảng tham chiếu nhất trong thiết kế — mọi mảnh khác của ngăn xếp AA đã được kiểm toán nhiều lần trong ngành, nhưng chữ ký Schnorr tổng hợp bên trong một bộ xác thực ERC-4337 là thứ chính chúng tôi tự xây dựng.

Họ đã tìm thấy gì

Báo cáo bao gồm 3 phát hiện Thông tin và 2 phát hiện ưu tiên Thấp — không có Trung bình, không có Cao, không có Tới hạn. Bạn có thể đọc báo cáo đầy đủ tại halborn.com/audits/influx-technologies/account-abstraction-schnorr-multisig.

Mỗi phát hiện đều nằm trong đoạn mã hoặc không được dùng trên các hợp đồng đang chạy, hoặc nằm trong một nhánh không được thực thi với tiền thật của người dùng — giàn giáo phòng thủ, các nhánh còn sót từ một vòng lặp trước, đại loại như vậy. Không phát hiện nào mô tả cách kẻ tấn công có thể lấy tiền, giả mạo chữ ký hay phá vỡ một tài khoản. Các hợp đồng đã triển khai trên Ethereum mainnet vẫn an toàn hoàn toàn trong và sau cửa sổ kiểm toán.

Vì sao chúng tôi vẫn triển khai lại

Có hai lý do. Thứ nhất, một codebase sạch tự nó là một dạng an ninh. Mã chết được biên dịch vào một hợp đồng đã triển khai là mã chết mà các nhà kiểm toán, tích hợp và đóng góp tương lai phải suy luận. Cắt nó đi làm giảm bề mặt mà mọi cuộc rà soát tương lai cần xem — ít nhánh hơn, ít giả định hơn, ít cách đọc nhầm hợp đồng hơn.

Thứ hai, khi bạn có cơ hội phát hành phiên bản xử lý từng phát hiện thay vì phiên bản hoãn lại, bạn nên chọn nó. Và chúng tôi đã làm vậy. v1.9.0 được phát hành dựa trên các hợp đồng Factory và Account Implementation vừa triển khai, tích hợp mọi khuyến nghị của Halborn. Nhánh ổn định của kho @runonflux/account-abstraction giờ là main (npm ^1.1.0); nhánh master và npm ~1.0.0 vẫn còn cho ai muốn ở lại với các hợp đồng đã triển khai trước.

THAY ĐỔI GÃY TƯƠNG THÍCH cho người dùng Ethereum và Sepolia

Vì Factory là thứ suy ra địa chỉ tài khoản của bạn theo cách tất định từ các khóa công khai, triển khai lại Factory đồng nghĩa cùng các khóa đó sẽ suy ra một địa chỉ khác. Với người dùng có tiền trên Ethereum mainnet hoặc Sepolia, đó là tác động thực tế của v1.9.0: sau khi nâng cấp, địa chỉ mà SSP hiển thị cho Ethereum hoặc Sepolia là một địa chỉ mới. Bất kỳ ETH hay ERC-20 nào nằm trên địa chỉ cũ sẽ không tự dịch chuyển.

Có hai cách an toàn để xử lý. Cách thẳng thắn là chuyển tiền ra khỏi địa chỉ cũ trước khi nâng cấp — gửi sang một ví hoặc sàn khác, sau đó nâng cấp, rồi gửi tiếp sang địa chỉ mới của bạn. Cách còn lại, dành cho người dùng đã nâng cấp hoặc có vị thế lớn hơn hay phức tạp hơn, là liên hệ hỗ trợ SSP để có hướng dẫn di trú để chúng tôi đồng hành lấy lại số tiền cũ bằng các hợp đồng cũ.

Các chuỗi UTXO không bị ảnh hưởng. Địa chỉ Bitcoin, Zcash, Bitcoin Cash và Flux được suy ra từ khóa của bạn mà không đi qua hợp đồng EVM, do đó v1.9.0 không đổi các địa chỉ này. Chỉ Ethereum và Sepolia bị ảnh hưởng.

Còn nhiều phía trước

Bài viết này tập trung riêng vào cuộc kiểm toán các hợp đồng AA, vào ngày phát hành. Bức tranh lớn hơn — toàn bộ các cuộc rà soát của Halborn trên SSP Wallet, các hợp đồng và SDK — được kể trong Bên trong các cuộc kiểm toán Halborn của SSP năm 2025, đặt cuộc kiểm toán này trong bối cảnh hai cuộc còn lại.

Nguồn: Ghi chú phát hành SSP Wallet v1.9.0.

Chia sẻ bài viết này

Bài viết liên quan