Skip to content

DuckDB: Parameterize file paths in read_parquet() calls #846

Description

@erikdarlingdata

Source

Static security assessment (#840, finding S-1 — P0)

Problem

File paths are interpolated directly into read_parquet() DuckDB SQL strings without escaping single quotes. A parquet filename containing ' could break or inject into the query.

Locations:

  • Lite/Services/ArchiveService.cs — lines 348, 373, 404 (path lists built via $"'{p}'")
  • Lite/Database/DuckDbInitializer.cs — lines 733, 743 (glob paths interpolated into view creation)

Example

var pathList = string.Join(", ", sourcePaths.Select(p => $"'{p}'"));
cmd.CommandText = $"COPY (SELECT ... FROM read_parquet([{pathList}], union_by_name=true)) TO '{tempPath}' ...";

Fix

Escape single quotes in paths (path.Replace("'", "''")) or use DuckDB parameterized queries where possible. For array arguments to read_parquet(), escaping is likely the practical approach.

Risk

Low exploitability (paths are internally constructed from AppDataPath + table names + timestamps), but still a correctness and defensive-coding issue.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions