mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Merge branch 'maint-0.2.3'
This commit is contained in:
commit
6061cd584c
8
changes/bug6252
Normal file
8
changes/bug6252
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
o Security fixes:
|
||||||
|
- Tear down the circuit if we get an unexpected SENDME cell. Clients
|
||||||
|
could use this trick to make their circuits receive cells faster
|
||||||
|
than our flow control would have allowed, or to gum up the network,
|
||||||
|
or possibly to do targeted memory denial-of-service attacks on
|
||||||
|
entry nodes. Fixes bug 6252. Bugfix on the 54th commit on Tor --
|
||||||
|
from July 2002, before the release of Tor 0.0.0.
|
||||||
|
|
@ -1265,11 +1265,25 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
|
|||||||
case RELAY_COMMAND_SENDME:
|
case RELAY_COMMAND_SENDME:
|
||||||
if (!conn) {
|
if (!conn) {
|
||||||
if (layer_hint) {
|
if (layer_hint) {
|
||||||
|
if (layer_hint->package_window + CIRCWINDOW_INCREMENT >
|
||||||
|
CIRCWINDOW_START_MAX) {
|
||||||
|
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
|
||||||
|
"Bug/attack: unexpected sendme cell from exit relay. "
|
||||||
|
"Closing circ.");
|
||||||
|
return -END_CIRC_REASON_TORPROTOCOL;
|
||||||
|
}
|
||||||
layer_hint->package_window += CIRCWINDOW_INCREMENT;
|
layer_hint->package_window += CIRCWINDOW_INCREMENT;
|
||||||
log_debug(LD_APP,"circ-level sendme at origin, packagewindow %d.",
|
log_debug(LD_APP,"circ-level sendme at origin, packagewindow %d.",
|
||||||
layer_hint->package_window);
|
layer_hint->package_window);
|
||||||
circuit_resume_edge_reading(circ, layer_hint);
|
circuit_resume_edge_reading(circ, layer_hint);
|
||||||
} else {
|
} else {
|
||||||
|
if (circ->package_window + CIRCWINDOW_INCREMENT >
|
||||||
|
CIRCWINDOW_START_MAX) {
|
||||||
|
log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL,
|
||||||
|
"Bug/attack: unexpected sendme cell from client. "
|
||||||
|
"Closing circ.");
|
||||||
|
return -END_CIRC_REASON_TORPROTOCOL;
|
||||||
|
}
|
||||||
circ->package_window += CIRCWINDOW_INCREMENT;
|
circ->package_window += CIRCWINDOW_INCREMENT;
|
||||||
log_debug(LD_APP,
|
log_debug(LD_APP,
|
||||||
"circ-level sendme at non-origin, packagewindow %d.",
|
"circ-level sendme at non-origin, packagewindow %d.",
|
||||||
|
Loading…
Reference in New Issue
Block a user