Commit df422b3
authored
refactor(iast): code safety and memory improvements (#18002)
## Description
This PR updates the AppSec code to harden it against previously-unhandled errors:
- Uninitialized `builtins_denylist` entries read by `str_in_list`
- `strdup` failure returns -1 without `PyErr_NoMemory` call
- `PyList_New returning` NULL but proceeding with `PyList_Append`
- `PyUnicode_FromString` returning NULL being passed to `PyObject_CallMethodObjArgs`
- `new_pyobject_id` returning NULL but being used for `set_ranges`
- `PyTuple_New` returning NULL but being used for `PyTuple_SET_ITEM`
- `safe_allocate_tainted_object` unchecked NULL values
- `get_range_by_hash` unchecked nullptr dereference
- `PyTuple_Size` error -1 cast to `SIZE_MAX`, hiding original exception
- NULL `PyUnicode_AsUTF8` silently becomes default encoding
- Duplicate call to `kwnames_to_kwargs` resulting in one leaked dict every call
- `modules_list` and `strdup`'d tokens leaked on `strdup` error paths
Co-authored-by: thomas.kowalski <thomas.kowalski@datadoghq.com>1 parent 62f01e8 commit df422b3
8 files changed
Lines changed: 79 additions & 18 deletions
File tree
- ddtrace/appsec/_iast
- _ast
- _taint_tracking/aspects
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
250 | 250 | | |
251 | 251 | | |
252 | 252 | | |
253 | | - | |
| 253 | + | |
254 | 254 | | |
255 | 255 | | |
256 | 256 | | |
| |||
352 | 352 | | |
353 | 353 | | |
354 | 354 | | |
355 | | - | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
356 | 358 | | |
| 359 | + | |
357 | 360 | | |
358 | 361 | | |
359 | 362 | | |
360 | 363 | | |
361 | 364 | | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
362 | 370 | | |
363 | 371 | | |
364 | 372 | | |
| |||
408 | 416 | | |
409 | 417 | | |
410 | 418 | | |
411 | | - | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
412 | 425 | | |
413 | 426 | | |
414 | 427 | | |
415 | 428 | | |
416 | 429 | | |
417 | 430 | | |
418 | 431 | | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
419 | 435 | | |
420 | 436 | | |
421 | 437 | | |
422 | | - | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
423 | 443 | | |
| 444 | + | |
424 | 445 | | |
425 | 446 | | |
426 | 447 | | |
| |||
430 | 451 | | |
431 | 452 | | |
432 | 453 | | |
433 | | - | |
| 454 | + | |
434 | 455 | | |
435 | 456 | | |
436 | 457 | | |
437 | | - | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
438 | 463 | | |
| 464 | + | |
439 | 465 | | |
440 | 466 | | |
441 | 467 | | |
442 | 468 | | |
443 | 469 | | |
| 470 | + | |
444 | 471 | | |
445 | 472 | | |
446 | 473 | | |
| |||
Lines changed: 8 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
35 | 38 | | |
| 39 | + | |
36 | 40 | | |
37 | | - | |
38 | 41 | | |
39 | 42 | | |
40 | | - | |
41 | 43 | | |
42 | 44 | | |
43 | 45 | | |
44 | 46 | | |
45 | 47 | | |
46 | 48 | | |
47 | 49 | | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
48 | 53 | | |
| 54 | + | |
49 | 55 | | |
50 | | - | |
51 | 56 | | |
52 | 57 | | |
53 | | - | |
54 | 58 | | |
55 | 59 | | |
56 | 60 | | |
| |||
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
62 | 65 | | |
63 | 66 | | |
64 | 67 | | |
| |||
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
154 | 154 | | |
155 | 155 | | |
156 | 156 | | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
157 | 161 | | |
158 | 162 | | |
159 | 163 | | |
| |||
Lines changed: 6 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
51 | 54 | | |
52 | 55 | | |
53 | 56 | | |
| |||
56 | 59 | | |
57 | 60 | | |
58 | 61 | | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
59 | 65 | | |
60 | 66 | | |
61 | 67 | | |
| |||
Lines changed: 8 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | | - | |
39 | | - | |
| 38 | + | |
| 39 | + | |
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| |||
166 | 166 | | |
167 | 167 | | |
168 | 168 | | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
169 | 172 | | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
170 | 176 | | |
171 | 177 | | |
172 | 178 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
138 | | - | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
139 | 141 | | |
140 | 142 | | |
141 | 143 | | |
| |||
153 | 155 | | |
154 | 156 | | |
155 | 157 | | |
156 | | - | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
157 | 161 | | |
158 | 162 | | |
159 | 163 | | |
| |||
256 | 260 | | |
257 | 261 | | |
258 | 262 | | |
259 | | - | |
260 | | - | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
261 | 267 | | |
262 | 268 | | |
263 | 269 | | |
| |||
288 | 294 | | |
289 | 295 | | |
290 | 296 | | |
291 | | - | |
292 | | - | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
293 | 301 | | |
294 | 302 | | |
295 | 303 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
201 | 201 | | |
202 | 202 | | |
203 | 203 | | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
204 | 207 | | |
205 | 208 | | |
206 | 209 | | |
| |||
0 commit comments