Skip to content

Update sqlite to 3.50.2 to mitigate CVE-2025-6965 #100

Closed

Description

@luan-mont

SQLitePCLRaw.lib.e_sqlite3 is brought in transitively via Microsoft.Data.Sqlite.
A vulnerability(CVE-2025-6965) is fixed in SQLitePCLRaw.lib.e_sqlite3 starting at 3.50.2 (minimum fixed version).

What to investigate

  1. Identify the currently used Microsoft.Data.Sqlite version.
  2. Verify which SQLitePCLRaw.lib.e_sqlite3 version it resolves to.
  3. Check whether a newer Microsoft.Data.Sqlite version pulls in SQLitePCLRaw.lib.e_sqlite3 >= 3.50.2.

Required action

  • If such a Microsoft.Data.Sqlite version exists, upgrade to that version.

  • Ensure the resolved transitive version of SQLitePCLRaw.lib.e_sqlite3 is >= 3.50.2.

  • If not possible directly, evaluate safe alternatives (explicit transitive override / package pinning strategy) while maintaining compatibility.

  • Compatibility caveat (must be validated during upgrade)

Upgrading SQLite stack versions may expose SQL compatibility issues:

String literals using double quotes (") can break.
String literals should use single quotes (').

Activity

  1. SkowronskiAndrew commented on Jul 17, 2026

    @SkowronskiAndrew
    Collaborator

    Thanks luan-mont for the report.

    I asked Claude to do a deep dive investigation as the package versioning is pretty confusing. Summary is that it confirms the underlying advisory is valid, with some corrections to the version details:

    Confirmed affected. UnityDataTools currently references Microsoft.Data.Sqlite 9.0.1 (in Analyzer.csproj and ReferenceFinder.csproj). That resolves transitively to SQLitePCLRaw.lib.e_sqlite3 2.1.10, which bundles SQLite engine 3.46.1 — earlier than the 3.50.2 fix for CVE-2025-6965. So the flawed engine is indeed present.

    A note on the version numbers. The phrasing "fixed in SQLitePCLRaw.lib.e_sqlite3 starting at 3.50.2" mixes two different versioning schemes. In the legacy 2.1.x line, the package version is not the SQLite engine version (2.1.10 → SQLite 3.46.1; 2.1.11 → SQLite 3.49.1, still affected). Only the newer v3 line of SQLitePCLRaw versions the package to track the SQLite engine directly. So the target to aim for is SQLite engine ≥ 3.50.2, regardless of the wrapper package's own version number.

    Bumping Microsoft.Data.Sqlite alone is not sufficient. The current latest on our .NET 9 line (9.0.18) still declares only SQLitePCLRaw.bundle_e_sqlite3 >= 2.1.11, and NuGet resolves that floor to 2.1.11 = SQLite 3.49.1, which is still affected. Clearing the CVE requires an explicit direct PackageReference pinning the SQLitePCLRaw native package to a build carrying SQLite ≥ 3.50.2, then verifying the resolved transitive version with dotnet list package --include-transitive.

    Practical risk for this tool is low. The CVE's network-attack scoring assumes an application executing attacker-controlled SQL. UnityDataTools is a local CLI that builds its own SQLite databases from Unity build output and runs its own queries — it does not accept untrusted SQL over a network. We'll patch it as good hygiene and to clear dependency scanners, but there's no exposure to remote exploitation in normal use.

    We'll also validate the double-quoted-string-literal compatibility caveat you raised as part of the upgrade.

  2. added a commit that references this issue on Sep 15, 2026
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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions