You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
aioquic may infinitely receive PATH_CHALLENGE frames and store challenge data in remote_challenges, resulting in unbounded memory usage. It may lead to a denial-of-service attack.
#483 appears to be the cause of this vulnerability. Although MAX_REMOTE_CHALLENGES is defined, the constant is not used. As a result, the remote_challenges queue can grow infinitely.
This issue is verified to be reproducible, by constantly writing path challenge frames, aioquic has consumed almost 10GB of memory and will eventually be killed by the OS.
Although connection.py's line 3041 empties network_path.remote_challenges, however, if the client chooses not to send an ACK message in response to the path response, aioquic does not go as far as this statement, causing the network_path.remote_challengesqueue to continue to accumulate.
Summary
aioquic may infinitely receive
PATH_CHALLENGE
frames and store challenge data inremote_challenges
, resulting in unbounded memory usage. It may lead to a denial-of-service attack.Tested Version
Latest git commit (9bc1e43)
Details
#483 appears to be the cause of this vulnerability. Although MAX_REMOTE_CHALLENGES is defined, the constant is not used. As a result, the
remote_challenges
queue can grow infinitely.Suggestion
aioquic/src/aioquic/quic/connection.py
Line 2045 in 9bc1e43
Check the length of
remote_challenges
before appending challenge data.The text was updated successfully, but these errors were encountered: