-
Notifications
You must be signed in to change notification settings - Fork 9
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
chore(deps): update pre-commit hook returntocorp/semgrep to v1.92.0 #116
Merged
Benjamin-Freoua-Alma
merged 1 commit into
develop
from
renovate/pre-commit-repositories
Oct 22, 2024
Merged
chore(deps): update pre-commit hook returntocorp/semgrep to v1.92.0 #116
Benjamin-Freoua-Alma
merged 1 commit into
develop
from
renovate/pre-commit-repositories
Oct 22, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
July 8, 2024 10:16
eae6371
to
d2635fa
Compare
Benjamin-Freoua-Alma
approved these changes
Jul 8, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
July 15, 2024 10:17
d2635fa
to
94bc2c9
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.78.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.79.0
Jul 15, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
July 22, 2024 10:15
94bc2c9
to
f399e41
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.79.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.80.0
Jul 22, 2024
joyet-simon
approved these changes
Jul 22, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
July 29, 2024 10:14
f399e41
to
4c9dd74
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.80.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.81.0
Jul 29, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
August 5, 2024 10:11
4c9dd74
to
cac530f
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.81.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.83.0
Aug 5, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
August 12, 2024 10:14
cac530f
to
5c4ae98
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.83.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.84.1
Aug 12, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
August 19, 2024 10:14
5c4ae98
to
99b4b61
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.84.1
chore(deps): update pre-commit hook returntocorp/semgrep to v1.85.0
Aug 19, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
September 9, 2024 10:14
99b4b61
to
1510a9b
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.85.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.86.0
Sep 9, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
September 16, 2024 10:14
1510a9b
to
85660c7
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.86.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.87.0
Sep 16, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
September 23, 2024 10:13
85660c7
to
78d6cf2
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.87.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.89.0
Sep 23, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
September 30, 2024 10:27
78d6cf2
to
27d11d0
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.89.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.90.0
Sep 30, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
October 7, 2024 10:13
27d11d0
to
d77acb9
Compare
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
October 14, 2024 10:13
d77acb9
to
a3406ba
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.90.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.91.0
Oct 14, 2024
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
October 14, 2024 10:14
a3406ba
to
6a42e82
Compare
alma-renovate-bot
bot
force-pushed
the
renovate/pre-commit-repositories
branch
from
October 21, 2024 10:11
6a42e82
to
4fad988
Compare
alma-renovate-bot
bot
changed the title
chore(deps): update pre-commit hook returntocorp/semgrep to v1.91.0
chore(deps): update pre-commit hook returntocorp/semgrep to v1.92.0
Oct 21, 2024
Quality Gate passedIssues Measures |
Benjamin-Freoua-Alma
approved these changes
Oct 22, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v1.27.0
->v1.92.0
Note: The
pre-commit
manager in Renovate is not supported by thepre-commit
maintainers or community. Please do not report any problems there, instead create a Discussion in the Renovate repository if you have any questions.Release Notes
returntocorp/semgrep (returntocorp/semgrep)
v1.92.0
Compare Source
1.92.0 - 2024-10-17
Added
Pro: taint-mode: Semgrep has now basic support to track taint through callbacks,
when they lead to a sink, e.g.:
New subcommand
dump-cst
for tree-sitter languages available viasemgrep show
. This shows the concrete syntax tree for a given file. (code-7653)Pro only: Updated C# parser supporting all versions of the language up to 13.0 (.NET 9) (saf-1610)
Added support for the Move-on-sui language! (sui)
Pro-only: semgrep test now supports the --pro flag to not only use pro languages
but also run the tests with the --pro-intrafile engine flag. If a finding
is detected only by the pro engine, please use
proruleid:
instead ofruleid:
and if an OSS finding is actually a false positive for the pro engine, please
add the
prook:
to your test annotation. (test_pro)Fixed
pro: dataflow: Fixed a bug that could cause a class constructor to not be analyzed
in the correct dependency order, potentially leading to FNs. (code-7649)
Display an ✘ instead of a ✔ in the scan status print out when scanning with Semgrep OSS code
is not enabled. (grow-422)
semgrep will no longer randomly segfault when --trace is on with -j > 2 (saf-1590)
Previously, semgrep fails when --trace-endpoint is specified, but --trace is not.
Now, we relax this requirement a bit. In this case, we disable tracing, print out a warning, and continue to scan. (sms-550)
v1.91.0
Compare Source
1.91.0 - 2024-10-10
Added
TypeScript that are assigned a new instance but lack an explicit type
definition. When no explicit type is provided for a class field, its type is
inferred from the type of the expression assigned to it. For example, in the
class definition
class Foo { private readonly bar = new Bar(); }
, the type ofbar
is inferred to beBar
. (code-7635)Fixed
rich.errors.LiveError
where attempting to display multiple progress barsraises an exception as flagged in #10562. (grow-414)
-n
to sometimes not match code-n
. (saf-1592)about the failure. Previously, in the app, it would seem to the user
that the scan is still in progress. (sms-502)
v1.90.0
Compare Source
1.90.0 - 2024-09-25
Added
*requirement*.txt
file and lockfiles in a requirements folder (
**/requirements/*.txt
). This functionalitywill be gated behind the
--enable-experimental-requirements
CLI flag. (sc-1752)Changed
Fixed
CMD $...ARGS
now behaves likeCMD ...
and matchesany CMD instruction that uses the array syntax such as
CMD ["ls"]
. Thisfix also applies to the other command-like instructions RUN
and ENTRYPOINT. (gh-9726)
Foo()
will now be inferred properly to be of typeFoo
. (saf-1537)v1.89.0
Compare Source
1.89.0 - 2024-09-19
Fixed
v1.88.0
Compare Source
1.88.0 - 2024-09-18
Added
The dataflow analysis in the Pro engine can now track method invocations on
variables of an interface type, safely assuming that any implementation of the
method can be called. For example, tainted input vulnerabilities in both
implementation classes can now be detected in the following code:
Type inference for constructor parameter properties in TypeScript is now
supported in the Pro engine. For example, the taint analysis can recognize that
sampleFunction
is defined inAbstractedService
class in the following code:Changed
v1.87.0
Compare Source
1.87.0 - 2024-09-13
Added
Semgrep now infers more accurate type information for class fields in
TypeScript. This improves taint tracking for dependency injection in
TypeScript, such as in the following example:
Semgrep's interfile analysis (available with the Pro Engine) now ships with information about Python's standard library, improving its ability to resolve names and types in Python code and therefore its ability to produce findings. (py-libdefs)
Added support for comparing Golang pre-release versions. With this, strict
core versions, pseudo-versions and pre-release versions can all be
compared to each other. (sc-1739)
Changed
--pro
) Semgrep willnow try to recover from it and continue the interfile analysis without falling back
immediately to intrafile analysis. This allows using
--max-memory
with--pro
ina more effective way. (flow-81)
Fixed
pro: taint-mode: Restore missing taint findings after having improved index-
sensitivity:
The Semgrep proprietary engine added a new entropy analyzer
entropy_v2
that supports strictness options. (gh-1641)v1.86.0
Compare Source
1.86.0 - 2024-09-04
Added
The taint analysis can now track method invocations on variables of an
interface type, when there is a single implementation. For example, the tainted
input vulnerability can now be detected in the following code:
When there are multiple implementations, the taint analysis will not follow any
of them. We will add handling of cases with multiple implementations in
upcoming updates. (code-7434)
Uses of values imported via ECMAScript
default
imports (e.g.,import example from 'mod';
) can now be matched by qualified name patterns (e.g.,mod.default
). (code-7463)Pro: taint-mode: Allow (experimental) control taint to propagate through
return
s.Now this taint rule:
It is able to find this:
A new flag --max-log-list-entries allows to control the
maximum number of entries that will be shown in the log (e.g.,
list of rule ids, list of skipped files).
A zero or negative value disables this filter.
The previous hardcoded limit was at 100 (and now becomes a default value). (max_log_list_entries)
Changed
--debug
mode,without the need to set
SEMGREP_LOG_SRCS=process_limits
. (logging)Fixed
Fixed inter-file constant propagation to prevent some definitions from being
incorrectly identified as constant, when they are modified in other parts of
the codebase. (code-6793)
pro: taint-mode: Fixed bug in taint signature instantiation that could cause an
update to a field in a nested object to not be tracked.
For example, in the code below, Semgrep knew that
Nested.update
updates thefld
attribute of aNested
object. But due to this bug, Semgrep would not know that
Wrapper.updateupdated the
fldattribute of the
nestedobject attribute in a
Wrapper` object.Fixed incorrect range matching parametrized type expressions in Julia (gh-10467)
Fixed an edge case that could lead to a failure to name or type imported Python symbols during interfile analysis. (py-imports)
Fix overly-aggressive match deduplication that could, under certain circumstances, lead to findings being closed and reopened in the app. (saf-1465)
Fixed regex-fix numbered capture groups, where it used to be the case that
a
replacement:
regex with numbered capture groups like\1\2\3
would effectivlybe the same as
\1\1\1
.After the fix:
src.py
12345
actually results in the fix
v1.85.0
Compare Source
1.85.0 - 2024-08-15
Added
.tfvars
as terraform files (saf-1481)Changed
Use --time instead. (debug)
Fixed
Fixed an error with julia list comprehentions where the pattern:
would match
However we would only get one binding [$A/x]
Behavior after fix: we get three bindings [$A/x,$B/y,$C/z] (saf-1480)
v1.84.1
Compare Source
1.84.1 - 2024-08-07
No significant changes.
v1.84.0
Compare Source
1.84.0 - 2024-08-06
Changed
with the medium or warning severity. We now use magenta for
cricical severity to be consistent with other tools such
as npm. (color)
Fixed
so that no double counting occurs. (saf-507)
v1.83.0
Compare Source
1.83.0 - 2024-08-02
Added
Fixed
Moreover, when the number of ignored files, or rules, or
other entities exceed a big number, we instead replace them
with a in the output to keep the output of semgrep
small. (debuglogs)
product but not the Secrets product to fail to be scanned for secrets.
Files that were not ignored for either product were not affected. (saf-1459)
v1.82.0
Compare Source
1.82.0 - 2024-07-30
Added
testsuite/
as a filepath to the default value for.semgrepignore
. (gh-1876)Changed
Fixed
Fixed metavariable comparison in step mode.
Used to be that the rule:
Wouldn't match, as one is an identifier, and the other an expression that has a
string literal. The fix was chainging the equality used. (saf-1061)
v1.81.0
Compare Source
1.81.0 - 2024-07-24
Changed
binary directly, without waiting that the semgrep-core program finish. (incremental_debug)
Fixed
C++: Scanning a project with header files (.h) now no longer causes a
spurious warnings that the file is being skipped, or not analyzed. (code-6899)
Semgrep will now be more strict (as it should be) when unifying identifiers.
Patterns like the one below may not longer work, particularly in Semgrep Pro:
Even if two classes
A
andB
may both have a method namedfoo
, these methodsare not the same, and their ids are not unifiable via
$F
. The right way of doingthis in Semgrep is the following:
We use a different metavariable to match each method, then we check whether they
have the same name (i.e., same string). (code-7336)
In the app, you can configure Secrets ignores separately from Code/SSC ignores. However, the
files that were ignored by Code/SSC and not Secrets were still being scanned during the
preprocessing stage for interfile analysis. This caused significantly longer scan times than
expected for some users, since those ignored files can ignore library code. This PR fixes that
behavior and makes Code/SSC ignores apply as expected. (saf-1087)
Fixed typo that prevented users from using "--junit-xml-output" flag and added a tests that invokes the flag. (saf-1437)
v1.80.0
Compare Source
1.80.0 - 2024-07-18
Added
OSemgrep now can take
--exclude-minified-files
to skip minified files. Additionally--no-exclude-minified-files
will disable this option. It is off by default. (cdx-460)Users are now required to login before using semgrep scan --pro.
Previously, semgrep will tell the users to log in, but the scan will still continue.
With this change, semgrep will tell the users to log in and stop the scan. (saf-1137)
Fixed
The language server no longer scans large or minified files (cdx-460)
Pro: Improved module resolution for Python. Imports like
from a.b import c
wherec
is a module will now be resolved by Semgrep. And, if a module cannot be foundin the search path, Semgrep will try to heuristically resolve the module by matching
the module specifier against the files that are being scanned. (code-7069)
A scan can occasionally freeze when using tracing with multiprocesses.
This change disables tracing when scanning each target file unless the scan runs in a single process. (saf-1143)
Improved error handling for rules with invalid patterns. Now, scans will still complete and findings from other rules will be reported. (saf-789)
The "package-lock.json" parser incorrectly assumed that all paths in the "packages" component of "package-lock.json" started with "node_modules/".
In reality, a dependency can be installed anywhere, so the parser was made more flexible to recognize alternative locations ("node_modules", "lib", etc). (sc-1576)
v1.79.0
Compare Source
1.79.0 - 2024-07-10
Added
(see https://aptos.dev/move/move-on-aptos for more info on this language).
Thanks a lot to Zhiping Liao (ArArgon) and Andrea Cappa for their contributions! (move_on_aptos)
packaging module with some custom logic, Pseudo-versions can now be compared against
strict core versions and other pseudo versions accurately. (sc-1601)
Fixed
tainting: Fixed bug in
--pro-intrafile
that caused Semgrep to confuse a parameterwith a top-level function with no arguments that happened to have the same name:
Fixed fatal errors on files containing nosemgrep annotation without
any rule ID after. (nosemgrep_exn)
Matching explanations: Focus nodes now appear after filter nodes, which is
the correct order of execution of pattern nodes. Filter nodes are now
unreversed. (saf-1127)
Autofix: Previews in the textual CLI output will now join differing lines
with a space, rather than joining with no whitespace whatsoever. (saf-1135)
Secrets: resolved some rare instances where historical scans would skip blobs
depending on the structure of the local copy of the repository (i.e., blobs
were only skipped if the specific copy of the git store had a certain
structure). (scrt-630)
v1.78.0
Compare Source
1.78.0 - 2024-06-27
Added
Matching of fully qualified type names in the metavariable-type operator has
been improved. For example:
The type of
x
will match botha.b.C
andC
.Fixed
Symbolic propagation now works on decorator functions, for example:
Fixed an issue where Python functions with annotations ending in
endpoint
,route
,get
,patch
,post
,put
,delete
,before_request
orafter_request
(i.e., ones we associate with Flask) were incorrectly analyzedwith the Code product in addition to the Secrets product when present in a file
being ignored for Code analysis but included for Secrets. (scrt-609)
v1.77.0
Compare Source
1.77.0 - 2024-06-24
Added
Semgrep will now report the id of the organization associated with logged in users when reporting metrics in the language server (cdx-508)
Pro: taint-mode: Improved index-sensitive taint tracking for tuple/list (un)packing.
Example 1:
Example 2:
Adds traces to help debug the performance of tainting. To send the traces added in the PR, pass
--trace
and also set the environment variableSEMGREP_TRACE_LEVEL=trace
. To send them to alocal endpoint instead of our default endpoint, use
--trace-endpoint
. (saf-1100)Fixed
Fixed a bug in the generation of the control-flow graph for
try
statements thatcould e.g. cause taint to report false positives:
Semgrep assumes that
clean
could raise an exception, buteven if it does, the tainted
data
will never reach the sink !data
must be clean herethe metrics.semgrep.dev server such as "cannot read property 'map' of undefined". (metrics_error)
dependencies whose package name does not end in a version constraint. (sc-1568)
v1.76.0
Compare Source
1.76.0 - 2024-06-17
Added
Added type inference support for basic operators in the Pro engine, including
+
,-
,*
,/
,>
,>=
,<=
,<
,==
,!=
, andnot
. For numericcomputation operators such as
+
and-
, if the left-hand side and right-handside types are equal, the return type is assumed to be the same. Additionally,
comparison operators like
>
and==
, as well as the negation operatornot
,are assumed to return a boolean type. (code-6940)
Added guidance for resolving token issues for
install-semgrep-pro
in non-interactive environments. (gh-1668)Adds support for a new flag,
--subdir <path>
, forsemgrep ci
, which allows users to pass asubdirectory to scan instead of the entire directory. The path should be a relative path, and
the directory where
semgrep ci
is run should be the root of the repository being scanned.Unless
SEMGREP_REPO_DISPLAY_NAME
is explicitly set, passing the subdirectorywill cause the results to go to a project specific to that subdirectory.
The intended use case for
semgrep ci --subdir path/to/dir
is to help users with very largerepos scan the repo in parts. (saf-1056)
Fixed
Language Server will now send error messages properly, and error handling is greatly improved (cdx-502)
Pro: Calling a safe method on a tainted object should no longer propagate taint.
Example:
Fixing errors in matching identifiers from wildcard imports. For example, this
update addresses the issue where the following top-level assignment:
from pony.orm import *
db = Database()
is not matched with the following pattern:
$DB = pony.orm.Database(...)
``` (code-7045)
[Pro Interfile JS/TS] Improve taint propagation through callbacks passed to
$X.map
functions and similar. Previously, such callbacks needed to have a return value for taint to be properly tracked. After this fix, they do not. (js-taint)Rust: Constructors will now properly match to only other constructors with
the same names, in patterns. (saf-1099)
v1.75.0
Compare Source
1.75.0 - 2024-06-03
Added
Pro: Semgrep can now track taint through tuple/list (un)packing intra-procedurally
(i.e., within a single function). For example:
Optional type matching is supported in the Pro engine for Python. For example,
in Python,
Optional[str]
,str | None
, andUnion[str, None]
represent thesame type but in different type expressions. The optional type match support
enables matching between these expressions, allowing any optional type
expression to match any other optional type expression when used with
metavariable-type filtering. It's important to note that syntactic pattern
matching still distinguishes between these types. (code-6939)
Add support for pnpm v9 (pnpm)
Added a new rule option decorators_order_matters, which allows users to make decorators/ non-keyword attributes matching stricter. The default matching for attributes is order-agnostic, but if this rule option is set to true, non-keyword attributes (e.g. decorators in Python) will be matched in order, while keyword attributes (e.g. static, inline, etc) are not affected.
An example usage will be a rule to detect any decorator that is outside of the route() decorator in Flask, since any decorator outside of the route() decorator takes no effect.
bad: another.func() takes no effect
@another.func("func")
@app.route("route")
def f():
pass
ok: route() is the outermost decorator
@app.route("route")
@another.func("func")
def f():
pass (saf-435)
Fixed
Pro: taint-mode: Fixed issue causing findings to be missed (false negatives)
when a global or class field was tainted, and then used in a sink after two
or more function calls.
For example:
[Mostly applicable to Pro Engine] Typed metavariables will now match against the inferred type of a binding even if a constant is propagated for that binding, if we are unable to infer a type from the constant. Previously, we would simply fail to match in this case. (saf-1060)
Removed the URLs at the end of the log when semgrep ci --dryrun is ran because dry run doesn't interact with the app so the URLs don't make sense. (saf-924)
v1.74.0
Compare Source
1.74.0 - 2024-05-23
Fixed
One part of interfile tainting was missing a constant propagation phase, which causes semgrep to miss some true positives in some cases during interfile analysis.
This fix adds the missing constant propagation. (saf-1032)
Semgrep now matches YAML tags (e.g.
!number
in!number 42
) correctly ratherthan ignoring them. (saf-1046)
Upgraded Semgrep's Dockerfile parser. This brings in various
fixes from
tree-sitter-dockerfile
including minimal support for heredoc templates, support for variables in keys
of LABEL instructions, support for multiple parameters for ADD and COPY
instructions, tolerance for blanks after the backslash of a line continuation.
As a result of supporting variables in LABEL keys, the multiple key/value
pairs found in LABEL instructions are now treated as if they each had they own
LABEL instruction. It allows a pattern
LABEL a=b
to matchLABEL a=b c=d
without the need for an ellipsis (
LABEL a=b ...
). Another consequence isthat the pattern
LABEL a=b c=d
can no longer matchLABEL c=d a=b
but itwill match a
LABEL a=b
instruction immediately followed by a separateLABEL c=d
. (upgrade-dockerfile-parser)v1.73.0
Compare Source
1.73.0 - 2024-05-16
Added
Fixed
couldn't find metavar $MT in the match results
error, which may occurwhen we capture FQN with the metavariable and use metavariable-type filter on
it. (code-7042)
v1.72.0
Compare Source
1.72.0 - 2024-05-08
Fixed
Dockerfile support: Avoid a silent parsing error that was possibly accompanied
with a segfault when parsing Dockerfiles that lack a trailing newline
character. (gh-10084)
Fixed bug that was preventing the use of
metavariable-pattern
withthe aliengrep engine of the generic mode. (gh-10222)
Added support for function declarations on object literals in the dataflow analysis.
For example, previously taint rules would not have matched the
following javascript code but now would.
Osemgrep only:
When rules have metavariable-type, they don't show up in the SARIF output. This change fixes that.
Also right now dataflow traces are always shown in SARIF even when --dataflow-traces is not passed. This change also fixes that. (saf-1020)
Fixed bug in rule parsing preventing patternless SCA rules from being validated. (saf-1030)
v1.71.0
Compare Source
1.71.0 - 2024-05-03
Added
Pro: const-prop: Previously inter-procedural const-prop could only infer whether
a function returned an arbitrary string constant. Now it will be able to infer
whether a function returns a concrete constant value, e.g.:
Python: const-prop: Semgrep will now recognize "..." * N expression as arbitrary
constant string literals (thus matching the pattern "..."). (flow-75)
Changed
--beta-testing-secrets-enabled
option, deprecated for several months, is now removed. Use--secrets
as its replacement. (gh-9987)Fixed
When using semgrep --test --json, we now report in the
config_missing_fixtests field in the JSON output not just rule files
containing a
fix:
without a corresponding ".fixed" test file; we now alsoreport rule files using a
fix-regex:
but without a corresponding a.fixed test file, and the
fix:
orfix-regex:
can be inany rule in the file (not just the first rule). (fixtest)
Fixes matching for go struct field tags metadata.
For example given the program:
The pattern,
will now match each field and the
$TAGS
metavariable will bebound when used in susequent patterns. (saf-949)
Matching: Patterns of statements ending in ellipsis metavariables, such as
x = 1
$...STMTS
will now properly extend the match range to accommodate whatever is captured by
the ellipsis metavariable ($...STMTS). (saf-961)
The SARIF output format should have the tag "security" when the "cwe"
section is present in the rule. Moreover, duplicate tags should be
de-duped.
Osemgrep wasn't doing this before, but with this fix, now it does. (saf-991)
Fixed bug in mix.lock parser where it was possible to fail on a python None error. Added handler for arbitrary exceptions during lockfile parsing. (sc-1466)
Moved
--historical-secrets
to the "Pro Engine" option group, instead of"Output formats", where it was previously (in error). (scrt-570)
v1.70.0
Compare Source
1.70.0 - 2024-04-24
Added
Added guidance for resolving API token issues in CI environments. (gh-10133)
The osemgrep show command supports 2 new options:
dump-ast
dump-pattern
.See
osemgrep show --help
for more information. (osemgrep_show)Added additional output flags which allow you to write output to multiple files in multiple formats.
For example, the comand
semgrep ci --text --json-output=result.json --sarif-output=result.sarif.json
Displays text output on stdout, writes the output that would be generated by passing the
--json
flagto
result.json
, and writes the output that would be generated by passing the--sarif
toresult.sarif.json
. (saf-341)Added an experimental feature for users to use osemgrep to format
SARIF output.
When both the flags --sarif and --use-osemgrep-sarif are specified,
semgrep will use the ocaml implementation to format SARIF.
This flag is experimental and can be removed any time. Users must not
rely on it being available. (saf-978)
Changed
compatible, there are some minor instances where updates to rules may be
needed, since PCRE2 is slightly more strict in some cases. For example, while
we previously accepted
[\w-.]
, such a pattern would now need to be written[\w.-]
or[\w\-.]
since PCRE2 rejects the first as having an invalid range. (scrt-467)Fixed
Semgrep LS now waits longer for users to login (gh-10109)
When semgrep ci finishes scanning and uploads findings, it tells the
app to mark the scan as completed.
For large findings, this may take a while and marking the scan as
completed may timeout. When a scan is not marked as completed, the app
may show that the repo is still processing, and confuses the user.
This change increases the timeout (previously 20 minutes) to 30
minutes. (saf-980)
Fix
semgrep ci --oss-only
when secrets product is enabled. (scrt-223)v1.69.0
Compare Source
1.69.0 - 2024-04-16
Added
--trace-endpoint <url>
.This change is for an internal feature for debugging performance. (saf-885)
Changed
via
LOG_TAGS
. You can get all debug logs withLOG_TAGS=everything
. We do notwant --debug's output to be enourmous, as it tends not to be useful and yet cause
some problems. Note that --debug is mainly intended for Semgrep developers, please
ask for help if needed. (gh-10044)
are now prefixed with
SEMGREP_
(orPYTEST_SEMGREP_
) to avoid namespacepollution and undesired cross-application side effects.
The supported environment variables are now
SEMGREP_LOG_TAGS
and
PYTEST_SEMGREP_LOG_TAGS
. (gh-10087)everything
toall
. All debug-level messages shown by default arenow tagged and selectable with a
default
tag. (gh-10089)Fixed
ends with an ellipsis now favors the longest match rather than the shortest
match when multiple matches are possible. For example, for a given target
program
a a b
, the patterna ... b
will matcha b
as before butthe pattern
a ...
will now match the longera a b
rather thana b
. (gh-10039)didn't work properly when adding a new file or renaming an existing file. (saf-897)
v1.68.0
Compare Source
1.68.0 - 2024-04-08
Added
Fixed
LOG_LEVEL
(as well asPYTEST_LOG_LEVEL
) isno longer consulted by Semgrep to determine the log level. Only
SEMGREP_LOG_LEVEL
is consulted.PYTEST_SEMGREP_LOG_LEVEL
is alsoconsulted in the current implementation but should not be used outside of
Semgrep's Pytest tests. This is to avoid accidentally affecting Semgrep
when inheriting the
LOG_LEVEL
destined to another application. (gh-10044)v1.67.0
Compare Source
1.67.0 - 2024-03-28
Added
--historical-secrets
flag for running Semgrep Secrets regex rules on githistory (requires Semgrep Secrets). This flag is not yet implemented for
--experimental
. (scrt-531)Changed
Files with the
.phtml
extension are now treated as PHP files. (gh-10009)[IMPORTANT] Logged in users running
semgrep ci
will now run the pro engine by default! Allsemgrep ci
scans will run with our proprietary languages (Apex and Elixir), as well as cross-function taint within a single file, and other single file pro optimizations we have developed. This is equivalent tosemgrep ci --pro-intrafile
. Users will likely see improved results if they are runningsemgrep ci
and did not already have additional configuration to enable pro analysis.The current default engine does not include cross-file analysis. To scan with cross-file analysis, turn on the app toggle or pass in the flag
--pro
. We recommend this unless you have very large repos (talk to our support to get help enabling cross-file analysis on monorepos!)To revert back to our OSS analysis, pass the flag
--oss-only
(or use--pro-languages
to continue to receive our proprietary languages).Reminder: because we release first to our canary image, this change will only immediately affect you if you are using
semgrep/semgrep:canary
. If you are usingsemgrep/semgrep:latest
, it will affect you when we bump canary to latest. (saf-845)Fixed
Fixed a parsing error in Kotlin when there's a newline between the class name and the primary constructor.
This could not parse before
because of the newline between the class name and the constructor.
Now it's fixed. (saf-899)
v1.66.2
Compare Source
1.66.2 - 2024-03-26
Added
Changed
temporarily reverted for further polishing of the feature. We will reintroduce
it in a later version. (saf-268)
Fixed
in Java, C++, and C#. (saf-928)
v1.66.1
Compare Source
1.66.1 - 2024-03-25
Fixed
in Rust, Cairo, Solidity, Dart. (autofix_vardef)
users were relying on it. We might remove them in the futur but in the
mean time we restored the packages and if we remove them we will announce
it more loudly. We also created a new page giving more information
about our policy for our docker images:
https://semgrep.dev/docs/semgrep-ci/packages-in-semgrep-docker/ (docker_bash)
v1.66.0
Compare Source
1.66.0 - 2024-03-19
Added
yield
keyword in Python. The Proengine now detects taint findings from taint sources returned by the yield
keyword. (saf-281)
Changed
osemgrep --remote will no longer clone into a tmp folder, but instead the CWD (cdx-remote)
[IMPORTANT] Inter-file differential scanning is now enabled for all Pro users.
Inter-file differential scanning is now enabled for all Pro users. While it may
take longer than intra-file differential scanning, which is the current default
for pro users, it offers deeper analysis of dataflow paths compared to
intra-file differential scanning. Additionally, it is significantly faster
than non-differential inter-file scanning, with scan times reduced to
approximately 1/10 of the non-differential inter-file scan. Users who
enable the pro engine and engage in differential PR scans on GitHub or
GitLab may experience the impact of this update. If needed, users can
revert to the previous intra-file differential scan behavior by configuring
the
--no-interfile-diff-scan
command-line option. (saf-268)Fixed
bash, jq, and curl utilities, to reduce its attack surface. (saf-861)
v1.65.0
Compare Source
1.65.0 - 2024-03-11
Changed
v1.64.0
Compare Source
1.64.0 - 2024-03-07
Changed
in osemgrep and -parsing_cache_dir in semgrep-core). (ast_caching)
in osemgrep. (registry_caching)
Fixed
ci
: Updated logic for informational message printed when no rules are sent tocorrectly display when secrets is enabled (in additional to
when code is). (scrt-455)
v1.63.0
Compare Source
1.63.0 - 2024-02-27
Added
{ body: { param } }
in the LHS of an assignment. Now given
{ body: { param } } = tainted
Semgrepwill correctly mark
param
as tainted. (flow-68)metavariable-regex
can now match on metavariables of interpolatedstrings which use variables that have known values. (saf-865)
Fixed
semgrep ci
scans now reflect a custom SEMGREP_APP_URL, if one is set. (saf-353)v1.62.0
Compare Source
1.62.0 - 2024-02-22
Added
Pro: Adds support for python constructors to taint analysis.
If interfile naming resolves that a python constructor is called taint
will now track these objects with less heuristics. Without interfile
analysis these changes have no effect on the behavior of tainting.
The overall result is that in the following program the oss analysis
would match both calls to sink while the interfile analysis would only
match the second call to sink.
OK:
sink(a.untainted)
MATCH:
sink(a.tainted)
There is still a finding for
sink(x[i])
wheni
is not constant. (flow-7)Changed
taint-mode: Added
exact: false
sinks so that one can specify that anythinginside a code region is a sink, e.g.
if (...) { ... }
. This used to be thesemantics of sink specifications until Semgrep 1.1.0, when we made sink matching
more precise by default. Now we allow reverting to the old semantics.
In addition, when
exact: true
(the default), we simplified the heuristic usedto support traditional
sink(...)
-like specs together with the optiontaint_assume_safe_functions: true
, now we will consider that if the specformula is not a
patterns
with afocus-metavarible
, then we must look fortaint in the arguments of a function call. (flow-1)
The project name for repos scanned locally will now be
local_scan/<repo_name>
insteadof simply
<repo_name>
. This will clarify the origin of those findings. Also, the"View Results" URL displayed for findings now includes the repository and branch names. (saf-856)
Fixed
support multiple labels, so Semgrep picks one arbitrary label to report, which
sometimes it's not the desired one. As a temporary workaround, Semgrep will
look at the
requires
of the sink, and if it has the shapeA and ...
, thenit will pick
A
as the preferred label and report its trace. (flow-65)to correctly autofix those constructs. (tparams)
v1.61.1
Compare Source
1.61.1 - 2024-02-14
Added
Added performance metrics using OpenTelemetry for better visualization.
Users wishing to understand the performance of their Semgrep scans or
to help optimize Semgrep can configure the backend collector created in
libs/tracing/unix/Tracing.ml
.This is experimental and both the implementation and flags are likely to
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Renovate Bot.