I got 5x within last 36 ours with 0.4.1.1-alpha: [warn] Received circuit padding stop command for unknown machine. -shall I ignore that?
I'm marking this as 041-must, because we will get lots of bug reports from relay operators if we release a stable with this warning. At the very least, we must downgrade it to a protocol error.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
This is interesting. The actual log is due refactoring eliminating a return value propogation/check of free_circ_machine_infos_with_machinenum() in circpad_handle_padding_negotiate(). As a result of the check being removed, the logline is always printing even if the machine is valid and did exist. So adding the check back in will eliminate most of those.
It's not happening that often because normally client-side does not send STOP commands. The client will only send a STOP of the machine conditions cease applying. This can happen in the event of a circuit build timeout (and associated purpose change to MEASUREMENT), though.
So I think all we have to do is make free_circ_machine_infos_with_machinenum() return a success/fail result, and check it properly in circpad_handle_padding_negotiate(), before warning.
Can you be more specific? Do you mean the origin-side messages? I changed those from LD_PROTOCOL because I think they should be LD_CIRC. But they are not relay side, they are origin side. It's my understanding that relay side messages are what LOG_PROTOCOL_WARN is for.
Hrmm.. but there is something that origins can do.. They can use ExcludeNodes to blacklist nodes that violoate protocol. Based on the reasoning for having LOG_PROTOCOL_WARN, it sounds like origin-facing procotol warns that mention the idhex and recommend ExcludeNodes should be fine as regular warns.
The reasoning is that I think that some users would prefer having padding defenses work over using broken nodes that violate protocol. Right now, circpad does not kill the circuit if padding fails in a bizarre way. I am thinking it should, or at least should tell the user and advise them.
This ticket got a lot more complicated than fixing this bug.. Should we make a different ticket about the warns?
Hrmm.. but there is something that origins can do.. They can use ExcludeNodes to blacklist nodes that violoate protocol. Based on the reasoning for having LOG_PROTOCOL_WARN, it sounds like origin-facing procotol warns that mention the idhex and recommend ExcludeNodes should be fine as regular warns.
I think you should talk to the Tor Browser team and UX team about this kind of warning. It could confuse a lot of Tor Browser users.
The reasoning is that I think that some users would prefer having padding defenses work over using broken nodes that violate protocol. Right now, circpad does not kill the circuit if padding fails in a bizarre way. I am thinking it should, or at least should tell the user and advise them.
We need to design tor for the majority of our users, who do not edit their torrcs. But we also need to have advanced options available for users who need strict privacy. I don't know if there's a way to do both: we should talk to the UX team.
This ticket got a lot more complicated than fixing this bug.. Should we make a different ticket about the warns?
I pushed more log protocol warn updates to the PR: now when padding negotiation fails due to either corrupt cell or "valid" refusal, we LOG_PROTOCOL_WARN. Those should not happen, but one of them was at info, so it was already quiet.
I will file a new ticket for evaluating if the origin-side LOG_PROTOCOL_WARNs here should be LOG_WARNs or not.
I added a log for receiving a legit STOP command, and also promoted a protocol warn for receiving a padding from the wrong hop to a normal warn. I think if this happens we want to learn about it.