π‘οΈ Sentinel: [CRITICAL] Fix SQL Injection in Metadata Generator#194
π‘οΈ Sentinel: [CRITICAL] Fix SQL Injection in Metadata Generator#194thebearwithabite wants to merge 1 commit intomasterfrom
Conversation
Co-authored-by: thebearwithabite <216692431+thebearwithabite@users.noreply.github.com>
|
π Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a π emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
π¨ Severity: CRITICAL
π‘ Vulnerability: SQL injection vulnerability in
metadata_generator.py. Thesave_file_metadatamethod constructed a SQLINSERT OR REPLACEquery by directly interpolating the keys from themetadatadictionary into the query string as column names. This bypassed parameterization and allowed potential execution of arbitrary SQL if an attacker could control the keys of themetadatadictionary.π― Impact: Allowed execution of arbitrary SQL statements on the database, which could lead to data leakage, modification, or complete database destruction.
π§ Fix: Implemented an explicit schema allowlist. The code now dynamically queries SQLite's
PRAGMA table_infoto get the actual column names of thefile_metadatatable, and then filters the untrustedmetadatadictionary keys to ensure only valid columns are included in the SQL statement.β Verification: Run
python3 test_metadata.pyto ensure normal functionality works correctly. A local test script verified that the vulnerable behavior has been stopped and no errors are raised for invalid columns.PR created automatically by Jules for task 6663360943278694884 started by @thebearwithabite