mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-11 21:23:35 +01:00
Merge branch 'maint-0.2.6' into release-0.2.6
This commit is contained in:
commit
b3f24b5de3
5
changes/bug11447
Normal file
5
changes/bug11447
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
o Minor features (DoS-resistance):
|
||||||
|
- Decrease the amount of reattempts that a hidden service is
|
||||||
|
willing to perform when its rendezvous circuits fail. This
|
||||||
|
reduces the computational cost for hidden service under heavy
|
||||||
|
load. Resolves ticket #11447.
|
4
changes/bug15515
Normal file
4
changes/bug15515
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Minor features (DoS-resistance):
|
||||||
|
- Make it harder for attackers to overwhelm hidden services with
|
||||||
|
introductions, by blocking multiple introduction requests on the
|
||||||
|
same circuit. Resolves ticket #15515.
|
@ -3181,6 +3181,9 @@ typedef struct or_circuit_t {
|
|||||||
* to the specification? */
|
* to the specification? */
|
||||||
unsigned int remaining_relay_early_cells : 4;
|
unsigned int remaining_relay_early_cells : 4;
|
||||||
|
|
||||||
|
/* We have already received an INTRODUCE1 cell on this circuit. */
|
||||||
|
unsigned int already_received_introduce1 : 1;
|
||||||
|
|
||||||
/** True iff this circuit was made with a CREATE_FAST cell. */
|
/** True iff this circuit was made with a CREATE_FAST cell. */
|
||||||
unsigned int is_first_hop : 1;
|
unsigned int is_first_hop : 1;
|
||||||
|
|
||||||
|
@ -149,6 +149,20 @@ rend_mid_introduce(or_circuit_t *circ, const uint8_t *request,
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We have already done an introduction on this circuit but we just
|
||||||
|
received a request for another one. We block it since this might
|
||||||
|
be an attempt to DoS a hidden service (#15515). */
|
||||||
|
if (circ->already_received_introduce1) {
|
||||||
|
log_fn(LOG_PROTOCOL_WARN, LD_REND,
|
||||||
|
"Blocking multiple introductions on the same circuit. "
|
||||||
|
"Someone might be trying to attack a hidden service through "
|
||||||
|
"this relay.");
|
||||||
|
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_TORPROTOCOL);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
circ->already_received_introduce1 = 1;
|
||||||
|
|
||||||
/* We could change this to MAX_HEX_NICKNAME_LEN now that 0.0.9.x is
|
/* We could change this to MAX_HEX_NICKNAME_LEN now that 0.0.9.x is
|
||||||
* obsolete; however, there isn't much reason to do so, and we're going
|
* obsolete; however, there isn't much reason to do so, and we're going
|
||||||
* to revise this protocol anyway.
|
* to revise this protocol anyway.
|
||||||
|
@ -90,7 +90,7 @@ typedef struct rend_service_port_config_t {
|
|||||||
#define MAX_INTRO_CIRCS_PER_PERIOD 10
|
#define MAX_INTRO_CIRCS_PER_PERIOD 10
|
||||||
/** How many times will a hidden service operator attempt to connect to
|
/** How many times will a hidden service operator attempt to connect to
|
||||||
* a requested rendezvous point before giving up? */
|
* a requested rendezvous point before giving up? */
|
||||||
#define MAX_REND_FAILURES 8
|
#define MAX_REND_FAILURES 1
|
||||||
/** How many seconds should we spend trying to connect to a requested
|
/** How many seconds should we spend trying to connect to a requested
|
||||||
* rendezvous point before giving up? */
|
* rendezvous point before giving up? */
|
||||||
#define MAX_REND_TIMEOUT 30
|
#define MAX_REND_TIMEOUT 30
|
||||||
|
Loading…
Reference in New Issue
Block a user