Chủ đề thịnh hành
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Chào mừng bạn trở lại với Spotlight Lỗ hổng của Sherlock, nơi chúng tôi làm nổi bật một lỗ hổng quan trọng được phát hiện trong một cuộc kiểm toán của Sherlock.
Tuần này, chúng tôi có một Lỗ hổng Từ chối Dịch vụ Chuỗi (CDoS).
Nó đã được phát hiện bởi @0xPapaPitufo trong cuộc thi L2 của @MorphLayer.
🧵👇

Trong Rollup.sol, nếu một lô hàng độc hại được đề xuất, giả định là người sắp xếp đã đề xuất sẽ thua trong cuộc thách thức, bị phạt, và chuỗi sẽ được đặt lại. Những động lực kinh tế này ngăn chuỗi bị dừng lại thường xuyên.
Điều này dựa trên giả định rằng một người sắp xếp chỉ có thể thắng các cuộc thách thức nếu lô hàng mà họ đề xuất là hợp lệ.
Tuy nhiên, việc kiểm tra rằng prevStateRoot là postStateRoot của lô trước chỉ diễn ra trong finalizeBatch(). Kiểm tra này đủ để ngăn chặn các lô với prevStateRoots giả được hoàn tất, nhưng nó không ngăn chặn những lô này được cam kết.
Điều này cho phép một trình tự độc hại đề xuất bất kỳ lô nào thực hiện một giao dịch trạng thái hợp lệ trên một prevStateRoot giả.
Trong hầu hết các trường hợp, một thách thức sẽ tấn công lô không hợp lệ này. Tuy nhiên, bộ sắp xếp có thể cung cấp một bằng chứng hợp lệ về sự chuyển đổi trạng thái này để đánh cắp tiền đặt cọc của thách thức trung thực và giành chiến thắng trong thách thức.
Trong trường hợp điều này xảy ra, hoặc không có thách thức nào được thực hiện, lô đã cam kết sẽ không thể được hoàn tất do kiểm tra sau:
Điều này sẽ đóng băng chuỗi và không cho phép bất kỳ lô mới nào được hoàn tất, vì các lô được cam kết theo thứ tự và phải được hoàn tất theo thứ tự.

Đường tấn công:
1) Kẻ tấn công đề xuất một lô chứa một chuyển tiếp trạng thái hợp lệ từ một prevStateRoot giả.
2) Nếu một người thách thức trung thực thách thức lô, kẻ tấn công cung cấp một bằng chứng hợp lệ về chuyển tiếp trạng thái để thắng thách thức và đánh cắp tiền đặt cọc của người thách thức.
3) Dù điều trên có xảy ra hay không, chuỗi hiện đã bị dừng lại, vì lô của kẻ tấn công không thể được hoàn tất, và không có lô nào khác có thể được hoàn tất mà không có lô này được hoàn tất trước.
4) Kẻ tấn công sẽ không bị phạt, vì họ đã thắng thách thức.
Tác động là gì?
Một thách thức trung thực sẽ mất tiền đặt cọc khi một trình sắp xếp không trung thực đánh bại nó trong một thách thức, và sẽ không có các lô mới nào có thể được hoàn tất, gây ra tình trạng Từ chối Dịch vụ của Chuỗi, và sẽ phải được quay lại bằng tay bởi các quản trị viên.
Biện pháp giảm thiểu:
Kiểm tra trong commitBatch() rằng prevStateRoot bằng với parentBatchHeader.postStateRoot.
Chúng tôi tự hào đã giúp bảo vệ @morphlayer thông qua phát hiện này.
Khi cần bảo mật tuyệt đối, Sherlock là sự lựa chọn đúng đắn.
2,78K
Hàng đầu
Thứ hạng
Yêu thích