Cảnh báo an ninh HashEx – Một chữ ký đơn có thể làm cạn kiệt Ví tiền của bạn - The Daily Hodl

Bài viết của khách HodlXGửi bài viết của bạn

Không có ngày nào không có sự cố trong không gian DeFi. Lần này, lỗ hổng được phát hiện trong một ‘thư viện elliptic’ được sử dụng rộng rãi.

Điều làm mọi thứ trở nên tồi tệ hơn – việc khai thác nó có thể dẫn đến việc tin tặc kiểm soát khóa riêng của người dùng và rút sạch ví.

Tất cả thông qua một tin nhắn lừa đảo đơn giản được ký bởi một người dùng. Đây có phải là một vấn đề nghiêm trọng không?

Điều đầu tiên cần xem xét là thực tế rằng các thư viện như elliptic cung cấp cho các nhà phát triển các thành phần mã sẵn có.

Điều này có nghĩa là thay vì viết mã từ đầu và kiểm tra nó trong quá trình thực hiện, các nhà phát triển chỉ cần mượn các phần tử mà họ cần.

Mặc dù được coi là một thực tiễn an toàn hơn, vì các thư viện liên tục được sử dụng và kiểm tra, điều này cũng làm tăng rủi ro nếu một lỗ hổng nào đó bị bỏ qua.

Thư viện Elliptic được sử dụng rộng rãi trong hệ sinh thái JavaScript. Nó cung cấp các chức năng mật mã trong nhiều dự án blockchain nổi tiếng, ứng dụng web và hệ thống bảo mật.

Theo thống kê của NPM, gói chứa lỗi được tải xuống khoảng 12–13 triệu lần mỗi tuần, với hơn 3.000 dự án liệt kê trực tiếp nó là một phụ thuộc.

Việc sử dụng rộng rãi này ngụ ý rằng lỗ hổng có khả năng ảnh hưởng đến một số lượng lớn ứng dụng - đặc biệt là ví tiền điện tử, nút blockchain và hệ thống chữ ký điện tử - cũng như bất kỳ dịch vụ nào dựa vào chữ ký ECDSA thông qua elliptic, đặc biệt khi xử lý đầu vào được cung cấp từ bên ngoài.

Lỗ hổng này cho phép các kẻ tấn công từ xa hoàn toàn xâm phạm dữ liệu nhạy cảm mà không cần sự ủy quyền thích hợp.

Đó là lý do tại sao vấn đề này nhận được đánh giá mức độ nghiêm trọng cực kỳ cao - khoảng chín trên mười theo thang CVSS.

Cần lưu ý rằng việc khai thác lỗ hổng này yêu cầu một chuỗi hành động rất cụ thể và nạn nhân phải ký dữ liệu tùy ý do kẻ tấn công cung cấp.

Điều đó có nghĩa là một số dự án có thể vẫn an toàn, ví dụ, nếu một ứng dụng chỉ ký các tin nhắn nội bộ đã xác định trước.

Tuy nhiên, nhiều người dùng không chú ý nhiều khi ký tên tin nhắn qua ví tiền điện tử như họ đã làm khi ký giao dịch.

Mỗi khi một trang Web 3.0 yêu cầu người dùng ký vào điều khoản dịch vụ, người dùng thường bỏ qua việc đọc chúng.

Tương tự, người dùng có thể nhanh chóng ký một tin nhắn cho một đợt airdrop mà không hoàn toàn hiểu các hệ quả.

Chi tiết kỹ thuật

Vấn đề xuất phát từ việc không xử lý lỗi đúng cách trong quá trình tạo chữ ký ECDSA (Thuật toán chữ ký số Elliptic Curve).

ECDSA thường được sử dụng để xác nhận rằng các tin nhắn, như giao dịch blockchain, là chính xác.

Để tạo một chữ ký, bạn cần một khóa bí mật - chỉ có chủ sở hữu biết - và một số ngẫu nhiên duy nhất gọi là ‘nonce.’

Nếu nonce giống nhau được sử dụng nhiều hơn một lần cho các thông điệp khác nhau, ai đó có thể tìm ra khóa bí mật bằng cách sử dụng toán học.

Thông thường, kẻ tấn công không thể tìm ra khóa riêng từ một hoặc hai chữ ký vì mỗi chữ ký sử dụng một số ngẫu nhiên duy nhất (nonce).

Nhưng thư viện elliptic có một lỗi - nếu nó nhận được một loại đầu vào lạ ( như một chuỗi đặc biệt thay vì định dạng mong đợi ), nó có thể tạo ra hai chữ ký với cùng một nonce cho các tin nhắn khác nhau.

Sai sót này có thể tiết lộ khóa riêng, điều này không bao giờ nên xảy ra trong việc sử dụng ECDSA đúng cách.

Để khai thác lỗ hổng này, một kẻ tấn công cần hai điều.

  • Một thông điệp hợp lệ và chữ ký của người dùng – chẳng hạn, từ bất kỳ tương tác nào trước đây
  • Người dùng ký một thông điệp thứ hai được tạo ra rõ ràng để khai thác lỗ hổng.

Với hai chữ ký này, kẻ tấn công có thể tính toán khóa riêng của người dùng, từ đó có quyền truy cập đầy đủ vào các quỹ và hành động liên quan. Thông tin chi tiết có sẵn trong Thông báo Bảo mật GitHub.

Kịch bản khai thác

Những kẻ tấn công có thể khai thác lỗ hổng này thông qua các phương pháp khác nhau, bao gồm những điều sau đây.

  • Các cuộc tấn công lừa đảo dẫn người dùng đến các trang web giả mạo và yêu cầu chữ ký tin nhắn
  • DApps độc hại ( ứng dụng phi tập trung) được ngụy trang thành các dịch vụ vô hại, chẳng hạn như ký các điều khoản sử dụng hoặc tham gia airdrop.
  • Kỹ thuật xã hội thuyết phục người dùng ký vào những thông điệp có vẻ vô hại
  • Lộ khóa riêng của máy chủ mà ký các tin nhắn từ người dùng

Một khía cạnh đặc biệt đáng lo ngại là thái độ lỏng lẻo của người dùng đối với việc ký tin nhắn so với các giao dịch.

Các dự án tiền điện tử thường yêu cầu người dùng ký các điều khoản dịch vụ hoặc thông báo tham gia airdrop, có khả năng làm cho việc khai thác trở nên dễ dàng hơn.

Vậy, hãy nghĩ về điều đó – bạn có ký một thông điệp để yêu cầu các token miễn phí không? Nếu chữ ký đó có thể khiến bạn mất toàn bộ số dư tiền điện tử của mình thì sao?

Khuyến nghị

Người dùng phải nhanh chóng cập nhật tất cả các ứng dụng và ví sử dụng thư viện elliptic để ký hiệu lên phiên bản bảo mật mới nhất.

Hãy cẩn thận khi ký các tin nhắn, đặc biệt là từ các nguồn không quen thuộc hoặc đáng ngờ.

Các nhà phát triển ví và ứng dụng nên xác minh phiên bản thư viện elliptic của họ.

Nếu có bất kỳ người dùng nào có thể bị ảnh hưởng bởi phiên bản dễ bị tổn thương, các nhà phát triển phải thông báo cho họ về sự cần thiết khẩn cấp trong việc cập nhật.


Gleb Zykov là đồng sáng lập và CTO của HashEx Blockchain Security. Ông có hơn 14 năm kinh nghiệm trong ngành CNTT và hơn tám năm trong lĩnh vực an ninh internet, cũng như có nền tảng kỹ thuật vững chắc trong công nghệ blockchain (Bitcoin, Ethereum và các blockchain dựa trên EVM).

Xem bản gốc
Nội dung chỉ mang tính chất tham khảo, không phải là lời chào mời hay đề nghị. Không cung cấp tư vấn về đầu tư, thuế hoặc pháp lý. Xem Tuyên bố miễn trừ trách nhiệm để biết thêm thông tin về rủi ro.
  • Phần thưởng
  • Bình luận
  • Chia sẻ
Bình luận
0/400
Không có bình luận
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate.io
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • ไทย
  • Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)