Revision 85244a42ea306dafef90a73405202825076e7173 authored by Callum Waters on 28 January 2020, 16:16:16 UTC, committed by Anton Kaliaev on 28 January 2020, 16:16:16 UTC
* lite2: add Start method

There are few reasons to do that:

1) separation of state and dynamics (some users will want to delay
   starting the light client; does not matter we should not allow them
   to create a light client object)
2) less important, but some users might not need autoUpdateRoutine and
   removeNoLongerTrustedHeadersRoutine routines

* lite2: wait till routines are finished in Stop

because they are started in Start, it feels more natural to wait for
them to finish in Stop.

* lite2: add TrustedValidatorSet func

* refactor cleanup code

* changed restore header and val function to handle negative height

* reverted restoreTrustedHeaderAndNextVals() functionality

Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
1 parent c5ecd80
Raw File
SECURITY.md
# Security

As part of our [Coordinated Vulnerability Disclosure
Policy](https://tendermint.com/security), we operate a [bug
bounty](https://hackerone.com/tendermint).
See the policy for more details on submissions and rewards.

Here is a list of examples of the kinds of bugs we're most interested in:

## Specification

- Conceptual flaws
- Ambiguities, inconsistencies, or incorrect statements
- Mis-match between specification and implementation of any component

## Consensus

Assuming less than 1/3 of the voting power is Byzantine (malicious):

- Validation of blockchain data structures, including blocks, block parts,
  votes, and so on
- Execution of blocks
- Validator set changes
- Proposer round robin
- Two nodes committing conflicting blocks for the same height (safety failure)
- A correct node signing conflicting votes
- A node halting (liveness failure)
- Syncing new and old nodes

## Networking

- Authenticated encryption (MITM, information leakage)
- Eclipse attacks
- Sybil attacks
- Long-range attacks
- Denial-of-Service

## RPC

- Write-access to anything besides sending transactions
- Denial-of-Service
- Leakage of secrets

## Denial-of-Service

Attacks may come through the P2P network or the RPC:

- Amplification attacks
- Resource abuse
- Deadlocks and race conditions
- Panics and unhandled errors

## Libraries

- Serialization (Amino)
- Reading/Writing files and databases
- Logging and monitoring

## Cryptography

- Elliptic curves for validator signatures
- Hash algorithms and Merkle trees for block validation
- Authenticated encryption for P2P connections

## Light Client

- Validation of blockchain data structures
- Correctly validating an incorrect proof
- Incorrectly validating a correct proof
- Syncing validator set changes


back to top