Skip to content

Sampling Protocol / Fisherman is gameable #5

@DragonDmoney

Description

@DragonDmoney

Problem

The Sampling Protocol of the Fisherman (according to the spec) is able to be manipulated by ServiceNodes. According to the spec, there is a Consistent Sampling Delay between every benchmark/sample of all the service nodes in a session. An attacker could monitor his incoming requests, figure out the delay, and only give service to the Fisherman instead of to all applications.

The aim of the Sampling Protocol is to be discreet, so ServiceNodes do not know which requests are from the Fisherman or an application, and they are forced to give equal service to all requests. However, this is not the case.

image

How to attack the current system

  1. Wait till two or more of your nodes are in the same session.
  2. Monitor all incoming requests and send them to a shared server
  3. Identify requests that came in at the same time
  4. Identify another set of requests that came in at the same time
  5. Subtract and determine the consistent sampling delay
  6. Ignore all other requests between now + Consistent Sampling Delay

Solution

Change the Consistent Sampling Delay to a Random Sampling Delay, created from a private source of randomness.

Origin Document

https://docs.pokt.network/v1/utility#3.3-fisherman-protocol

Creator: DragonDmoney (Pierre)

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingenhancementNew feature or request

Type

No type

Projects

Status

In Review

Relationships

None yet

Development

No branches or pull requests

Issue actions