-
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
DataFlowStack Common Library #14673
DataFlowStack Common Library #14673
Conversation
Manual Merge: C# ZipSlip Conflict
Compatible with the latest released version of the CodeQL CLI
This pr is auto merged as it contains a mandatory file and is opened for more than 10 days.
Compatible with the latest released version of the CodeQL CLI
Compatible with the latest released version of the CodeQL CLI
Compatible with the latest released version of the CodeQL CLI
Compatible with the latest released version of the CodeQL CLI
Compatible with the latest released version of the CodeQL CLI
Compatible with the latest released version of the CodeQL CLI
Compatible with the latest released version of the CodeQL CLI
Compatible with the latest released version of the CodeQL CLI
…dels-libraries-and-queries-migration (#19) 16 cryptography models libraries and queries migration Co-authored-by: Rasmus Wriedt Larsen <[email protected]>
Compatible with the latest released version of the CodeQL CLI
Co-authored-by: Mathias Vorreiter Pedersen <[email protected]>
…_pick Brodes/additional target cherry pick
…s-for-cpp (#23) C++: Add an abstract class that can be used to extend `viableCallable` Co-authored-by: Mathias Vorreiter Pedersen <[email protected]>
QHelp previews: csharp/ql/src/Security Features/CWE-022/ZipSlip.qhelpArbitrary file access during archive extraction ("Zip Slip")Extracting files from a malicious zip file, or similar type of archive, is at risk of directory traversal attacks if filenames from the archive are not properly validated. Zip archives contain archive entries representing each file in the archive. These entries include a file path for the entry, but these file paths are not restricted and may contain unexpected special elements such as the directory traversal element ( For example, if a zip file contains a file entry RecommendationEnsure that output paths constructed from zip archive entries are validated to prevent writing files to unexpected locations. The recommended way of writing an output file from a zip archive entry is to conduct the following in sequence:
ExampleIn this example, a file path taken from a zip archive item entry is combined with a destination directory. The result is used as the destination file path without verifying that the result is within the destination directory. If provided with a zip file containing an archive path like using System.IO;
using System.IO.Compression;
class Bad
{
public static void WriteToDirectory(ZipArchiveEntry entry,
string destDirectory)
{
string destFileName = Path.Combine(destDirectory, entry.FullName);
entry.ExtractToFile(destFileName);
}
} To fix this vulnerability, we need to make three changes. Firstly, we need to resolve any directory traversal or other special characters in the path by using using System.IO;
using System.IO.Compression;
class Good
{
public static void WriteToDirectory(ZipArchiveEntry entry,
string destDirectory)
{
string destFileName = Path.GetFullPath(Path.Combine(destDirectory, entry.FullName));
string fullDestDirPath = Path.GetFullPath(destDirectory + Path.DirectorySeparatorChar);
if (!destFileName.StartsWith(fullDestDirPath)) {
throw new System.InvalidOperationException("Entry is outside the target dir: " +
destFileName);
}
entry.ExtractToFile(destFileName);
}
} References
|
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.
CodeQL found more than 10 potential problems in the proposed changes. Check the Files changed tab for more details.
No description provided.