CVE-2026-63221

CodeIgniter: SQL injection in Query Builder deleteBatch() when used with where() conditions

criticalEPSS 0.4 %

Beschreibung

Auswirkungen

Ein SQL-Injektions-Sicherheitsproblem besteht in der Methode deleteBatch() des Query Builders. Wenn deleteBatch() zusammen mit where()-Bedingungen verwendet wird, werden die gebundenen Werte aus dem WHERE-Teil direkt in das generierte SQL ohne Berücksichtigung ihres Escape-Flags eingefügt, so dass sie nie entkommen oder zitiert werden. Wenn eine Anwendung benutzerkontrollierten Input an where() übergibt, bevor deleteBatch() aufgerufen wird, wird dieser Input als SQL und nicht als Wert interpretiert, was zu einer SQL-Injektion führt.

Dies betrifft nur den Codepfad von deleteBatch(). Reguläre delete()-Operationen binden where()-Werte korrekt.

Patches

Auf v4.7.4 oder eine spätere Version aktualisieren.

Workarounds

Wenn ein sofortiges Upgrade nicht möglich ist:

  • Werte (z.B. numerische IDs) streng validieren und typisieren, bevor sie in Bedingungen verwendet werden - dies schützt jedoch keine String-Bedingungen vollständig.
  • Benutzerkontrollierten Input nicht an where() übergeben, wenn deleteBatch() verwendet wird.
  • Für benutzerkontrollierte Bedingungen verwenden Sie stattdessen eine normale delete() mit Query Builder-Bindungen anstelle von deleteBatch().
  • Wo möglich, drücken Sie erforderliche Übereinstimmungswerte durch die Batch-Daten und onConstraint() aus, anstatt sie als separate benutzerkontrollierte where()-Klauseln zu verwenden.

Metriken

Severity
critical
kein öffentlicher PoC bekannt
9.4
Quelle: nvd-v3
30.6 %
Erhöht — CVE ist relevanter als mindestens 10 % der heute bewerteten CVEs.
0.4 %
Niedrig — Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
Veröffentlicht
2026-08-07 18:22 UTC
CWE-89

Weakness-Klassen (CWE)

  • CWE-89Base

    Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

    The product constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component. Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data.

    cwe.mitre.org →

Re-Analyse & Statuswechsel

Chronologie der NVD-Audit-Events für diese CVE — Reanalyses, CVSS-Updates, CPE-Diffs.

  1. New CVE Received2026-07-31 06:16 UTC· security-advisories@github.com
    • Affected: CodeIgniter4
    • Description: CodeIgniter is a PHP full-stack web framework. From 4.3.0 through 4.7.3, Query Builder deleteBatch() substitutes bound values from where() conditions into generated SQL while ignoring their escape flags, allowing user-controlled condition values to be interpreted as SQL. This affects only the deleteBatch() code path. Regular delete() operations escape where() binds correctly. This issue is fixed in version 4.7.4.
    • CVSS V3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H
    • CWE: CWE-89

Betroffene Produkte

Aus der Hersteller-/CERT-Meldung extrahierte Produkte und Versionsbereiche. Ein Version-Range wie „<4.14.6“ impliziert die Update-Empfehlung „auf 4.14.6 oder höher aktualisieren“.

  • packagist

    codeigniter4/framework4.3.0

  • packagist

    codeigniter4/frameworkv4.3.0

  • packagist

    codeigniter4/frameworkv4.3.1

  • packagist

    codeigniter4/frameworkv4.3.2

  • packagist

    codeigniter4/frameworkv4.3.3

  • packagist

    codeigniter4/frameworkv4.3.4

  • packagist

    codeigniter4/frameworkv4.3.5

  • packagist

    codeigniter4/frameworkv4.3.6

  • packagist

    codeigniter4/frameworkv4.3.7

  • packagist

    codeigniter4/frameworkv4.3.8

  • packagist

    codeigniter4/frameworkv4.4.0

  • packagist

    codeigniter4/frameworkv4.4.1

  • packagist

    codeigniter4/frameworkv4.4.2

  • packagist

    codeigniter4/frameworkv4.4.3

  • packagist

    codeigniter4/frameworkv4.4.4

  • packagist

    codeigniter4/frameworkv4.4.5

  • packagist

    codeigniter4/frameworkv4.4.6

  • packagist

    codeigniter4/frameworkv4.4.7

  • packagist

    codeigniter4/frameworkv4.4.8

  • packagist

    codeigniter4/frameworkv4.5.0

  • packagist

    codeigniter4/frameworkv4.5.1

  • packagist

    codeigniter4/frameworkv4.5.2

  • packagist

    codeigniter4/frameworkv4.5.3

  • packagist

    codeigniter4/frameworkv4.5.4

Quellen & Referenzen

Verknüpfte Empfehlungen

IDCVE-2026-63221