Skip to content

Commit 93a4d84

Browse files
committed
fix: use parameterized SQL queries in report_digest.py
Replace f-string interpolation with parameterized queries using ? placeholders to prevent potential SQL injection from malformed report JSONL data. Addresses CWE-89.
1 parent 87ba832 commit 93a4d84

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

garak/analyze/report_digest.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,8 @@ def _init_populate_result_db(evals, taxonomy=None):
129129
# add a row for each group
130130
for group in groups:
131131
cursor.execute(
132-
f"insert into results values ('{pm}', '{group}', '{pc}', '{detector}', '{score}', '{instances}', '{passes}')"
132+
"insert into results values (?, ?, ?, ?, ?, ?, ?)",
133+
(pm, group, pc, detector, score, instances, passes),
133134
)
134135

135136
return conn, cursor
@@ -156,7 +157,8 @@ def _get_group_aggregate_score(
156157
unknown_function = False
157158
group_score = None # range 0.0--1.0
158159
res = cursor.execute(
159-
f"select score as s from results where probe_group = '{probe_group}';"
160+
"select score as s from results where probe_group = ?;",
161+
(probe_group,),
160162
)
161163
probe_scores = [i[0] for i in res.fetchall()]
162164

@@ -232,7 +234,8 @@ def _get_group_info(probe_group, group_score, taxonomy, config=_config) -> dict:
232234

233235
def _get_probe_result_summaries(cursor, probe_group) -> List[tuple]:
234236
res = cursor.execute(
235-
f"select probe_module, probe_class, min(score) as s from results where probe_group='{probe_group}' group by probe_class order by s asc, probe_class asc;"
237+
"select probe_module, probe_class, min(score) as s from results where probe_group=? group by probe_class order by s asc, probe_class asc;",
238+
(probe_group,),
236239
)
237240
return res.fetchall()
238241

@@ -257,7 +260,8 @@ def _get_probe_info(probe_module, probe_class, absolute_score) -> dict:
257260

258261
def _get_detectors_info(cursor, probe_group, probe_class) -> List[tuple]:
259262
res = cursor.execute(
260-
f"select detector, score from results where probe_group='{probe_group}' and probe_class='{probe_class}' order by score asc, detector asc;"
263+
"select detector, score from results where probe_group=? and probe_class=? order by score asc, detector asc;",
264+
(probe_group, probe_class),
261265
)
262266
return res.fetchall()
263267

0 commit comments

Comments
 (0)