Commit b7cb2f3
committed
Fix PromQL injection, connection leaks, and missing timeouts
Addresses critical findings from quality framework audit:
- Add _escape_promql_label() and _promql_filter() to reporter to prevent
PromQL injection via cluster/node/database/index names (FM-4)
- Apply escaping to H001 base_filter, H002 idx_scan query, and H004
redundant index queries (the most dangerous sites where DB metadata
like index_name/table_name is interpolated)
- Add escape_promql_label() to Flask backend and apply to filter building
- Fix connection leak in CLI: 2 locations in postgres-ai.ts where
Client.connect() had no finally block (mon targets add, interactive add)
- Add connectionTimeoutMillis: 10000 to all Client() instances in CLI
- Add connect_timeout=10 to all psycopg2.connect() calls (reporter + Flask)
- Add 11 unit tests for PromQL escaping covering injection attempts,
backslash/quote handling, and normal PostgreSQL identifiers
https://claude.ai/code/session_01TKKnEc2Yn2zM64bwCJ2UaX1 parent c00f80e commit b7cb2f3
4 files changed
Lines changed: 167 additions & 35 deletions
File tree
- cli/bin
- monitoring_flask_backend
- reporter
- tests/reporter
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2452 | 2452 | | |
2453 | 2453 | | |
2454 | 2454 | | |
2455 | | - | |
2456 | | - | |
2457 | | - | |
2458 | | - | |
2459 | | - | |
2460 | | - | |
2461 | | - | |
2462 | | - | |
2463 | | - | |
2464 | | - | |
| 2455 | + | |
| 2456 | + | |
| 2457 | + | |
| 2458 | + | |
| 2459 | + | |
| 2460 | + | |
| 2461 | + | |
| 2462 | + | |
| 2463 | + | |
| 2464 | + | |
| 2465 | + | |
| 2466 | + | |
| 2467 | + | |
| 2468 | + | |
2465 | 2469 | | |
2466 | 2470 | | |
2467 | 2471 | | |
| |||
2496 | 2500 | | |
2497 | 2501 | | |
2498 | 2502 | | |
2499 | | - | |
2500 | | - | |
2501 | | - | |
2502 | | - | |
2503 | | - | |
2504 | | - | |
2505 | | - | |
2506 | | - | |
2507 | | - | |
2508 | | - | |
| 2503 | + | |
| 2504 | + | |
| 2505 | + | |
| 2506 | + | |
| 2507 | + | |
| 2508 | + | |
| 2509 | + | |
| 2510 | + | |
| 2511 | + | |
| 2512 | + | |
| 2513 | + | |
| 2514 | + | |
| 2515 | + | |
| 2516 | + | |
2509 | 2517 | | |
2510 | 2518 | | |
2511 | 2519 | | |
| |||
3292 | 3300 | | |
3293 | 3301 | | |
3294 | 3302 | | |
3295 | | - | |
| 3303 | + | |
3296 | 3304 | | |
3297 | 3305 | | |
3298 | 3306 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
19 | 24 | | |
20 | 25 | | |
21 | 26 | | |
| |||
250 | 255 | | |
251 | 256 | | |
252 | 257 | | |
253 | | - | |
| 258 | + | |
254 | 259 | | |
255 | 260 | | |
256 | 261 | | |
| |||
384 | 389 | | |
385 | 390 | | |
386 | 391 | | |
387 | | - | |
| 392 | + | |
388 | 393 | | |
389 | 394 | | |
390 | | - | |
| 395 | + | |
391 | 396 | | |
392 | | - | |
| 397 | + | |
393 | 398 | | |
394 | | - | |
| 399 | + | |
395 | 400 | | |
396 | 401 | | |
397 | 402 | | |
| |||
1176 | 1181 | | |
1177 | 1182 | | |
1178 | 1183 | | |
1179 | | - | |
| 1184 | + | |
1180 | 1185 | | |
1181 | 1186 | | |
1182 | 1187 | | |
| |||
1287 | 1292 | | |
1288 | 1293 | | |
1289 | 1294 | | |
1290 | | - | |
| 1295 | + | |
1291 | 1296 | | |
1292 | 1297 | | |
1293 | 1298 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
190 | 190 | | |
191 | 191 | | |
192 | 192 | | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
193 | 216 | | |
194 | 217 | | |
195 | 218 | | |
| |||
205 | 228 | | |
206 | 229 | | |
207 | 230 | | |
208 | | - | |
| 231 | + | |
209 | 232 | | |
210 | | - | |
| 233 | + | |
211 | 234 | | |
212 | 235 | | |
213 | 236 | | |
| |||
670 | 693 | | |
671 | 694 | | |
672 | 695 | | |
673 | | - | |
| 696 | + | |
| 697 | + | |
674 | 698 | | |
675 | 699 | | |
676 | 700 | | |
| |||
831 | 855 | | |
832 | 856 | | |
833 | 857 | | |
834 | | - | |
| 858 | + | |
| 859 | + | |
835 | 860 | | |
836 | 861 | | |
837 | 862 | | |
| |||
941 | 966 | | |
942 | 967 | | |
943 | 968 | | |
944 | | - | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
945 | 972 | | |
946 | 973 | | |
947 | 974 | | |
948 | 975 | | |
949 | 976 | | |
950 | | - | |
| 977 | + | |
951 | 978 | | |
952 | 979 | | |
953 | 980 | | |
954 | 981 | | |
955 | | - | |
| 982 | + | |
956 | 983 | | |
957 | 984 | | |
958 | 985 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
0 commit comments