Repository navigation
Commit 7308946
Don't store ACK-only frames in TX history for QUIC.
When QUIC sends an ACK-only frame, there is no expectation that the
peer will ack that ack (i.e. it is itself not ack-eliciting). However,
our implementation stores these frames in the TX history regardless. In and
of itself thats ok, but if a malicious client establishes a connection,
and then drives the connection such that ack-only frames are forced from
the peer (i.e. by sending numerous ping frames), and then withholding
any subseqent acks for ack-eliciting data, like legitimate data, said
malicious client can force inappropriate memory growth on the server,
leading to potential DOS attacks.
Don't store any ACK-only frames in the TX history to address this. Record it in
our TX history so that the send window moves forward appropriately, but for
ack-only frames, immediately remove it, since we don't expect to get an ack for
them anyway.
Initially authored by Opal Wright <opal.wright@trailofbits.com>
The initial proposal had some shortcommings in which the highest pn
acked value was not accounted for which I have fixed with the assistance
of Claude
Assisted-by: Anthopic Sonnet 5
Fixes CVE-2026-63075
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Bob Beck <beck@openssl.org>
Merge-date: Mon Aug 24 12:09:01 20261 parent a17cc8d commit 7308946
3 files changed
Lines changed: 71 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
132 | 137 | | |
133 | 138 | | |
134 | 139 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1135 | 1135 | | |
1136 | 1136 | | |
1137 | 1137 | | |
| 1138 | + | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
1138 | 1170 | | |
1139 | 1171 | | |
1140 | 1172 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2935 | 2935 | | |
2936 | 2936 | | |
2937 | 2937 | | |
| 2938 | + | |
| 2939 | + | |
| 2940 | + | |
| 2941 | + | |
| 2942 | + | |
| 2943 | + | |
| 2944 | + | |
| 2945 | + | |
| 2946 | + | |
| 2947 | + | |
| 2948 | + | |
| 2949 | + | |
| 2950 | + | |
| 2951 | + | |
2938 | 2952 | | |
2939 | 2953 | | |
2940 | 2954 | | |
| |||
2943 | 2957 | | |
2944 | 2958 | | |
2945 | 2959 | | |
2946 | | - | |
2947 | | - | |
| 2960 | + | |
| 2961 | + | |
| 2962 | + | |
2948 | 2963 | | |
2949 | 2964 | | |
2950 | 2965 | | |
| |||
2971 | 2986 | | |
2972 | 2987 | | |
2973 | 2988 | | |
2974 | | - | |
| 2989 | + | |
2975 | 2990 | | |
2976 | 2991 | | |
2977 | 2992 | | |
| |||
3015 | 3030 | | |
3016 | 3031 | | |
3017 | 3032 | | |
3018 | | - | |
3019 | | - | |
| 3033 | + | |
| 3034 | + | |
| 3035 | + | |
| 3036 | + | |
3020 | 3037 | | |
3021 | 3038 | | |
3022 | 3039 | | |
3023 | 3040 | | |
3024 | 3041 | | |
3025 | 3042 | | |
3026 | | - | |
3027 | | - | |
3028 | | - | |
3029 | | - | |
3030 | | - | |
3031 | | - | |
| 3043 | + | |
| 3044 | + | |
| 3045 | + | |
| 3046 | + | |
| 3047 | + | |
| 3048 | + | |
3032 | 3049 | | |
3033 | 3050 | | |
3034 | | - | |
| 3051 | + | |
| 3052 | + | |
3035 | 3053 | | |
3036 | 3054 | | |
3037 | 3055 | | |
3038 | 3056 | | |
3039 | 3057 | | |
| 3058 | + | |
| 3059 | + | |
| 3060 | + | |
| 3061 | + | |
3040 | 3062 | | |
3041 | 3063 | | |
3042 | 3064 | | |
| |||
0 commit comments