Skip to content

C#: mass enable diff-informed data flow #19661

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

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

d10c
Copy link
Contributor

@d10c d10c commented Jun 3, 2025

An auto-generated patch that enables diff-informed data flow in the obvious cases.

Builds on #18344 and https://github.com/github/codeql-patch/pull/88

An auto-generated patch that enables diff-informed data flow in the obvious cases.

Builds on github#18344 and github/codeql-patch#88
@github-actions github-actions bot added the C# label Jun 3, 2025
@d10c d10c marked this pull request as ready for review June 4, 2025 11:32
@Copilot Copilot AI review requested due to automatic review settings June 4, 2025 11:32
@d10c d10c requested a review from a team as a code owner June 4, 2025 11:32
Copy link
Contributor

@Copilot 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 auto-generates patches to enable diff-informed data flow by adding a default observeDiffInformedIncrementalMode predicate in numerous data-flow configuration modules.

  • Added predicate observeDiffInformedIncrementalMode() { any() } to all relevant DataFlow::ConfigSig modules.
  • Covers security, cryptography, and likely-bug query modules for incremental diff analysis.

Reviewed Changes

Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql Added observeDiffInformedIncrementalMode predicate
csharp/ql/src/Security Features/CWE-091/XMLInjection.ql Added observeDiffInformedIncrementalMode predicate
csharp/ql/src/Likely Bugs/LeapYear/UnsafeYearConstruction.ql Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/ZipSlipQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/XPathInjectionQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/UrlRedirectQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/SqlInjectionQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/ResourceInjectionQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/RegexInjectionQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/ReDoSQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/MissingXMLValidationQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/LogForgingQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/LDAPInjectionQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/ExposureOfPrivateInformationQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/CommandInjectionQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/CodeInjectionQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/dataflow/CleartextStorageQuery.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/cryptography/HardcodedSymmetricEncryptionKey.qll Added observeDiffInformedIncrementalMode predicate
csharp/ql/lib/semmle/code/csharp/security/cryptography/EncryptionKeyDataFlowQuery.qll Added observeDiffInformedIncrementalMode predicate
Comments suppressed due to low confidence (2)

csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql:45

  • [nitpick] Add a brief comment above this predicate to explain its role in diff-informed incremental analysis, improving clarity for future maintainers.
predicate observeDiffInformedIncrementalMode() { any() }

csharp/ql/src/Security Features/CWE-114/AssemblyPathInjection.ql:45

  • There are no existing tests exercising the incremental diff mode; consider adding test cases to validate behavior when this predicate is active.
predicate observeDiffInformedIncrementalMode() { any() }

@d10c d10c marked this pull request as draft June 5, 2025 15:59
@d10c
Copy link
Contributor Author

d10c commented Jun 5, 2025

It turns out that some of the generated changes in the PRs were not correct, e.g. because they should have also generated a getASelected{Source,Sink}Location() override but didn't (see Chuan-kai's comment here). So for now I'm putting them back in Draft until I make sure (via the patch script) that we are correctly handling all 3 documented query patterns, starting with the simplest one (both source and sink are used as location sources). If you have already started reviewing the PRs, thank you (also for your patience) and stay tuned for an update as to what has changed in the meantime!

@michaelnebel
Copy link
Contributor

@d10c : Great!
Thank you for doing this. A couple of questions

  • Do you expect there will be any configurations that will not be diff-informed?
  • How does it impact tests (I remember hearing something along the lines of that tests already worked with "diff-informed", if the tests are .qlref files)?

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

Successfully merging this pull request may close these issues.

2 participants