You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: change-notes/1.24/analysis-cpp.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,6 +26,10 @@ The following changes in version 1.24 affect C/C++ analysis in all applications.
26
26
27
27
## Changes to libraries
28
28
29
+
* The data-flow library has been improved when flow through functions needs to be
30
+
combined with both taint tracking and flow through fields allowing more flow
31
+
to be tracked. This affects and improves some security queries, which may
32
+
report additional results.
29
33
* Created the `semmle.code.cpp.models.interfaces.Allocation` library to model allocation such as `new` expressions and calls to `malloc`. This in intended to replace the functionality in `semmle.code.cpp.commons.Alloc` with a more consistent and useful interface.
30
34
* Created the `semmle.code.cpp.models.interfaces.Deallocation` library to model deallocation such as `delete` expressions and calls to `free`. This in intended to replace the functionality in `semmle.code.cpp.commons.Alloc` with a more consistent and useful interface.
31
35
* The new class `StackVariable` should be used in place of `LocalScopeVariable`
@@ -40,4 +44,4 @@ The following changes in version 1.24 affect C/C++ analysis in all applications.
40
44
* The taint tracking library (`semmle.code.cpp.dataflow.TaintTracking`) has had
41
45
the following improvements:
42
46
* The library now models data flow through `strdup` and similar functions.
43
-
47
+
* The library now models data flow through formatting functions such as `sprintf`.
| Assembly path injection (`cs/assembly-path-injection`) | security, external/cwe/cwe-114 | Finds user-controlled data used to load an assembly. |
9
10
| Insecure configuration for ASP.NET requestValidationMode (`cs/insecure-request-validation-mode`) | security, external/cwe/cwe-016 | Finds where this attribute has been set to a value less than 4.5, which turns off some validation features and makes the application less secure. |
10
-
| Page request validation is disabled (`cs/web/request-validation-disabled`) | security, frameworks/asp.net, external/cwe/cwe-016 | Finds where ASP.NET page request validation has been disabled, which could makes the application less secure. |
| Page request validation is disabled (`cs/web/request-validation-disabled`) | security, frameworks/asp.net, external/cwe/cwe-016 | Finds where ASP.NET page request validation has been disabled, which could make the application less secure. |
13
+
| Serialization check bypass (`cs/serialization-check-bypass`) | security, external/cwe/cwe-20 | Finds where data is not validated in a deserialization method. |
14
+
| XML injection (`cs/xml-injection`) | security, external/cwe/cwe-091 | Finds user-controlled data that is used to write directly to an XML document. |
11
15
12
16
## Changes to existing queries
13
17
@@ -25,9 +29,12 @@ The following changes in version 1.24 affect C# analysis in all applications.
25
29
26
30
## Changes to libraries
27
31
32
+
* The data-flow library has been improved when flow through methods needs to be
33
+
combined with both taint tracking and flow through fields allowing more flow
34
+
to be tracked. This affects and improves most security queries, which may
35
+
report additional results.
28
36
* The taint tracking library now tracks flow through (implicit or explicit) conversion operator calls.
29
37
*[Code contracts](https://docs.microsoft.com/en-us/dotnet/framework/debug-trace-profile/code-contracts) are now recognized, and are treated like any other assertion methods.
30
38
* Expression nullability flow state is given by the predicates `Expr.hasNotNullFlowState()` and `Expr.hasMaybeNullFlowState()`.
| Disabled Spring CSRF protection (`java/spring-disabled-csrf-protection`) | security, external/cwe/cwe-352 | Finds disabled Cross-Site Request Forgery (CSRF) protection in Spring. |
13
14
| Failure to use HTTPS or SFTP URL in Maven artifact upload/download (`java/maven/non-https-url`) | security, external/cwe/cwe-300, external/cwe/cwe-319, external/cwe/cwe-494, external/cwe/cwe-829 | Finds use of insecure protocols during Maven dependency resolution. Results are shown on LGTM by default. |
15
+
| Left shift by more than the type width (`java/lshift-larger-than-type-width`) | correctness | Finds left shifts of ints by 32 bits or more and left shifts of longs by 64 bits or more. Results are shown on LGTM by default. |
16
+
| Suspicious date format (`java/suspicious-date-format`) | correctness | Finds date format patterns that use placeholders that are likely to be incorrect. |
| Dereferenced variable may be null (`java/dereferenced-value-may-be-null`) | Fewer false positives | Final fields with a non-null initializer are no longer reported. |
20
-
| Expression always evaluates to the same value (`java/evaluation-to-constant`) | Fewer false positives | Expressions of the form `0 * x` are usually intended and no longer reported. |
23
+
| Expression always evaluates to the same value (`java/evaluation-to-constant`) | Fewer false positives | Expressions of the form `0 * x` are usually intended and no longer reported. Also left shift of ints by 32 bits and longs by 64 bits are no longer reported as they are not constant, these results are instead reported by the new query `java/lshift-larger-than-type-width`. |
21
24
| Useless null check (`java/useless-null-check`) | More true positives | Useless checks on final fields with a non-null initializer are now reported. |
22
25
23
26
## Changes to libraries
24
27
28
+
* The data-flow library has been improved when flow through methods needs to be
29
+
combined with both taint tracking and flow through fields allowing more flow
30
+
to be tracked. This affects and improves most security queries, which may
31
+
report additional results.
25
32
* Identification of test classes has been improved. Previously, one of the
26
33
match conditions would classify any class with a name containing the string
27
34
"Test" as a test class, but now this matching has been replaced with one that
28
35
looks for the occurrence of actual unit-test annotations. This affects the
29
36
general file classification mechanism and thus suppression of alerts, and
30
37
also any security queries using taint tracking, as test classes act as
31
38
default barriers stopping taint flow.
39
+
* Parentheses are now no longer modelled directly in the AST, that is, the
40
+
`ParExpr` class is empty. Instead, a parenthesized expression can be
41
+
identified with the `Expr.isParenthesized()` member predicate.
| Unbound event handler receiver (`js/unbound-event-handler-receiver`) | Fewer false positive results | This query now recognizes additional ways event handler receivers can be bound. |
37
42
| Expression has no effect (`js/useless-expression`) | Fewer false positive results | The query now recognizes block-level flow type annotations and ignores the first statement of a try block. |
38
43
| Use of call stack introspection in strict mode (`js/strict-mode-call-stack-introspection`) | Fewer false positive results | The query no longer flags expression statements. |
44
+
| Missing CSRF middleware (`js/missing-token-validation`) | Fewer false positive results | The query reports fewer duplicates and only flags handlers that explicitly access cookie data. |
0 commit comments