-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
Dataflow: Support alert provenance #15501
Dataflow: Support alert provenance #15501
Conversation
6b8c216
to
3f986bd
Compare
3f986bd
to
1464560
Compare
f35a98c
to
25e2e07
Compare
0bf1d34
to
979e8c9
Compare
05450de
to
43a334d
Compare
@@ -8,13 +8,15 @@ | |||
* | |||
* The kind `remote` represents a general remote flow source. | |||
*/ | |||
extensible predicate sourceModel(string type, string path, string kind); | |||
extensible predicate sourceModel( |
Check warning
Code scanning / CodeQL
Missing QLDoc for parameter Warning
@@ -23,7 +25,9 @@ | |||
* `kind` should be either `value` or `taint`, for value-preserving or taint-preserving steps, | |||
* respectively. | |||
*/ | |||
extensible predicate summaryModel(string type, string path, string input, string output, string kind); | |||
extensible predicate summaryModel( |
Check warning
Code scanning / CodeQL
Missing QLDoc for parameter Warning
@@ -8,13 +8,15 @@ | |||
* | |||
* The kind `remote` represents a general remote flow source. | |||
*/ | |||
extensible predicate sourceModel(string type, string path, string kind); | |||
extensible predicate sourceModel( |
Check warning
Code scanning / CodeQL
Missing QLDoc for parameter Warning
@@ -23,7 +25,9 @@ | |||
* `kind` should be either `value` or `taint`, for value-preserving or taint-preserving steps, | |||
* respectively. | |||
*/ | |||
extensible predicate summaryModel(string type, string path, string input, string output, string kind); | |||
extensible predicate summaryModel( |
Check warning
Code scanning / CodeQL
Missing QLDoc for parameter Warning
@@ -8,13 +8,15 @@ | |||
* | |||
* The kind `remote` represents a general remote flow source. | |||
*/ | |||
extensible predicate sourceModel(string type, string path, string kind); | |||
extensible predicate sourceModel( |
Check warning
Code scanning / CodeQL
Missing QLDoc for parameter Warning
@@ -23,7 +25,9 @@ | |||
* `kind` should be either `value` or `taint`, for value-preserving or taint-preserving steps, | |||
* respectively. | |||
*/ | |||
extensible predicate summaryModel(string type, string path, string input, string output, string kind); | |||
extensible predicate summaryModel( |
Check warning
Code scanning / CodeQL
Missing QLDoc for parameter Warning
07b4f13
to
0e5b37f
Compare
0a475a3
to
b4e23d9
Compare
I ran into this problem immediately 😂 . Are you by any chance already working on the plan for creating a |
I was just about to start. |
--- | ||
category: feature | ||
--- | ||
* The `PathGraph` result of a data flow computation has been augmented with model provenance information for each of the flow steps. |
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.
Is it the case that users who write custom queries and corresponding qltests may have to update their .expected
output as a result of this PR? If so, this should be mentioned prominently in the change note to avoid surprises and confusion by users.
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.
Here's an amendment: #16211
Here: #16210 |
This adds support for alert provenance in path problem queries using the data flow library. Plumbing for all languages using models-as-data is added such that the MaD rows contributing to an alert are included in the PathGraph. Provenance from QL-based models is also included and can be adjusted on a language-by-language basis depending on which models are desirable to include in the provenance data - generally we should not include provenance for basic steps such as variable assignments and similar self-evident flow.
Full support for C#, Java, Python, Go, and Ruby.
Swift and C++ don't support MaD yet and hence there's no MaD provenance to propagate, but provenance from QL-based models is supported.
(JS is of course not supported as it doesn't yet use the shared data flow library).
Edit: Notes on the interesting qltest changes: