Revision bb7a80ec7ecdf464702485493c05fea7d2a37f0e authored by Callum Waters on 06 February 2020, 11:30:37 UTC, committed by GitHub on 06 February 2020, 11:30:37 UTC
Closes #4328

When TrustedHeader(height) is called, if the height is less than the trusted height but the header is not in the trusted store then a function finds the previous lowest height with a trusted header and performs a forwards sequential verification to the header of the height that was given. If no error is found it updates the trusted store with the header and validator set for that height and can then return them to the user.

Commits:

* drafted trusted header

* created function to find previous trusted height

* updates missing headers less than the trusted height

* minor cosmetic tweaks

* incorporated suggestions

* lite2: implement Backwards verification

and add SignedHeaderAfter func to Store interface

Refs https://github.com/tendermint/tendermint/issues/4328#issuecomment-581878549

* remove unused method

* write tests

* start with next height in SignedHeaderAfter func

* fix linter errors

* address Callum's comments

Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
1 parent df3eee4
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