Repository navigation
Commit 1a753ba
authored
Resolve attribute annotations under the policy in eval_node (#15337)
**Arbitrary code execution from class annotations in eval_node**
The attribute branch falls back to `typing.get_type_hints()` after the
policy has already refused the attribute, and that call resolves
stringized annotations with `eval()`, so completing `obj.attr` runs
whatever the annotation contains under the default `limited` policy.
Collecting the raw annotations with
`inspect.get_annotations(eval_str=False)` and resolving them through
`eval_node` keeps annotation completion working while routing the
expression through the same policy checks as the rest of the input.2 files changed
Lines changed: 47 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
| 32 | + | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| |||
1125 | 1125 | | |
1126 | 1126 | | |
1127 | 1127 | | |
1128 | | - | |
1129 | | - | |
1130 | | - | |
1131 | | - | |
1132 | | - | |
1133 | | - | |
1134 | | - | |
1135 | | - | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
1136 | 1131 | | |
1137 | 1132 | | |
1138 | 1133 | | |
| |||
1319 | 1314 | | |
1320 | 1315 | | |
1321 | 1316 | | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
1322 | 1331 | | |
1323 | 1332 | | |
1324 | 1333 | | |
1325 | 1334 | | |
1326 | | - | |
1327 | | - | |
1328 | | - | |
1329 | | - | |
1330 | | - | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
1331 | 1338 | | |
1332 | 1339 | | |
1333 | 1340 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
122 | 122 | | |
123 | 123 | | |
124 | 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 | + | |
125 | 150 | | |
126 | 151 | | |
127 | 152 | | |
| |||
0 commit comments