Commit 5bc48b1
committed
netfilter: nf_tables: fix chain binding transaction logic
jira LE-1907
cve CVE-2023-3610
cve CVE-2023-3390
Rebuild_History Non-Buildable kernel-rt-5.14.0-284.30.1.rt14.315.el9_2
commit-author Pablo Neira Ayuso <pablo@netfilter.org>
commit 4bedf9e
Add bound flag to rule and chain transactions as in 6a0a8d1
("netfilter: nf_tables: use-after-free in failing rule with bound set")
to skip them in case that the chain is already bound from the abort
path.
This patch fixes an imbalance in the chain use refcnt that triggers a
WARN_ON on the table and chain destroy path.
This patch also disallows nested chain bindings, which is not
supported from userspace.
The logic to deal with chain binding in nft_data_hold() and
nft_data_release() is not correct. The NFT_TRANS_PREPARE state needs a
special handling in case a chain is bound but next expressions in the
same rule fail to initialize as described by 1240eb9 ("netfilter:
nf_tables: incorrect error path handling with NFT_MSG_NEWRULE").
The chain is left bound if rule construction fails, so the objects
stored in this chain (and the chain itself) are released by the
transaction records from the abort path, follow up patch ("netfilter:
nf_tables: add NFT_TRANS_PREPARE_ERROR to deal with bound set/chain")
completes this error handling.
When deleting an existing rule, chain bound flag is set off so the
rule expression .destroy path releases the objects.
Fixes: d0e2c7d ("netfilter: nf_tables: add NFT_CHAIN_BINDING")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
(cherry picked from commit 4bedf9e)
Signed-off-by: Jonathan Maple <jmaple@ciq.com>1 parent 2494077 commit 5bc48b1
File tree
3 files changed
+153
-41
lines changed- include/net/netfilter
- net/netfilter
3 files changed
+153
-41
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
964 | 964 | | |
965 | 965 | | |
966 | 966 | | |
967 | | - | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
968 | 971 | | |
969 | 972 | | |
970 | 973 | | |
| |||
1033 | 1036 | | |
1034 | 1037 | | |
1035 | 1038 | | |
| 1039 | + | |
1036 | 1040 | | |
1037 | 1041 | | |
1038 | 1042 | | |
| |||
1069 | 1073 | | |
1070 | 1074 | | |
1071 | 1075 | | |
| 1076 | + | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
1072 | 1081 | | |
1073 | 1082 | | |
1074 | 1083 | | |
1075 | 1084 | | |
1076 | 1085 | | |
| 1086 | + | |
1077 | 1087 | | |
1078 | 1088 | | |
1079 | 1089 | | |
| |||
1508 | 1518 | | |
1509 | 1519 | | |
1510 | 1520 | | |
| 1521 | + | |
1511 | 1522 | | |
1512 | 1523 | | |
1513 | 1524 | | |
| |||
1516 | 1527 | | |
1517 | 1528 | | |
1518 | 1529 | | |
| 1530 | + | |
| 1531 | + | |
1519 | 1532 | | |
1520 | 1533 | | |
1521 | 1534 | | |
| |||
1540 | 1553 | | |
1541 | 1554 | | |
1542 | 1555 | | |
| 1556 | + | |
1543 | 1557 | | |
1544 | 1558 | | |
1545 | 1559 | | |
1546 | 1560 | | |
| 1561 | + | |
1547 | 1562 | | |
1548 | 1563 | | |
1549 | 1564 | | |
| 1565 | + | |
| 1566 | + | |
1550 | 1567 | | |
1551 | 1568 | | |
1552 | 1569 | | |
| |||
1555 | 1572 | | |
1556 | 1573 | | |
1557 | 1574 | | |
| 1575 | + | |
| 1576 | + | |
1558 | 1577 | | |
1559 | 1578 | | |
1560 | 1579 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
195 | 195 | | |
196 | 196 | | |
197 | 197 | | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
198 | 240 | | |
199 | 241 | | |
200 | 242 | | |
| |||
340 | 382 | | |
341 | 383 | | |
342 | 384 | | |
343 | | - | |
| 385 | + | |
344 | 386 | | |
| 387 | + | |
345 | 388 | | |
346 | 389 | | |
347 | 390 | | |
| |||
359 | 402 | | |
360 | 403 | | |
361 | 404 | | |
362 | | - | |
363 | | - | |
| 405 | + | |
364 | 406 | | |
365 | 407 | | |
366 | 408 | | |
| |||
373 | 415 | | |
374 | 416 | | |
375 | 417 | | |
376 | | - | |
377 | | - | |
378 | | - | |
| 418 | + | |
| 419 | + | |
379 | 420 | | |
380 | 421 | | |
381 | 422 | | |
| |||
2094 | 2135 | | |
2095 | 2136 | | |
2096 | 2137 | | |
2097 | | - | |
| 2138 | + | |
2098 | 2139 | | |
2099 | 2140 | | |
2100 | 2141 | | |
| |||
3220 | 3261 | | |
3221 | 3262 | | |
3222 | 3263 | | |
3223 | | - | |
3224 | | - | |
| 3264 | + | |
3225 | 3265 | | |
3226 | 3266 | | |
3227 | 3267 | | |
| |||
3238 | 3278 | | |
3239 | 3279 | | |
3240 | 3280 | | |
3241 | | - | |
| 3281 | + | |
3242 | 3282 | | |
3243 | 3283 | | |
3244 | 3284 | | |
| |||
6305 | 6345 | | |
6306 | 6346 | | |
6307 | 6347 | | |
6308 | | - | |
6309 | 6348 | | |
6310 | 6349 | | |
6311 | 6350 | | |
6312 | 6351 | | |
6313 | 6352 | | |
6314 | 6353 | | |
6315 | 6354 | | |
6316 | | - | |
6317 | | - | |
6318 | | - | |
6319 | | - | |
6320 | | - | |
6321 | | - | |
6322 | | - | |
6323 | | - | |
6324 | | - | |
6325 | 6355 | | |
6326 | 6356 | | |
6327 | 6357 | | |
| |||
9127 | 9157 | | |
9128 | 9158 | | |
9129 | 9159 | | |
9130 | | - | |
| 9160 | + | |
9131 | 9161 | | |
9132 | 9162 | | |
9133 | 9163 | | |
| |||
9144 | 9174 | | |
9145 | 9175 | | |
9146 | 9176 | | |
| 9177 | + | |
| 9178 | + | |
| 9179 | + | |
| 9180 | + | |
9147 | 9181 | | |
9148 | 9182 | | |
9149 | 9183 | | |
| |||
9695 | 9729 | | |
9696 | 9730 | | |
9697 | 9731 | | |
9698 | | - | |
9699 | 9732 | | |
9700 | 9733 | | |
9701 | 9734 | | |
9702 | 9735 | | |
9703 | 9736 | | |
9704 | 9737 | | |
9705 | | - | |
9706 | | - | |
9707 | | - | |
9708 | | - | |
9709 | | - | |
9710 | | - | |
9711 | | - | |
9712 | | - | |
9713 | | - | |
9714 | 9738 | | |
9715 | 9739 | | |
9716 | 9740 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
68 | 66 | | |
69 | 67 | | |
70 | 68 | | |
| |||
82 | 80 | | |
83 | 81 | | |
84 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
85 | 108 | | |
86 | 109 | | |
87 | 110 | | |
| |||
91 | 114 | | |
92 | 115 | | |
93 | 116 | | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
94 | 151 | | |
95 | 152 | | |
96 | 153 | | |
| |||
115 | 172 | | |
116 | 173 | | |
117 | 174 | | |
118 | | - | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
119 | 183 | | |
| 184 | + | |
120 | 185 | | |
| 186 | + | |
121 | 187 | | |
122 | 188 | | |
123 | 189 | | |
124 | | - | |
125 | | - | |
126 | | - | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
127 | 196 | | |
128 | 197 | | |
129 | 198 | | |
| |||
0 commit comments