hs-v3: Don't allow registration of an all-zeroes client auth key.
commit37bcc9f3d2f2df0335a42c9692e7d5deafc03514
authorGeorge Kadianakis <desnacked@riseup.net>
Mon, 30 Mar 2020 13:09:52 +0000 (30 16:09 +0300)
committerNick Mathewson <nickm@torproject.org>
Mon, 13 Apr 2020 18:13:33 +0000 (13 14:13 -0400)
tree5c2cba0051f3461284a08c2e2dbc93d1014202cd
parente472737297f5924a584fc8f434aba085e89b887a
hs-v3: Don't allow registration of an all-zeroes client auth key.

The client auth protocol allows attacker-controlled x25519 private keys being
passed around, which allows an attacker to potentially trigger the all-zeroes
assert for client_auth_sk in hs_descriptor.c:decrypt_descriptor_cookie().

We fixed that by making sure that an all-zeroes client auth key will not be
used.

There are no guidelines for validating x25519 private keys, and the assert was
there as a sanity check for code flow issues (we don't want to enter that
function with an unitialized key if client auth is being used). To avoid such
crashes in the future, we also changed the assert to a BUG-and-err.
changes/bug33545 [new file with mode: 0644]
src/feature/control/control_hs.c
src/feature/hs/hs_client.h
src/test/test_hs_control.c