Impact
two peer-facing consensus request handlers assume that the history index is always available and call blockchain.history_store.history_index().unwrap() directly.
that assumption is false by construction. HistoryStoreProxy::history_index() explicitly returns None for the valid HistoryStoreProxy::WithoutIndex state. when a full node is syncing or otherwise running without the history index, a remote peer can send RequestTransactionsProof or RequestTransactionReceiptsByAddress and trigger an Option::unwrap() panic on the request path.
Patches
The patch for this vulnerability is formally released as part of v1.3.0.
Workarounds
No known workarounds.
References
See PR.
Impact
two peer-facing consensus request handlers assume that the history index is always available and call
blockchain.history_store.history_index().unwrap()directly.that assumption is false by construction.
HistoryStoreProxy::history_index()explicitly returnsNonefor the validHistoryStoreProxy::WithoutIndexstate. when a full node is syncing or otherwise running without the history index, a remote peer can sendRequestTransactionsProoforRequestTransactionReceiptsByAddressand trigger anOption::unwrap()panic on the request path.Patches
The patch for this vulnerability is formally released as part of v1.3.0.
Workarounds
No known workarounds.
References
See PR.