Skip to content

Commit eb26f52

Browse files
authored
Merge branch 'main' into rust-cwe-502-unsafe-deserialization
2 parents 86fb1d1 + abc11b3 commit eb26f52

26 files changed

Lines changed: 2365 additions & 601 deletions

File tree

‎csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ internal sealed partial class NugetPackageRestorer : IDisposable
1818
private readonly IFileProvider fileProvider;
1919
private readonly FileContent fileContent;
2020
private readonly IDotNet dotnet;
21-
private readonly IRegistryProxy? registryProxy;
2221
private readonly IDiagnosticsWriter diagnosticsWriter;
2322
private readonly DependencyDirectory legacyPackageDirectory;
2423
private readonly DependencyDirectory missingPackageDirectory;
@@ -41,7 +40,6 @@ public NugetPackageRestorer(
4140
this.fileProvider = fileProvider;
4241
this.fileContent = fileContent;
4342
this.dotnet = dotnet;
44-
this.registryProxy = registryProxy;
4543
this.diagnosticsWriter = diagnosticsWriter;
4644
this.logger = logger;
4745
this.compilationInfoContainer = compilationInfoContainer;
@@ -135,7 +133,7 @@ public HashSet<AssemblyLookupLocation> Restore()
135133

136134
try
137135
{
138-
var packagesConfigRestore = PackagesConfigRestoreFactory.Create(fileProvider, legacyPackageDirectory, logger, feedManager, registryProxy);
136+
var packagesConfigRestore = PackagesConfigRestoreFactory.Create(fileProvider, legacyPackageDirectory, logger, feedManager);
139137
var count = packagesConfigRestore.InstallPackages();
140138
if (packagesConfigRestore.PackageCount > 0)
141139
{

‎csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/PackagesConfigRestorer.cs‎

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ internal interface IPackagesConfigRestore
3333
/// </summary>
3434
internal class PackagesConfigRestoreFactory
3535
{
36-
public static IPackagesConfigRestore Create(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, IRegistryProxy? registryProxy)
36+
public static IPackagesConfigRestore Create(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager)
3737
{
3838
if (SystemBuildActions.Instance.IsWindows() || SystemBuildActions.Instance.IsMonoInstalled())
3939
{
40-
return new NugetExeWrapper(fileProvider, packageDirectory, logger, feedManager, registryProxy);
40+
return new NugetExeWrapper(fileProvider, packageDirectory, logger, feedManager);
4141
}
4242

4343
return new NoOpPackagesConfig(fileProvider.PackagesConfigs, logger);
@@ -52,7 +52,6 @@ private class NugetExeWrapper : IPackagesConfigRestore
5252
{
5353
private readonly string? nugetExe;
5454
private readonly Semmle.Util.Logging.ILogger logger;
55-
private readonly IRegistryProxy? registryProxy;
5655

5756
public int PackageCount => fileProvider.PackagesConfigs.Count;
5857

@@ -71,13 +70,12 @@ private class NugetExeWrapper : IPackagesConfigRestore
7170
/// <summary>
7271
/// Create the package manager for a specified source tree.
7372
/// </summary>
74-
public NugetExeWrapper(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager, IRegistryProxy? registryProxy)
73+
public NugetExeWrapper(IFileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, FeedManager feedManager)
7574
{
7675
this.fileProvider = fileProvider;
7776
this.packageDirectory = packageDirectory;
7877
this.logger = logger;
7978
this.feedManager = feedManager;
80-
this.registryProxy = registryProxy;
8179

8280
if (fileProvider.PackagesConfigs.Count > 0)
8381
{
@@ -211,9 +209,6 @@ private bool TryRestoreNugetPackage(string packagesConfig)
211209
UseShellExecute = false
212210
};
213211

214-
// Configure the proxy settings, if applicable.
215-
registryProxy?.SetProcessEnvironment(pi);
216-
217212
var threadId = Environment.CurrentManagedThreadId;
218213
void onOut(string s) => logger.LogDebug(s, threadId);
219214
void onError(string s) => logger.LogError(s, threadId);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: minorAnalysis
3+
---
4+
* Rolled back the change that set proxy and certificate environment variables for the subprocess that invokes the NuGet CLI because the environment variables were only partially respected by the target process in some cases.

‎misc/scripts/check-query-ids.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ def main():
2020
query_ids: Dict[str, List[str]] = {}
2121

2222
# Just check src folders for now to avoid churn
23-
for query_path in Path().glob("**/src/**/*.ql"):
23+
# The glob can yield the same file more than once when its path contains several `src` folders.
24+
for query_path in sorted(set(Path().glob("**/src/**/*.ql"))):
2425
# Skip compiled query packs
2526
if any(p == ".codeql" for p in query_path.parts):
2627
continue
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: minorAnalysis
3+
---
4+
* Added neutral models to inhibit spurious generated sink models for `actix_web::HttpRequest::connection_info` and the methods built on it, such as `full_url` and `url_for`. This fixes some false positive results from queries such as `rust/uncontrolled-allocation-size` and `rust/log-injection`.

‎rust/ql/lib/codeql/rust/frameworks/actix-web.model.yml‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,15 @@ extensions:
1515
pack: codeql/rust-all
1616
extensible: summaryModel
1717
data:
18-
- ["<actix_web::types::path::Path>::into_inner", "Argument[self]", "ReturnValue", "taint", "manual"]
18+
- ["<actix_web::types::path::Path>::into_inner", "Argument[self]", "ReturnValue", "taint", "manual"]
19+
- addsTo:
20+
pack: codeql/rust-all
21+
extensible: neutralModel
22+
data:
23+
- ["<actix_web::info::ConnectionInfo as actix_web::extract::FromRequest>::from_request", "sink", "manual"]
24+
- ["<actix_web::request::HttpRequest>::connection_info", "sink", "manual"]
25+
- ["<actix_web::request::HttpRequest>::full_url", "sink", "manual"]
26+
- ["<actix_web::request::HttpRequest>::url_for", "sink", "manual"]
27+
- ["<actix_web::request::HttpRequest>::url_for_static", "sink", "manual"]
28+
- ["<actix_web::rmap::ResourceMap>::url_for", "sink", "manual"]
29+
- ["<actix_web::service::ServiceRequest>::connection_info", "sink", "manual"]

0 commit comments

Comments
 (0)