Tấn công Bằng chứng cổ phần của Ethereum và ngăn chặn
Lần cập nhật trang lần cuối: 26 tháng 2, 2026
Những kẻ trộm và phá hoại liên tục tìm kiếm các cơ hội để tấn công các ứng dụng khách của Ethereum. Trang này vạch ra các hướng tấn công đã được nhận diện vào lớp đồng thuận của Ethereum và cách các cuộc tấn công này được ngăn chặn. Thông tin trên trang này được tiếp nhận từ một phiên bản dài hơn (opens in a new tab).
Điều kiện tiên quyết
Một số kiến thức cơ bản về Bằng chứng cổ phần cần biết. Ngoài ra, sẽ hữu ích khi có hiểu biết cơ bản về [lớp khuyến khích] của Ethereum (/developers/docs/consensus-mechanisms/pos/rewards-and-penalties) và thuật toán chọn nhánh, LMD-GHOST.
Những kẻ tấn công muốn gì?
Một lầm tưởng thường thấy là những kẻ tấn công trót lọt có thể tạo thêm ether, hoặc bòn rút ether từ các tài khoản tùy ý. Cả hai đều không thể xảy ra bởi tất cả các giao dịch đều được thực thi bởi tất cả những trình thực thi trên mạng lưới. Chúng phải đáp ứng các điều kiện hợp lệ cơ bản (ví dụ: các giao dịch được ký bằng khóa riêng tư của người gửi, người gửi có đủ số dư, v.v.), nếu không chúng sẽ bị đảo ngược. Có ba loại kết quả mà kẻ tấn công có thể thực sự hướng tới: tái tổ chức, gấp đôi tính kết luận cuối cùng hoặc trì hoãn tính kết luận cuối cùng.
“Tái tổ chức” là sắp xếp lại các khối theo một trật tự mới, có thể là thêm hoặc bớt các khối của chuỗi chính tắc. Một hoạt động tái tổ chức gây hại có thể đảm bảo các khối nhất định được bao gồm hoặc bị loại bỏ, cho phép thực hiện chi tiêu gấp đôi hoặc bòn rút giá trị bằng cách chậy trước hoặc sau giao dịch để trục lợi (giá trị bòn rút tối đa). Tái tổ chức cũng có thể được dùng để ngăn chặn các giao dịch nhất định, không cho chúng được thêm vào chuỗi chính tắc - một hình thức che đậy thông tin. Dạng nguy hiểm nhất của tái tổ chức chính là “đảo ngược tính kết luận cuối cùng”, làm cho các khối bị loại bỏ hoặc thay thế mặc dù trước đó đã được hoàn thành. Việc này chỉ xảy ra khi có hơn ⅓ tổng số ether được ký gửi bị tiêu hủy bởi kẻ tấn công - việc đảm bảo này được gọi là “kinh tế tính kết luận cuối cùng” - sẽ được giải thích ở phần sau.
Gấp đôi tính kết luận cuối cùng dù khó xảy ra nhưng là một trình trạng nghiêm trọng mà trong đó hai bản nhánh có thể cùng hoàn thành cùng lúc, làm cho chuỗi bị chia rẽ vĩnh viễn. Về mặt lý thuyết thì nó có thể xảy ra khi kẻ tấn công sẵn sàng mạo hiểm với 34% số ether được ký gửi. Cộng đồng sẽ buộc phải hợp tác ngoài chuỗi và kết luật xem sẽ theo đuổi chuỗi nào, lúc đó sẽ cần đến sức mạnh của lớp xã hội.
Cuộc tấn công trì hoãn tính kết luận cuối cùng ngăn cản mạng lưới đạt đủ các điều kiện cần thiết để hoàn thành các phần của chuỗi. Nếu không có tính kết luận cuối cùng, rất khó để tin tưởng các ứng dụng tài chính được xây dụng trên Ethereum. Mục tiêu của cuộc tấn công trì hoãn quá tính kết luận cuối cùng thường đơn giản là để làm gián đoạn Ethereum hơn là để kiếm lợi nhuận trực tiếp, trừ khi kẻ tất công đặt sẵn những vị thế bán chiến lược.
Một cuộc tất công vào lớp xã hội có thể nhắm đến việc làm suy yếu niềm tin cộng đồng với Ethereum, làm ether mất giá trị, giảm sự chấp thuận hoặc để làm yếu đi cộng đồng Ethereum nhằm khiến sự phối hợp ngoại tuyến trở nên khó khăn hơn.
Với lý do tạo ra những thế lực thù địch có thể tấn công Ethereum, những phần sau sẽ phân tích làm thế nào chúng có thể tiến hành.
Các phương thức Tấn công
Các cuộc tấn công Lớp 0
Đầu tiên, các cá nhân không tích cực tham gia trong Ethereum (bằng cách chạy phần mềm ứng dụng) có thể tấn ông bằng cách nhắm đến lớp xã hội (lớp 0). Lớp 0 là nền tảng mà Ethereum được xây dựng trên nó và cũng như rằng bề mặt chịu rủi ro cho các cuộc tấn công đồng thuận có thể lan tỏa ra khác các lớp khác. Một số ví dụ bao gồm:
-
Một chiến dịch tuyên truyền tin giả / sai sự thật nhằm xói mòn niềm tin của cộng đồng dành cho lộ trình Ethereum, các nhà phát triển, ứng dụng,... Điều này có thể giảm lượng người sẵn lòng tham gia vào bảo mật mạng lưới, làm giảm sự phi tập trung và an ninh "kinh tế-mật mã học".
-
Các cuộc tấn công có chủ đích và/ hoặc hành vi đe dọa với cộng đồng người phát triển. Điều này có thể dẫn đến việc các nhà phát triển tự nguyện rời bỏ và giảm tiến trình của Ethereum.
-
Những quy định quá vô lý cũng có thể được cân nhắc là một cuộc tấn công lớp 0, bởi vì chúng nhanh chóng làm giảm động lực để tham gia và sử dụng rộng rãi.
-
Sự xâm nhập của các cá nhân tài giỏi nhưng có ác ý với cộng đồng nhà phát triển những người này sẽ nhắm tới việc làm chậm tiến trình bằng cách đánh lạc hướng các cuộc thảo luận, trì hoãn quyết định hoặc Spam,...
-
Tham nhũng là chìa khóa chính tác động đến quyết định trong hệ sinh thái Ethereum.
Điều kiến cho các cuộc tấn công này đặc biệt nguy hiểm đó là nhiều trường hợp không cần đòi hỏi quá nhiều tài chính hoặc hiểu biết về kĩ thuật. Một cuộc tấn công lớp 0 có thể làm khuếch đại cuộc tấn công "kinh tế-mật mã học". Ví dụ, nếu tập hợp những người Stake ác ý được phép kiểm duyệt hoặc đảo ngược quyết định cuối cùng, thì việc làm suy yếu lớp xã hội có thể khiến khó hơn để điều phối cộng đồng bằng các kênh không chính thức.
Phòng thủ với những cuộc tấn công lớp 0 không bao giờ là đơn giản, nhưng vẫn có thể thiết lập những nguyên tắc cơ bản. Một là duy trì tỉ lệ "nhiễu tín hiệu" đối với thông tin về Ethereum, tạo và lan truyền trong cộng đồng bằng những thành viên trung thực qua Blog, kênh Discord, nhãn dán dữ liệu, sách, Podcast và Youtube. Đây là cách tại ethereum.org chúng tôi cố gắng giữ những thông tin chính xác nhất và dịch nó ra nhiều ngôn ngữ nhất có thể. Phủ sóng không gian bằng thông chất lượng cao và memes là một cách tốt để phòng thủ trước thông tin sai lệch.
Một biện pháp phòng thủ quan trọng khác trước các cuộc tấn công vào lớp xã hội là có những sứ mệnh rõ ràng và giao thức quản trị. Ethereum đã tự mình là nền tảng dẫn đầu về phi tập trung và bảo mật trong những hợp đồng thông minh lớp 1, đồng thời cung đề cao khả năng mở rộng và tính bền vững. Bất kể những bất đồng nào trong cộng đồng Ethereum, các nguyên tắc cốt lõi này luôn bị ảnh hưởng ở mức tối thiểu. Thẩm định một lập luận dựa trên các nguyên tắc cốt lõi và qua nhiều vòng rà soát trong quy trình EIP (đề xuất cải thiện Ethereum), có thể giúp cộng đồng nhận diện được ai là người tốt và xấu và giới hạn khả năng người xấu làm hại đến tương lai của Ethereum.
Cuối cùng, điều tối quan trọng là cộng đồng Ethereum phải cở mở và chào đón tất cả người tham gia. Một cộng đồng không cởi mở, có sự phân biệt và thiên vị những cá nhân đặt biệt thì sẽ rất mỏng manh trước những cuộc tấn công vì có thể tạo ra câu chuyện để chia rẽ "bè phái". Chủ nghĩa bè phái và chủ nghĩa cực đoạn gây tổn hại cho cộng đồng và làm xói mòn bảo mật lớp 0. Những người thuộc cộng đồng Ethereum (Ethereans) có hứng thú với việc bảo vệ tính an toàn của mạng lưới nên coi hành vi của họ trên mạng và đời thực là đóng góp trực tiếp vào tính bảo mật của lớp 0 Ethereum.
Tấn công giao thức
Bất kì ai cũng có thể chạy phần mềm Client Ethereum. Để có thể thêm nút xác thực vào Client, người dùng cần phải đặt cược (Stake) 32 Ether vào trong một hợp đồng kí quỹ. Nút xác thực cho phép người dùng tham gia tích cực vào việc bảo mật mạng lưới Ethereum bằng cách đề xuất và xác nhận các khối mới. Người vận hành nút lúc này có tiếng nói để tác động đến nội dung tương lai của chuỗi khối – họ có thể làm điều đó một cách trung thực và gia tăng số Ether tích lũy thông qua phần thưởng, hoặc họ có thể tìm cách thao túng quy trình vì lợi ích riêng, đồng thời đối mặt với rủi ro mất phần Stake của mình. Một cách để tiến hành cuộc tấn công là tích lũy tỷ lệ Stake cao hơn trong tổng số ETH Stake trên mạng lưới và sử dụng chúng để bỏ phiếu áp đảo những nút xác thực trung thực. Tỷ lệ Stake mà kẻ tấn công kiểm soát càng lớn thì quyền biểu quyết của họ càng mạnh, đặc biệt tại một số mốc kinh tế mà chúng ta sẽ tìm hiểu sau. Tuy nhiên, hầu hết kẻ tấn công sẽ không thể tích lũy đủ lượng Ether để tấn công theo cách này, nên thay vào đó họ phải dùng những kỹ thuật tinh vi nhằm thao túng đa số thành viên trung thực hành động theo một hướng nhất định.
Về cơ bản, tất cả các cuộc tấn công với số stake nhỏ đều là những biến thể của hai dạng hành vi độc hại từ nút xác thực: hoạt động ít (không thực hiện việc xác nhận/đề xuất hoặc thực hiện trễ) hoặc hoạt động quá mức (đề xuất/xác nhận quá nhiều lần trong một Slot). Ở dạng đơn giản nhất, những hành vi này có thể dễ dàng được xử lý bởi thuật toán chọn nhánh (Fork-Choice) và lớp khuyến khích (khuyến khích hành động đúng bằng thưởng), nhưng vẫn tồn tại những cách tinh vi để lợi dụng hệ thống nhằm đem lại lợi thế cho kẻ tấn công.
Tấn công sử dụng một lượng nhỏ ETH
tái tổ chức chuỗi (Reorgs)
Một vài bài nghiên cứu đã giải thích các cuộc tấn công vào Ethereum có thể tạo ra một cuộc tái tổ chức chuỗi hoặc trì hoãn việc chốt cuối cùng với chỉ một tỷ lệ nhỏ tổng lượng Stake Ether trên mạng. Những cuộc tấn công này thường dựa vào việc kẻ tấn công giữ lại một số thông tin khỏi các nút xác thực khác rồi tung ra nó theo một cách tinh vi và/hoặc vào thời điểm thuận lợi. Chúng thường nhằm mục tiêu loại bỏ một hoặc một số khối trung thực khỏi chuỗi hợp lệ (Canonical Chain). Neuder et al 2020 (opens in a new tab) đã chỉ ra cách một nút xác thực tấn công có thể tạo và xác nhận một block (B) cho một slot cụ thể n+1 nhưng lại không truyền nó cho các nút khác trong mạng. Thay vào đó, chúng giữ những khối đã được xác thực đó cho đến Slot n+2. Một nút trung thực đề xuất khối (C) cho Slot n+2. Gần như đồng thời, kẻ tấn công có thể phát hành khối (B) mà họ đã giữ lại cùng với sự chứng thực cho nó, và họ cũng bỏ phiếu xác nhận rằng B là đầu chuỗi với chuỗi các phiếu bầu cho Slot n+2, điều này từ chối hoàn toàn sự tồn tại của khối C. Khi khối D hợp lệ được phát hành, thuật toán chọn nhánh (Fork Choice) sẽ thấy D được xây dựng trên B có "trọng số" lớn hơn D xây trên C. Do đó kẻ tấn công đã thành công loại bỏ khối C hợp lệ ở Slot n+2 khỏi chuỗi chuẩn bằng các sử dụng một cuộc tái tổ chức với độ dài 1 khối. Một cuộc tấn công 34% (opens in a new tab) cổ phần (Stake) có cơ hội rất cao để thành công, như được giải thích trong ghi chú này (opens in a new tab). Về mặt lý thuyết, mặc dù cuộc tấn công này có thể sử dụng ít cổ phần (Stake) hơn. Neuder et al 2020 (opens in a new tab) miêu tả cuộc tấn công này có thể khả thi với 30% cổ phần, tuy nhiên đã được chứng minh rằng chỉ cần 2% tổng cổ phần (opens in a new tab) và thậm chí có thể sử dụng một nút xác thực (opens in a new tab) bằng cách sử dụng các kỹ thuật cân bằng mà chúng ta sẽ xem xét trong phần tiếp theo.
Một sơ đồ khái niệm của cuộc tấn công tái tổ chức một block (One-Block Reorg Attack) được mô tả ở trên (được điều chỉnh từ https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair (opens in a new tab))
→ Một cuộc tấn công tinh vi hơn có thể chia tập hợp các nút trung thực thành những nhóm riêng biệt quan sát thấy đầu chuỗi khác nhau. Đây được gọi là cuộc tấn công cân bằng. Những kẻ tấn công chờ cơ hội để đề xuất khối và khi cơ hội đến và họ đề xuất hai khối cùng lúc một cách mập mờ. Họ gửi một khối cho một nữa nút trung thực và gửi khối kia cho nữa còn lại. Hành vi mập mờ sẽ bị thuật toán chọn nhánh phát hiện và người đề xuất khối sẽ bị cắt quỹ (Slashed) và loại khỏi mạng lưới, nhưng hai khối vẫn sẽ tồn tại và mỗi khói có khoảng một nữa tập nút xác thực xác nhận cho từng nhánh. Trong khi đó, những nút xác thực độc hại còn lại giữ sự chứng thực của mình. Sau đó, bằng cách có chọn lọc phát hành sự chứng thực ủng hộ một nhánh theo ý muốn để vừa đủ nút xác thực ngay khi thuật toán chọn nhánh thực thi, họ sẽ làm lệch cán cân ủng hộ về phía một nhánh mà họ muốn. Điều này có thể tiếp diễn mãi mãi, khi các nút xác thực tấn công duy trì việc chia rẽ các nút xác thực trên hai nhánh. Vì không có nhánh nào đạt được tỉ lệ 2/3 mạng lưới không thể chốt cuối cùng.
Tấn công Bounching cũng tương tự. Các phiếu bầu được giữ lại bởi những nút tấn công. Thay vì phát hành phiếu bầu để duy trì việc cân bằng giữa hai nhánh, họ sử dụng phiếu bầu ở điểm thuận lợi để sử dụng các phiếu bầu của mình nhằm chứng thực ở các điểm kiểm soát sai cho chúng luân phiên giữa nhánh A và nhánh B. Việc chuyển qua lại chứng thực giữa hai nhánh này ngăn việc hình thành một cặp chứng thực liên tiếp để có thể chốt bất kì nhánh nào, khiến quá trình chốt cuối cùng bị trì hoãn.
Cả tấn công Bouncing và cân bằng đều dựa trên việc kẻ tấn công có thể kiểm soát chính xác thời gian truyền thông điệp trên mạng lưới, đều mà khó làm được. Tuy nhiên, cơ chế ngăn ngừa đã được tích hợp vào giao thức dưới dạng tăng sức ảnh hưởng cho các thông điệp được gửi kịp thời so với các thông điệp chậm trễ. Đây còn biết đến là giải pháp tăng sức ảnh hưởng cho đề xuất (opens in a new tab). Để chống lại tấn công Bouncing giao thức chọn nhánh đã được cập nhật sao cho điểm kiểm soát được chứng thực chỉ có thể được chuyển sang chuỗi thay thế trong vòng 1/3 thời gian Slot ở mỗi Slot (opens in a new tab). Điều kiện này ngăn kẻ tấn công lưu trữ phiếu bầu trì hoãn lâu hơn - thuật toán chọn nhánh chỉ đơn giản là tuân thủ việc điểm kiểm soát mà nó đã chọn trong 1/3 chu kỳ đầu tiên, khoảng thời gian mà hầu hết các nút trung thực bỏ phiếu.
Kết hợp lại, những giải pháp này tạo ra một tình huống mà trong đó một khối đề xuất lan tỏa rất nhanh ngay khi Slot bắt đầu, sau đó có một khoảng thời gian ~1/3 Slot (4 giây) trong đó khối mới này có thể khiến thuật toán chọn nhánh chuyển sang chuỗi khác. Sau mốc thời gian đó, những sự chứng thực đến từ những nút chậm sẽ bị giảm sức ảnh hưởng so với sự chứng thực đã đến sớm hơn. Điều này tạo lợi thế cho những người đề xuất và nút xác thực trong việc xác định đầu là đầu chuỗi và làm giảm đáng kể khả năng tấn công cân bằng hoặc Bouncing thành công.
Cần lưu ý rằng việc tăng cường cho người đề xuất (proposer boosting) chỉ bảo vệ chống lại “các cuộc tái tổ chức rẻ tiền”, tức là những cuộc tấn công do kẻ tấn công có cổ phần nhỏ thực hiện. Thực tế, chính cơ chế "tăng ảnh hưởng cho người đề xuất" cũng có thể cổ đông lớn lợi dụng. Tác giả của bài đăng này (opens in a new tab) đã miêu tả cách mà những kẻ tấn công với 7% cổ phần có thể triển khai phiếu bầu một cách có chiến lượt để lừa nút trung thực xây trên nhánh của họ, tái thiết lập nhánh và loại bỏ khối hợp lệ. Cuộc tấn công này được đưa ra dựa trên giã định điều kiện đồ trễ lý tưởng, vốn rất hiếm khi xảy ra. Xác suất thành công của kẻ tấn công vẫn rất thấp, và việc nắm giữ nhiều cổ phần cũng đồng nghĩa với rủi ro vốn lớn hơn, tạo ra răn đe về kinh tế để không tấn công.
Một cuộc tấn công cân bằng nhắm vào luật LMD (opens in a new tab) được đề xuất và được cho là khả thi ngay khi có cả cơ chế tăng ảnh hưởng người đề xuất. Một kẻ tấn công tạo ra hai chuỗi cạnh tranh bằng cách đưa ra hai khối mập mờ và phát tán mỗi khối cho nữa mạng lưới, thiết lập sự cân bằng giữa các nhánh. Sau đó, các nút thông đồng cùng nhau bỏ phiếu một các mập mờ, canh cho thời điểm mà một nữa mạng nhận phiếu của nhánh A trước, nữa còn lại nhận phiếu cho nhánh B trước. Vì quy tắc LMD loại bỏ chứng thực thứ hai chỉ giữ những chứng thực đầu tiên của mỗi nút xác thực, nên một nữa mạng sẽ nhìn thấy phiếu cho A và một nữa sẽ nhìn thấy phiếu B và không có A. Tác giả cho rằng quy tắc LMD đã trao cho kẻ tấn công một "quyền lực đáng kể" để tạo cuộc tấn công cân bằng.
Kiểu tấn công LMD này được ngăn bằng cách cập nhật thuật toán chọn nhánh (opens in a new tab) để loại bỏ hoàn toàn các nút sinh mâu thuẫn khỏi quá trình xem xét chọn nhánh. Các nút xác thực mập mờ cũng giảm sức ảnh hưởng trong tương lai theo thuật toán chọn nhánh. Điều này giúp ngăn chặn cuộc tấn công cân bằng đã đề cập, đồng thời duy trì khản năng chống chịu trước các cuộc tấn công tuyết lỡ (Avalanche Attacks).
Một loại tấn công, có tên tấn công tuyết lỡ (opens in a new tab), được đề cập vào nghiên cứu tháng 3 năm 2022 (opens in a new tab). Để tiến hành một cuộc tấn công tuyết lỡ, kẻ tấn công cần kiểm soát được nhiều người đề xuất khối liên tiếp. Trong mỗi khe thời gian đề xuất khối, kẻ tấn công giữ lại khối của mình, tích lũy chúng cho đến khi chuỗi trung thực đạt được trọng số nhánh con ngang bằng với các khối bị giữ lại. Sau đó, các khối bị giữ lại được tung ra để tạo ra sự mâu thuẫn tối đa (maximal equivocation). Tác giả cho rằng việc tăng ảnh hưởng cho người đề xuất - cách phòng thủ chính chống tấn công cân bằng và tấn công Bouncing - lại không bảo vệ được trước tấn công tuyết lỡ. Tuy nhiên, các tác giả cũng chỉ chứng minh cuộc tấn công này trong điều kiện lý tưởng của thuật toán chọn nhánh Ethereum - không phải thực nghiệm (họ dùng GHOST mà không có LMD).
Tấn công tuyết lỡ này được giảm thiểu nhờ phần LMD trong thuật toán chọn nhánh LMD-GHOST. LMD có nghĩa là "dựa trên thông điệp mới nhất" (“Latest-Message-Driven”) và nó ám chỉ một bảng giữ bởi mỗi nút xác thực bao gồm các thông điệp gần đây nhất được gửi bởi các nút xác thực khác. Trường thông tin này chỉ cập nhật nếu có thông điệp mới hơn đến từ một Slot sau so với thông điệp đã lưu của nút xác thực đó. Trên thực tế đều này có nghĩa là trong mỗi Slot, thông điệp đầu tiên được nhận sẽ được tiếp nhận và những thông điệp tiếp theo sẽ được xem là mâu thuẫn và bị bỏ qua. Nói cách khác, các Client đồng thuận không tính các trường hợp mâu thuẫn này - chúng sử dụng thông điệp đầu tiên từ mỗi nút xác thực và đơn giản loại bỏ thông điệp trùng lặp, ngăn chặn cuộc tấn công tuyết lở.
Có một số nâng cấp tiềm năng tương lai với quy tắc chọn nhánh có thể gia tăng mức độ an toàn bên cạnh cơ chế tăng ảnh hưởng người đề xuất. Một trong số đó là hợp nhất quan điểm (View-Merge) (opens in a new tab), trong đó người kiểm chứng sẽ "đóng băng" quan điểm của họ về chọn nhánh trong vòng n giây trước khi Slot bắt đầu và người kiểm chứng sẽ giúp đồng bộ hóa quan điểm về chuỗi trên toàn mạng lưới. Một nâng cấp tiềm năng khác là chốt chuỗi trong một Slot (Single-Slot Finality) (opens in a new tab), giúp bảo vệ khỏi các cuộc tấn công dựa trên thời điểm truyền thông điệp bằng cách chốt cuối chuỗi trong vòng một Slot.
Sự trì hoãn của việc chốt chuỗi
Nghiên cứu này (opens in a new tab) vốn là nơi đầu tiên miêu tả cuộc tấn công tái tổ chức chuỗi bằng một khối chi phí thấp, cũng mô tả cuộc tấn công trì hoãn chốt chuỗi (Finality Delay hay còn gọi là "Liveness Failure") dựa trên việc kẻ tấn công trở thành người đề xuất khối tại ranh giới chu kỳ. Điều này rất quan trọng vì các ranh giới tại chu kỳ trở thành điểm kiểm tra mà một "Casper FFG" (cơ chế chung cuộc) được sử dụng để chốt một phần của chuỗi. Kẻ tấn công đơn giản giữ khối đến khi nút trung thực sử dụng phiếu bầu FFG ủng hộ ranh giới khối trước đó, xem khối đó như mục tiêu chốt chuỗi ở thời điểm hiện tại. Sau đó chúng tung ra khối bị giữ. Chúng chứng thực khối của mình và những nút trung thực cũng làm như vậy, tạo thành các nhánh có điểm kiểm soát mục tiêu khác nhau. Nếu chúng canh đúng thời điểm, chúng sẽ ngăn cản quá trình chốt chuỗi, vì không có đại đồng thuận 2/3 nào được chứng thực cho một trong hai nhánh. Càng ít cổ phần (Stake), thì việc canh thời gian càng phải chính xác hơn, vì kẻ tấn công kiểm soát trực tiếp ít sự chứng thực hơn, và xác suất kẻ tấn công nắm quyền nút xác thực đề xuất khối ranh giới chu kỳ cũng thấp hơn.
Cuộc tấn công tầm xa
Cũng có một số loại tấn công đặc thù cho chuỗi khối chạy cơ chế bằng chứng cổ phần, trong đó một nút xác thực tham gia vào khối khởi nguyên duy trì một nhánh riêng và song song với nhánh chuỗi khối trung thực, và cuối cùng thuyết phục tập hợp nút trung thực chuyển sang nhánh đó tại một thời điểm thích hợp về sau. Kiểu tấn công này là bất khả thi trên Ethereum nhờ vào bộ chốt chuỗi (Finality Gadget), cơ chế đảm bảo tất cả các nút đồng tình trạng thái của chuỗi trung thực theo một khoảng thời gian định kì (gọi là "Checkpoints" - điểm kiểm soát). Cơ chế đơn giản này vô hiệu hóa kẻ tấn công từ xa bởi vì Client của Ethereum sẽ không thực hiện tái tổ chức chuỗi đối với các khối đã được chốt chuỗi. Các nút mới tham gia mạng sẽ làm vậy bằng các tìm một trạng thái được băm đáng tin cậy gần đây (gọi là một "điểm kiểm soát tin cậy gần đây - Weak Subjectivity (opens in a new tab)) và sử dụng khối khởi nguyên giả để tiếp tục xây dựng chuỗi. Điều này tạo ra một cổng tin cậy ('trust gate') đối với những nút mới tham gia mạng lưới, trước khi nó có thể tự mình xác minh thông tin.
Tấn công từ chối dịch vụ (Denial of Service)
Cơ chế bằng chứng cổ phần của Ethereum chọn một nút xác thực duy nhất từ tập hợp nút để làm người đề xuất khối trong mỗi Slot. Điều này có thể được tính toán bằng một hàm đã được công khai và do kẻ tấn công có thể phần nào xác định người đề xuất khối tiếp theo. Từ đó, kẻ tấn công có thể Spam đề xuất khối để ngăn cho trao đổi thông tin giữa các nút ngang hàng. Đối với phần còn lại của mạng, có vẻ như người đề xuất khối đang ngoại tuyến, và Slot đó sẽ đơn giản bị bỏ trống. Đây có thể xem là một hình thức kiểm duyệt với một số nút cụ thể, ngăn chúng thêm thông tin vào chuỗi khối. Việc triển khai bầu chọn người dẫn đầu bí mật (SSLE) hoặc các biến thể khác có thể giảm rủi ro tấn công từ chối dịch vụ (DoS), bởi vì chỉ có người đề xuất khối mới biết mình được chọn và lựa chọn này không thể bị biết trước. Điều này chưa được triển khai, nhưng đang là lĩnh vực nghiên cứu và phát triển (opens in a new tab) tích cực.
Tất cả những điều này cho thấy rằng rất khó để tấn công Ethereum thành công chỉ với một lượng cổ phần nhỏ. Những kiểu tấn công khả thi được mô tả ở đây đều ở trong môi trường lý tưởng, những điều kiện mạng gần như bất khả thi hoặc các lỗ hổng tấn công đã được khắc phục bằng những bản vá nhỏ trên phần mềm Client. Tất nhiên, điều này không loại trừ khả năng tồn tại các lỗ hổng chưa biết đến ngoài kia, nhưng nó cho thấy rằng để một kẻ tấn công với lượng cổ phần thiểu số có thể thành công, thì cần đến mức độ thành thạo kỹ thuật cực kỳ cao, kiến thức sâu về lớp đồng thuận, và cả sự may mắn. Từ góc nhìn của kẻ tấn công, lựa chọn tốt nhất có lẽ là tích lũy càng nhiều Ether càng tốt và quay lại với tỷ lệ cổ phần lớn hơn trong tổng số.
Kẻ tấn công nắm giữ ≥ 33% tổng lượng cổ phần
Tất cả các cuộc tấn công được đề cập trước đó trong bài viết này đều có khả năng thành công cao hơn khi kẻ tấn công có nhiều Ether để Stake hơn để bỏ phiếu, và có nhiều nút xác thực hơn có thể được chọn làm người đề xuất trong mỗi Slot. Do đó, một nút xác thực độc hại có thể nhắm tới việc kiểm soát càng nhiều Ether được Stake càng tốt.
Mốc 33% lượng Ether trên tổng mạng lưới là một ngưỡng quan trọng đối với kẻ tấn công, bởi vì chỉ cần nắm nhiều hơn mức này, họ đã có khả năng ngăn chuỗi đạt trạng thái chốt chuỗi mà không cần phải kiểm soát chi tiết hành động của các nút khác. Họ đơn giản chỉ cần cùng nhau “biến mất”. Nếu 1/3 hoặc nhiều hơn lượng Ether cổ phần được dùng để chứng thực độc hại hoặc không tham gia chứng thực, thì sẽ không tồn tại được đồng thuận đại đa số 2/3, và không thể chốt chuỗi. Biện pháp phòng thủ chống lại tình huống này là cơ chế rò rỉ khi không hoạt động (Inactivity Leak). Rò rỉ khi không hoạt động xác định những nút không thực hiện chứng thực, hoặc chứng thực trái ngược với số đông. Lượng Ether cổ phần của các nút không chứng thực này sẽ bị rút dần, cho đến khi tổng cộng họ chỉ còn chiếm dưới 1/3 cổ phần toàn mạng, từ đó có thể chốt chuỗi trở lại.
Mục đích của rò rỉ khi không hoạt động là giúp chuỗi có thể chốt lại. Tuy nhiên, kẻ tấn công cũng sẽ mất đi một phần lượng Ether đã Stake. Tình trạng không hoạt động kéo dài ở các nút chiếm 33% tổng số Ether đã Stake sẽ cực kỳ tốn kém, ngay cả khi những nút này không bị cắt quỹ (Slashing).
Giả sử mạng Ethereum không đồng bộ (tức là có độ trễ giữa việc gửi và nhận các thông điệp), một kẻ tấn công kiểm soát 34% tổng số cổ phần có thể gây ra tình trạng chốt chuỗi kép. Điều này xảy ra vì kẻ tấn công có thể mập mờ khi được chọn làm người đề xuất khối, rồi thực hiện bỏ phiếu đôi với toàn bộ nút của mình. Điều này tạo ra tình huống chuỗi khối bị chia nhánh, trong đó mỗi nhánh đều có 34% lượng Ether cổ phần bỏ phiếu cho nó. Mỗi nhánh chỉ cần thêm 50% nút còn lại bỏ phiếu ủng hộ, thì cả hai nhánh đều có thể đạt mức siêu đa số, và trong trường hợp đó cả hai chuỗi đều có thể được chốt. (Vì: 34% nút của kẻ tấn công + một nửa trong số 66% còn lại = 67% cho mỗi nhánh). Các khối cạnh tranh này cần phải được phân phối đến khoảng 50% nút trung thực mỗi bên. Do đó, cuộc tấn công này chỉ khả thi nếu kẻ tấn công có mức độ kiểm soát nhất định đối với thời điểm lan truyền thông điệp trên mạng, để có thể “đẩy” một nửa nút trung thực sang mỗi nhánh. Kẻ tấn công chắc chắn sẽ phải đánh mất toàn bộ côt phần của mình (34% trong tổng ~10 triệu Ether với tập nút xác thực hiện tại) để thực hiện được chốt chuỗi đôi, vì 34% nút của họ sẽ đồng thời bỏ phiếu đôi – một hành vi bị cắt quỹ với mức phạt tối đa. Biện pháp phòng thủ chống lại cuộc tấn công này chính là chi phí khổng lồ – phải hi sinh 34% tổng số Ether đã Stake. Để phục hồi sau cuộc tấn công này, cộng đồng Ethereum sẽ cần phải phối hợp bên ngoài và cùng đồng ý chọn đi theo một nhánh, bỏ qua nhánh còn lại.
Kẻ tấn công nắm giữ khoảng 50% tổng cổ phần
Với 50% lượng Ether cổ phần, một nhóm nút độc hại về mặt lý thuyết có thể chia chuỗi thành hai nhánh bằng nhau, rồi đơn giản sử dụng toàn bộ 50% cổ phần của mình để bỏ phiếu ngược lại với tập nút trung thực, từ đó duy trì hai nhánh và ngăn chốt chuỗi. Cơ chế rò rỉ khi không hoạt động trên cả hai nhánh cuối cùng cũng sẽ dẫn đến việc cả hai chuỗi đều được chốt. Tại thời điểm đó, lựa chọn duy nhất là quay về giải pháp khôi phục bằng cộng đồng.
Khả năng một nhóm nút đối địch có thể duy trì chính xác 50% tổng số cổ phần là rất thấp, do sự biến động trong số lượng nút trung thực, độ trễ mạng, v.v. — chi phí khổng lồ để thực hiện một cuộc tấn công như vậy, kết hợp với xác suất thành công thấp, dường như là một yếu tố răn đe mạnh mẽ đối với một kẻ tấn công biết suy nghĩ, đặc biệt là khi chỉ cần đầu tư thêm một chút để nắm nhiều_hơn 50% thì sẽ mở ra nhiều quyền lực hơn rất nhiều.
Nếu nắm >50% tổng số cổ phần, kẻ tấn công có thể thống trị hoàn toàn thuật toán chọn nhánh. Trong trường hợp này, kẻ tấn công có thể chứng thực với tư cách đa số, cho phép họ có đủ quyền kiểm soát để thực hiện các tái tổ chức chuỗi ngắn mà không cần đánh lừa các Client trung thực. Các nút trung thực sẽ làm theo, vì thuật toán chọn nhánh của họ cũng sẽ nhìn thấy chuỗi được kẻ tấn công ủng hộ là “chuỗi nặng nhất”, và như vậy chuỗi đó sẽ có thể được chốt. Điều này cho phép kẻ tấn công kiểm duyệt một số giao dịch, thực hiện các tái tổ chức chuỗi ngắn, và khai thác tối đa MEV bằng cách sắp xếp lại khối theo hướng có lợi cho mình. Biện pháp phòng thủ chống lại điều này chính là chi phí khổng lồ để nắm giữ cổ phần đa số (hiện tại gần 19 tỷ đô la Mỹ), khoản cổ phần này sẽ bị đặt vào rủi ro bởi vì lớp xã hội nhiều khả năng sẽ can thiệp và lựa chọn đi theo nhánh trung thực thiểu số, khiến cổ phần của kẻ tấn công bị mất giá nghiêm trọng.
Kẻ tấn công sử dụng >=66% tổng cổ phần trên mạng lưới
Một kẻ tấn công nắm giữ 66% hoặc nhiều hơn tổng lượng Ether cổ phần có thể chốt chuỗi mà họ muốn mà không cần ép buộc bất kỳ nút trung thực nào. Kẻ tấn công có thể đơn giản bỏ phiếu cho nhánh mình ưa thích và sau đó chốt nó, chỉ vì họ sở hữu đa số đồng thuận một cách gian lận. Với tư cách là đa số cổ đông, kẻ tấn công sẽ luôn kiểm soát nội dung các khối đã được chốt, có quyền chi tiêu, quay ngược rồi chi tiêu lại, kiểm duyệt một số giao dịch, và tái tổ chức chuỗi tùy ý. Bằng cách mua thêm ether để kiểm soát 66% thay vì 51%, kẻ tấn công trên thực tế đã “mua” khả năng thực hiện tái tổ chức chuỗi sau chốt chuỗi và đảo ngược chốt chuỗi (tức là thay đổi cả lịch sử chuỗi lẫn kiểm soát tương lai chuỗi). Biện pháp phòng thủ thực sự ở đây là chi phí khổng lồ để nắm giữ 66% tổng lượng Ether cổ phần, cùng với lựa chọn dựa vào lớp xã hội để phối hợp và thống nhất đi theo một nhánh thay thế. Chúng ta sẽ tìm hiểu chi tiết hơn về điều này trong phần tiếp theo.
Con người/cộng đồng: tuyến phòng thủ cuối cùng
Nếu các nút xác thực gian lận thành công trong việc chốt phiên bản chuỗi mà họ muốn, thì cộng đồng Ethereum sẽ rơi vào một tình huống khó xử. Chuỗi chính thức sẽ chứa một phần gian lận được ghi hẳn vào lịch sử, trong khi các nút trung thực có thể bị phạt vì đã thực chứng cho một chuỗi thay thế (chuỗi trung thực). Lưu ý rằng một chuỗi đã chốt nhưng lại sai lệch cũng có thể xuất phát từ một lỗi trong Client chiếm đa số. Cuối cùng, phương án dự phòng tối hậu là dựa vào lớp xã hội (social layer – Layer 0) để giải quyết tình huống.
Một điểm mạnh của cơ chế bằng chứng cổ phần của Ethereum đó là có một biên độ chiến lược phòng thủ (opens in a new tab) mà cộng đồng có thể áp dụng khi đối mặt với cuộc tấn công. Một phản ứng tối thiểu có thể là buộc các nút của kẻ tấn công thoát khỏi mạng mà không kèm theo bất kỳ hình phạt bổ sung nào. Để tham gia lại mạng, kẻ tấn công sẽ phải đi qua hàng chờ kích hoạt, cơ chế này đảm bảo tập hợp nút chỉ tăng trưởng dần dần. Ví dụ, việc thêm đủ nút để nhân đôi lượng Ether đang Stake mất khoảng 200 ngày, về cơ bản cho các nút trung thực hoãn được 200 ngày trước khi kẻ tấn công có thể thử lại một cuộc tấn công 51%. Tuy nhiên, cộng đồng cũng có thể quyết định trừng phạt kẻ tấn công nghiêm khắc hơn, bằng cách thu hồi các phần thưởng trước đó hoặc đốt một phần (tới 100%) số vốn mà họ đã Stake.
Dù kẻ tấn công bị áp đặt hình phạt nào đi nữa, cộng đồng cũng phải cùng nhau quyết định xem liệu chuỗi không trung thực, mặc dù được thuật toán chọn nhánh trong các client Ethereum ưu tiên, trên thực tế có phải là chuỗi không hợp lệ hay không, và rằng cộng đồng nên xây dựng tiếp trên chuỗi trung thực thay vì chuỗi đó. Các nút trung thực có thể cùng nhau đồng thuận xây dựng tiếp trên một nhánh của chuỗi khói Ethereum được cộng đồng chấp nhận, nhánh này có thể, ví dụ, đã tách ra khỏi chuỗi chuẩn hợp lệ trước khi cuộc tấn công bắt đầu, hoặc đã cưỡng bức loại bỏ các nút của kẻ tấn công. Các nút trung thực sẽ có động lực xây dựng trên chuỗi này bởi vì họ sẽ tránh được những hình phạt áp dụng cho việc họ không xác nhận chuỗi của kẻ tấn công. Các sàn giao dịch, on-ramps và những ứng dụng xây dựng trên Ethereum nhiều khả năng sẽ chọn chuỗi trung thực và đi theo các nút trung thực sang chuỗi khối trung thực.
Tuy nhiên, đây sẽ là một thách thức lớn về quản trị. Một số người dùng và nút xác thực chắc chắn sẽ chịu tổn hại khi chuyển trở lại chuỗi trung thực; các giao dịch trong những khối được xác thực sau cuộc tấn công có thể bị hoàn tác, gây gián đoạn cho lớp ứng dụng, và đơn giản là làm lung lay niềm tin của một số người vốn theo quan điểm mã nguồn là luật. Các sàn giao dịch và ứng dụng nhiều khả năng đã liên kết những hành động ngoài chuỗi với các giao dịch trên chuỗi mà giờ đây có thể bị hoàn tác, khởi đầu một chuỗi dài các việc thu hồi và chỉnh sửa rất khó xử lý công bằng — đặc biệt nếu lợi nhuận phi pháp đã được trộn lẫn, gửi vào tài chính phi tập trung hoặc các công cụ phái sinh khác, gây ra hiệu ứng dây chuyền cho cả người dùng trung thực. Chắc chắn sẽ có một số người dùng, thậm chí là các tổ chức, đã hưởng lợi từ chuỗi gian lận có chủ đích hay tình cờ và họ có thể phản đối việc chọn chuỗi để bảo vệ lợi ích của mình. Đã có những lời kêu gọi tập dượt trước phản ứng cộng đồng đối với các cuộc tấn công >51%, để khi xảy ra có thể phối hợp và giảm thiểu thiệt hại một cách nhanh chóng. Vitalik đã có một số thảo luận hữu ích về vấn đề này trên ethresear.ch tại đây (opens in a new tab) và tại đây (opens in a new tab) và trên Twitter tại đây (opens in a new tab). Mục tiêu của một phản ứng xã hội có sự phối hợp là phải nhắm trúng và cụ thể trong việc trừng phạt kẻ tấn công, đồng thời giảm thiểu tác động đối với những người dùng khác.
Quản trị đã là một đề tài phức tạp. Điều phối một phản ứng khẩn cấp của lớp-0 đối với một chuỗi gian lận đã được chốt chắn chắn là thử thách lớn với cộng đồng Ethereum, nhưng đều này đã diễn ra - tận hai lần - trong lịch sử Ethereum.
Tuy vậy, vẫn có một cảm giác khá an tâm khi biết rằng phương án dự phòng cuối cùng nằm ở đời thực. Rốt cuộc thì, dù có cả một tầng công nghệ phi thường phía trên, nếu điều tồi tệ nhất xảy ra, thì chính con người thật mới phải cùng nhau phối hợp để thoát khỏi tình huống đó.
Tóm tắt
Bài viết này tìm hiểu về một số cách mà kẻ tấn công có thể lợi dụng giao thức cơ chế bằng chứng cổ phần của Ethereum. Tái tổ chức và hoãn chốt chuỗi được bàn lợi dụng bởi kẻ tấn công để tăng tỷ lệ tổng Ether Stake. Nhìn chung, một kẻ tấn công càng có nhiều tiền càng có nhiều khả năng thành công bởi vì nó được chuyển thành sức mạnh bỏ phiếu tác động đến nội dung của khối tương lai. Tại một ngưỡng Eth Stake nhất định, kẻ tấn công sẽ lên cấp sức mạnh:
33%: hoãn chốt chuỗi
34%: hoãn chốt chuỗi, chốt chuỗi đôi
51%: hoãn chốt chuỗi, chốt chuỗi đôi, kiểm duyệt, kiểm soát tương lai của chuỗi khối
66%: hoãn chốt chuỗi, chốt chuỗi đôi, kiểm duyệt, kiểm soát tương lai và lịch sử của chuỗi khối
Cũng tồn tại một loạt các kiểu tấn công tinh vi hơn, chỉ cần một lượng nhỏ Ether đã Stake, nhưng lại đòi hỏi kẻ tấn công phải có trình độ rất cao để kiểm soát chính xác thời điểm truyền thông điệp, nhằm khiến tập nút trung thực ngả theo phía mình.
Nhìn chung, mặc dù có những hướng tấn công tiềm năng này, nhưng rủi ro thành công của một cuộc tấn công là thấp, chắc chắn còn thấp hơn so với cơ chế tương đương trong bằng chứng công việc. Nguyên nhân là do chi phí khổng lồ từ lượng Ether cổ phần mà kẻ tấn công phải đặt vào rủi ro nếu muốn áp đảo nút trung thực bằng sức mạnh bỏ phiếu. Cơ chế "vừa đấm vừa xoa" được tích hợp sẵn bảo vệ khỏi hầu hết các hành vi sai trái, đặc biệt là đối với những kẻ tấn công có lượng Stake nhỏ. Các cuộc tấn công tinh vi hơn như tấn công cân bằng hay Bouncing cũng khó có khả năng thành công, vì điều kiện mạng thực tế khiến việc kiểm soát chính xác việc phân phối thông điệp đến từng nhóm nút cụ thể là rất khó đạt được. Thêm vào đó, các đội ngũ phát triển Client đã nhanh chóng vá các lỗ hổng tấn công đã biết như Bouncing, cân bằng và tuyết lỡ chỉ bằng những bản vá đơn giản.
Các cuộc tấn công 34%, 51% hoặc 66% nhiều khả năng sẽ cần đến sự phối hợp cộng đồng ngoài đời để giải quyết. Mặc dù điều này có thể sẽ gây đau đớn cho cộng đồng, nhưng khả năng cộng đồng có thể phản ứng ngoài đời lại là một yếu tố răn đe mạnh mẽ đối với kẻ tấn công. Lớp xã hội của Ethereum chính là chốt chặn cuối cùng – một cuộc tấn công thành công về mặt kỹ thuật vẫn có thể bị vô hiệu nếu cộng đồng đồng thuận chọn đi theo một nhánh trung thực. Sẽ có một cuộc chạy đua giữa kẻ tấn công và cộng đồng Ethereum – hàng tỷ đô la bỏ ra cho một cuộc tấn công 66% nhiều khả năng sẽ bị xóa sạch bởi một phản ứng cộng đồng được phối hợp thành công nếu nó được thực hiện đủ nhanh, để lại cho kẻ tấn công những túi Ether Stake kẹt cứng, không thanh khoản, nằm trên một chuỗi gian lận đã bị cộng đồng Ethereum phớt lờ. Khả năng điều này cuối cùng mang lại lợi nhuận cho kẻ tấn công là cực kỳ thấp, đủ để trở thành một biện pháp răn đe hiệu quả. Đó là lý do tại sao việc đầu tư duy trì một lớp xã hội gắn kết, với những giá trị được đồng thuận chặt chẽ, lại quan trọng đến vậy.
Đọc thêm
- Thêm nhiều chi tiết ở trang này (opens in a new tab)
- Vitalik bàn về tính chung cuộc trong chốt chuỗi (opens in a new tab)
- Nghiên cứu LMD GHOST (opens in a new tab)
- Nghiên cứu về Casper-FFG (opens in a new tab)
- Nghiên cứu về Gasper (opens in a new tab)
- Tăng ảnh hưởng người đề xuất (opens in a new tab)
- Tấn công Bouncing trên ethresear.ch (opens in a new tab)
- Nghiên cứu SSLE (opens in a new tab)
