Quellcode durchsuchen

Merge pull request from GHSA-9p5f-5x8v-x65m

Throw exception on path traversal in WriteDocumentAsync
Joshua M. Boniface vor 2 Jahren
Ursprung
Commit
82ad2633fd
1 geänderte Dateien mit 5 neuen und 0 gelöschten Zeilen
  1. 5 0
      MediaBrowser.Controller/ClientEvent/ClientEventLogger.cs

+ 5 - 0
MediaBrowser.Controller/ClientEvent/ClientEventLogger.cs

@@ -23,6 +23,11 @@ namespace MediaBrowser.Controller.ClientEvent
         {
             var fileName = $"upload_{clientName}_{clientVersion}_{DateTime.UtcNow:yyyyMMddHHmmss}_{Guid.NewGuid():N}.log";
             var logFilePath = Path.Combine(_applicationPaths.LogDirectoryPath, fileName);
+            if (!Path.GetFullPath(logFilePath).StartsWith(_applicationPaths.LogDirectoryPath, StringComparison.Ordinal))
+            {
+                throw new ArgumentException("Path resolved to filename not in log directory");
+            }
+
             await using var fileStream = new FileStream(logFilePath, FileMode.CreateNew, FileAccess.Write, FileShare.None);
             await fileContents.CopyToAsync(fileStream).ConfigureAwait(false);
             return fileName;