Skip to content

Conversation

@geoffw0
Copy link
Contributor

@geoffw0 geoffw0 commented Oct 31, 2025

Add numeric type barriers for three queries, increasing accuracy. Refines the classes in Builtins.qll somewhat to support this.

@geoffw0 geoffw0 requested a review from a team as a code owner October 31, 2025 17:22
Copilot AI review requested due to automatic review settings October 31, 2025 17:22
@geoffw0 geoffw0 added the Rust Pull requests that update Rust code label Oct 31, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds numeric type barriers to three security queries (rust/regex-injection, rust/sql-injection, and rust/log-injection) to reduce false positives. The implementation introduces type classification classes in Builtins.qll to distinguish between numeric types (integral and floating-point) and uses these to create taint flow barriers.

Key Changes

  • Introduces NumericType, IntegralType, and FloatingPointType class hierarchies in Builtins.qll
  • Adds shared barrier classes in a new Barriers.qll module for numeric and integral/boolean types
  • Integrates type-based barriers into the three security queries to prevent false positives when user input is converted to numeric types

Reviewed Changes

Copilot reviewed 15 out of 16 changed files in this pull request and generated no comments.

Show a summary per file
File Description
rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll Refactors builtin integer and float types to extend new numeric type hierarchy classes
rust/ql/lib/codeql/rust/security/Barriers.qll Adds new shared barrier classes based on numeric and integral/boolean types
rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll Integrates IntegralOrBooleanTypeBarrier to prevent false positives
rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll Integrates NumericTypeBarrier to prevent false positives
rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll Integrates NumericTypeBarrier to prevent false positives
rust/ql/test/query-tests/security/CWE-117/main.rs Adds test case for numeric data derived from user input
rust/ql/test/query-tests/security/CWE-089/sqlx.rs Removes spurious alert annotation from numeric test case
rust/ql/test/query-tests/security/CWE-020/main.rs Adds test case for numeric user input in regex construction
rust/ql/test/library-tests/elements/builtintypes/* Adds library test for numeric type classification
rust/ql/src/change-notes/2025-10-31-barriers.md Documents the query improvements
/.expected Updates test expectations to reflect removed false positives

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Co-authored-by: Tom Hvitved <hvitved@github.com>
@geoffw0
Copy link
Contributor Author

geoffw0 commented Nov 3, 2025

Changes accepted, DCA run started...

@geoffw0
Copy link
Contributor Author

geoffw0 commented Nov 3, 2025

DCA LGTM. Ready to merge.

@geoffw0 geoffw0 merged commit 077bcf6 into github:main Nov 4, 2025
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Rust Pull requests that update Rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants