Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[zurich] Ghost-128 patch: downloader sync periodic TD check #544

Merged
merged 3 commits into from
May 18, 2023

Conversation

meowsbits
Copy link
Member

@meowsbits meowsbits commented May 17, 2023

This patch applies the countermeasure
to security vulnerability Ghost-128 described
by Taverna and Paterson of ETH Zurich in their
2023 paper Snapping Snap Sync: Practical Attacks
on Synchronising Go-Ethereum Nodes.

This patch, in both its design and implementation,
was originally authored and provided by the authors
of that paper, and details around both can be
found in the paper's Section 7.

The patch has been edited only in adaptation
to minor application conflicts.

…easure; periodic TD check

This patch applies the countermeasure
to security vulnerability Ghost-128 described
by Taverna and Paterson of ETH Zurich in their
2023 paper Snapping Snap Sync: Practical Attacks
on Synchronising Go-Ethereum Nodes.

This patch, in both its design and implementation,
was originally authored and provided by the authors
of that paper, and details around both can be
found in the paper's Section 7.

The patch has been only minorly edited in adaptation
to minor application conflicts.

A link to the research paper:
https://appliedcrypto.ethz.ch/content/dam/ethz/special-interest/infk/inst-infsec/appliedcrypto/research/TavernaPaterson-SnappingSnapSync.pdf

Date: 2023-05-17 06:29:29-07:00
Signed-off-by: meows <b5c6@protonmail.com>

eth/downloader: implement Ghost-128.patch methods for peer test types

Date: 2023-05-17 06:44:23-07:00
Signed-off-by: meows <b5c6@protonmail.com>

eth/downloader: goimports

Date: 2023-05-17 06:45:21-07:00
Signed-off-by: meows <b5c6@protonmail.com>

eth: fix p.Head implementation for WorstPeer method

Date: 2023-05-17 06:46:40-07:00
Signed-off-by: meows <b5c6@protonmail.com>
.*Starvation.* tests were failing because
errStallingPeer was expected but no error received.
The TD is advertised and assigned to the downloader
as expected, but the handshake with the peer's Head
method was causing the reassignment of the downloader.td
field to the actual (honest) TD value by virtue of
the virtuous dlp.Head method, which returned the actual
chain TD.
This caused the tests to fail because the sync TD was
not the fake one.
So this patch provides a field in the tester peer type
to actually handle lying about TD, which then
make the errStallingPeer error get returned.

Date: 2023-05-17 07:27:56-07:00
Signed-off-by: meows <b5c6@protonmail.com>
This gets called often for all peers,
resulting in blabby logging.
Peer information is available on request
through the API.

Date: 2023-05-18 05:59:02-07:00
Signed-off-by: meows <b5c6@protonmail.com>
Copy link
Contributor

@diega diega left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚢

Copy link
Member

@ziogaschr ziogaschr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's ship it

@meowsbits meowsbits merged commit ed7531b into master May 18, 2023
@meowsbits meowsbits deleted the zurich-patch-2-pr branch May 18, 2023 14:00
@diega diega mentioned this pull request May 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants