Merge branch 'tor-github/pr/1700'

This commit is contained in:
George Kadianakis 2020-02-04 13:06:00 +01:00
commit 6c749bf38c
2 changed files with 15 additions and 11 deletions

4
changes/ticket32706 Normal file
View file

@ -0,0 +1,4 @@
o Minor bugfixes (onion service v2):
- Move a series of warnings to protocol warning level because they can all
be triggered remotely by a malformed request. Fixes bug 32706; bugfix on
0.1.1.14-alpha.

View file

@ -59,7 +59,7 @@ rend_mid_establish_intro_legacy(or_circuit_t *circ, const uint8_t *request,
pk = crypto_pk_asn1_decode((char*)(request+2), asn1len); pk = crypto_pk_asn1_decode((char*)(request+2), asn1len);
if (!pk) { if (!pk) {
reason = END_CIRC_REASON_TORPROTOCOL; reason = END_CIRC_REASON_TORPROTOCOL;
log_warn(LD_PROTOCOL, "Couldn't decode public key."); log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Couldn't decode public key.");
goto err; goto err;
} }
@ -81,7 +81,7 @@ rend_mid_establish_intro_legacy(or_circuit_t *circ, const uint8_t *request,
(char*)request, 2+asn1len+DIGEST_LEN, (char*)request, 2+asn1len+DIGEST_LEN,
(char*)(request+2+DIGEST_LEN+asn1len), (char*)(request+2+DIGEST_LEN+asn1len),
request_len-(2+DIGEST_LEN+asn1len))<0) { request_len-(2+DIGEST_LEN+asn1len))<0) {
log_warn(LD_PROTOCOL, log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Incorrect signature on ESTABLISH_INTRO cell; rejecting."); "Incorrect signature on ESTABLISH_INTRO cell; rejecting.");
reason = END_CIRC_REASON_TORPROTOCOL; reason = END_CIRC_REASON_TORPROTOCOL;
goto err; goto err;
@ -162,9 +162,9 @@ rend_mid_introduce_legacy(or_circuit_t *circ, const uint8_t *request,
if (request_len < (DIGEST_LEN+(MAX_NICKNAME_LEN+1)+REND_COOKIE_LEN+ if (request_len < (DIGEST_LEN+(MAX_NICKNAME_LEN+1)+REND_COOKIE_LEN+
DH1024_KEY_LEN+CIPHER_KEY_LEN+ DH1024_KEY_LEN+CIPHER_KEY_LEN+
PKCS1_OAEP_PADDING_OVERHEAD)) { PKCS1_OAEP_PADDING_OVERHEAD)) {
log_warn(LD_PROTOCOL, "Impossibly short INTRODUCE1 cell on circuit %u; " log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"responding with nack.", "Impossibly short INTRODUCE1 cell on circuit %u; "
(unsigned)circ->p_circ_id); "responding with nack.", (unsigned)circ->p_circ_id);
goto err; goto err;
} }
@ -258,7 +258,7 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request,
} }
if (circ->base_.n_chan) { if (circ->base_.n_chan) {
log_warn(LD_PROTOCOL, log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Tried to establish rendezvous on non-edge circuit"); "Tried to establish rendezvous on non-edge circuit");
goto err; goto err;
} }
@ -270,8 +270,8 @@ rend_mid_establish_rendezvous(or_circuit_t *circ, const uint8_t *request,
} }
if (hs_circuitmap_get_rend_circ_relay_side(request)) { if (hs_circuitmap_get_rend_circ_relay_side(request)) {
log_warn(LD_PROTOCOL, log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Duplicate rendezvous cookie in ESTABLISH_RENDEZVOUS."); "Duplicate rendezvous cookie in ESTABLISH_RENDEZVOUS.");
goto err; goto err;
} }
@ -313,9 +313,9 @@ rend_mid_rendezvous(or_circuit_t *circ, const uint8_t *request,
int reason = END_CIRC_REASON_INTERNAL; int reason = END_CIRC_REASON_INTERNAL;
if (circ->base_.purpose != CIRCUIT_PURPOSE_OR || circ->base_.n_chan) { if (circ->base_.purpose != CIRCUIT_PURPOSE_OR || circ->base_.n_chan) {
log_info(LD_REND, log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
"Tried to complete rendezvous on non-OR or non-edge circuit %u.", "Tried to complete rendezvous on non-OR or non-edge circuit %u.",
(unsigned)circ->p_circ_id); (unsigned)circ->p_circ_id);
reason = END_CIRC_REASON_TORPROTOCOL; reason = END_CIRC_REASON_TORPROTOCOL;
goto err; goto err;
} }