Tendermint 0.33.2 and earlier does not limit the number of P2P connection requests.
For each p2p connection, Tendermint allocates ~0.5MB. Even though this
memory is garbage collected once the connection is terminated (due to duplicate
IP or reaching a maximum number of inbound peers), temporary memory spikes can
lead to OOM (Out-Of-Memory) exceptions.
Tendermint 0.33.3, 0.32.10, and 0.31.12 limit the total number of P2P incoming
connection requests to to p2p.max_num_inbound_peers + len(p2p.unconditional_peer_ids).
Notes:
Tendermint does not rate limit P2P connection requests per IP (an attacker
can saturate all the inbound slots);
Tendermint does not rate limit HTTP(S) requests. If you expose any RPC
endpoints to the public, please make sure to put in place some protection
(https://www.nginx.com/blog/rate-limiting-nginx/). We may implement this in
the future (#1696).
Denial of Service 2
Tendermint 0.33.2 and earlier does not reclaim activeID of a peer after it's
removed in Mempool reactor. This does not happen all the time. It only
happens when a connection fails (for any reason) before the Peer is created and
added to all reactors. RemovePeer is therefore called before AddPeer, which
leads to always growing memory (activeIDs map). The activeIDs map has a
maximum size of 65535 and the node will panic if this map reaches the maximum.
An attacker can create a lot of connection attempts (exploiting Denial of
Service 1), which ultimately will lead to the node panicking.
Tendermint 0.33.3, 0.32.10, and 0.31.12 claim activeID for a peer in InitPeer,
which is executed before MConnection is started.
Notes:
InitPeer function was added to all reactors to combat a similar issue -
#3338;
Denial of Service 2 is independent of Denial of Service 1 and can be executed
without it.
All clients are recommended to upgrade
... (truncated)
Commits
a0234af Merge pull request #3489 from tendermint/release/v0.31.1
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/FourthState/plasma-mvp-sidechain/network/alerts).
Bumps github.com/tendermint/tendermint from 0.28.0 to 0.31.1.
Release notes
Sourced from github.com/tendermint/tendermint's releases.
Changelog
Sourced from github.com/tendermint/tendermint's changelog.
... (truncated)
Commits
a0234af
Merge pull request #3489 from tendermint/release/v0.31.19390a81
minor changelog updates (#3499)a49d80b
catch up with develop and rebase on current release to include #3482ccfe75e
docs: Fix broken links (#3482) (#3488)ae88965
changelog: add summary & fix link & add external contributor (#3490)2338134
bump versions1b33a50
Merge remote-tracking branch 'remotes/origin/develop' into release/v0.31.13c7bb6b
Add some numbers for #27785fa540b
mempool: add a safety check, write tests for mempoolIDs (#3487)5272786
add external contributorsDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/FourthState/plasma-mvp-sidechain/network/alerts).