-
Notifications
You must be signed in to change notification settings - Fork 779
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
num_req_outstanding might overflow in tlul_socket_1n #10328
Comments
that's a reasonable change although I'm not quite sure what security this would add to the system. |
Yes, exactly. Denial of service of a host in the system. |
The attack scenario, even with the changes, cannot be prevented in my opinion. As The list goes on and on to completely block this attack. I think it would be simpler to rely on Watchdog timer in this case as the crossbar hangs. |
yeah i tend to agree with @eunchan. The denial of service of type attacks are not something we really cover. Still I think this particular enhancement is not cumbersome, i could just absorb it. |
This is not something we are going to address for M3 since it is a guard against something that is not really in scope. |
Triaged for |
I am closing this issue as not planned as it adds marginal defense against something that is not in scope anyway (denial of service on bus). |
Suppose a host has one outstanding request to some peripheral. In that case, the host's 1:N socket will have its
num_req_outstanding
set to "1" anddev_select_outstanding
pointing to the appropriate device. The device responds by raising thed_valid
signal, which is considered accepted if the host'sd_ready
signal is also HIGH. If the response is accepted,num_req_outstanding
decrements to "0", and assuming the host is not making any new requests,dev_select_outstanding
retains its previous value.If the peripheral continues holding the
d_valid
signal HIGH, a new "response" might be registered by the socket if thed_ready
signal is still HIGH (as is always the case with e.g. the main core). This is because the response routing logic only takes thedev_select_outstanding
signal into account:This extra response will then get registered as accepted and gets forwarded to the host. More importantly, the
num_req_outstanding
gets decremented again resulting in an overflow, which then raises thehold_all_requests
signal, essentially blocking the host from making any further requests to the crossbar.I have managed to create this scenario by adding a corrupted peripheral to the system for the purposes of my research:
Even though this behavior is not anticipated from any of the peripheral devices during normal operation, I think a small change of the response routing logic code would add to the security of the system, like for example:
The text was updated successfully, but these errors were encountered: