- 
                Notifications
    
You must be signed in to change notification settings  - Fork 1.8k
 
Rust: Add numeric type barriers for three queries #20740
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this 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, andFloatingPointTypeclass hierarchies inBuiltins.qll - Adds shared barrier classes in a new 
Barriers.qllmodule 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>
| 
           Changes accepted, DCA run started...  | 
    
| 
           DCA LGTM. Ready to merge.  | 
    
Add numeric type barriers for three queries, increasing accuracy. Refines the classes in
Builtins.qllsomewhat to support this.