Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Audit remaining f-string/interpolated SQL and add CI guard

Offen
#3,477 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 3 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
48/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Ruhig
Tech-Stack
python, sql

Rechercherichtung

Beginne damit, cursor.execute, db.execute und connection.execute in policyengine_api/endpoints/, services/, data/ und utils/ zu durchsuchen, und prüfe anschließend die bestehende CI-Konfiguration. Prüfe jede dynamische SQL-Konstruktion, füge eine CI-Regel hinzu, die die aufgeführten Interpolationsmuster abdeckt, und aktualisiere CONTRIBUTING.md mit der Richtlinie zur Parametrisierung. Als erledigt gilt die Aufgabe, wenn die geprüften Stellen Platzhalter verwenden, CI die Muster ablehnt und die Richtlinie dokumentiert ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug security

Summary

#3445 (parameterize update_user_policy keys) and #3451 (drop f-string LIMIT in get_simulations) were filed in isolation from a targeted bug audit. Neither was found via a systematic grep of the repo's SQL surface. A repo-wide audit of f-string/.format() SQL construction is overdue to flush out any remaining patterns before the next incident.

What goes wrong

Today's workflow assumes contributors notice string-interpolated SQL during review. There is no:

  • Automated check (ruff, bandit, semgrep rule) for execute(f"..." or execute("..." % ...) patterns.
  • Pre-commit hook blocking string-interpolated SQL.
  • Documented guideline in CONTRIBUTING.md about parameterization.

The result is that new endpoints can quietly reintroduce injection vectors; #3445 and #3451 both survived multiple reviews.

Suggested fix

  1. Audit: grep the repo for all SQL execution sites (cursor.execute, db.execute, connection.execute, etc.) and verify every dynamic segment is a ?/:param placeholder. Cover at minimum:
    • policyengine_api/endpoints/ (all files)
    • policyengine_api/services/
    • policyengine_api/data/
    • policyengine_api/utils/
  2. Codify: add a bandit config or semgrep rule to CI that fails on execute(f"..." and similar patterns. Example rule:
- id: fstring-sql
  pattern-either:
    - pattern: $CONN.execute(f"...")
    - pattern: $CONN.execute("..." % $X)
    - pattern: $CONN.execute("..." + $X)
  message: Don't build SQL with string interpolation — use parameterized queries.
  severity: ERROR
  languages: [python]
  1. Document in CONTRIBUTING.md: "SQL must use parameterized queries; never f"..." or .format() into a SQL string."

Severity

Medium — no known active vulnerability, but the class of bug has now resurfaced twice in the same repo.

Relates to

Fixes #3445, #3451 (both closed).

Vorherrschende Sprache
Python
Sterne
18
Forks
33
Ø Merge
2 T. 16 Std.
Gemergte PRs (30 T.)
53

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus PolicyEngine/policyengine-api

Alle Issues in PolicyEngine/policyengine-api

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.