diff --git a/History.md b/History.md
index 156fbb62e..931f43f91 100644
--- a/History.md
+++ b/History.md
@@ -1,3 +1,13 @@
+## WixBuild: Version 3.11.2.4516
+
+* HeathS: Add support for .NET Foundation signing service
+
+* RobMen: WIXBUG:6075 - Fix "Zip Slip" vulnerability in DTF.
+
+## WixBuild: Version 3.11.1.2318
+
+* RobMen - WIXBUG:5724 - fix DLL hijack of clean room when bundle launched elevated.
+
## WixBuild: Version 3.11.0.1701
* RobMen: WIXBUG:5536 - introduce wix.nativeca.targets to simplify CPP CA projects.
diff --git a/src/DTF/Libraries/Compression.Cab/Compression.Cab.csproj b/src/DTF/Libraries/Compression.Cab/Compression.Cab.csproj
index cf725598a..0a225dad4 100644
--- a/src/DTF/Libraries/Compression.Cab/Compression.Cab.csproj
+++ b/src/DTF/Libraries/Compression.Cab/Compression.Cab.csproj
@@ -12,6 +12,7 @@
true
v2.0
false
+ true
diff --git a/src/DTF/Libraries/Compression.Zip/Compression.Zip.csproj b/src/DTF/Libraries/Compression.Zip/Compression.Zip.csproj
index e4fe7e30b..84dda1a46 100644
--- a/src/DTF/Libraries/Compression.Zip/Compression.Zip.csproj
+++ b/src/DTF/Libraries/Compression.Zip/Compression.Zip.csproj
@@ -11,6 +11,7 @@
Microsoft.Deployment.Compression.Zip
true
v2.0
+ true
diff --git a/src/DTF/Libraries/Compression/ArchiveFileStreamContext.cs b/src/DTF/Libraries/Compression/ArchiveFileStreamContext.cs
index b082a1b9a..b17d3f2a8 100644
--- a/src/DTF/Libraries/Compression/ArchiveFileStreamContext.cs
+++ b/src/DTF/Libraries/Compression/ArchiveFileStreamContext.cs
@@ -633,6 +633,8 @@ private string TranslateFilePath(string path)
}
else
{
+ this.ValidateArchivePath(path);
+
filePath = path;
}
@@ -647,6 +649,16 @@ private string TranslateFilePath(string path)
return filePath;
}
+ private void ValidateArchivePath(string filePath)
+ {
+ string basePath = Path.GetFullPath(String.IsNullOrEmpty(this.directory) ? Environment.CurrentDirectory : this.directory);
+ string path = Path.GetFullPath(Path.Combine(basePath, filePath));
+ if (!path.StartsWith(basePath, StringComparison.InvariantCultureIgnoreCase))
+ {
+ throw new InvalidDataException("Archive cannot contain files with absolute or traversal paths.");
+ }
+ }
+
#endregion
}
}
diff --git a/src/DTF/Libraries/Compression/Compression.csproj b/src/DTF/Libraries/Compression/Compression.csproj
index 53f8ac35f..c19a299d0 100644
--- a/src/DTF/Libraries/Compression/Compression.csproj
+++ b/src/DTF/Libraries/Compression/Compression.csproj
@@ -12,6 +12,7 @@
true
v2.0
false
+ true
diff --git a/src/DTF/Libraries/Resources/Resources.csproj b/src/DTF/Libraries/Resources/Resources.csproj
index 5d8713293..8295e6719 100644
--- a/src/DTF/Libraries/Resources/Resources.csproj
+++ b/src/DTF/Libraries/Resources/Resources.csproj
@@ -10,6 +10,7 @@
Microsoft.Deployment.Resources
v2.0
true
+ true
diff --git a/src/DTF/Libraries/WindowsInstaller.Linq/WindowsInstaller.Linq.csproj b/src/DTF/Libraries/WindowsInstaller.Linq/WindowsInstaller.Linq.csproj
index 8f5af668e..cc8a05e88 100644
--- a/src/DTF/Libraries/WindowsInstaller.Linq/WindowsInstaller.Linq.csproj
+++ b/src/DTF/Libraries/WindowsInstaller.Linq/WindowsInstaller.Linq.csproj
@@ -11,6 +11,7 @@
Microsoft.Deployment.WindowsInstaller.Linq
true
v3.5
+ true
diff --git a/src/DTF/Libraries/WindowsInstaller.Package/WindowsInstaller.Package.csproj b/src/DTF/Libraries/WindowsInstaller.Package/WindowsInstaller.Package.csproj
index e96273f35..eee4c8e85 100644
--- a/src/DTF/Libraries/WindowsInstaller.Package/WindowsInstaller.Package.csproj
+++ b/src/DTF/Libraries/WindowsInstaller.Package/WindowsInstaller.Package.csproj
@@ -11,6 +11,7 @@
Microsoft.Deployment.WindowsInstaller.Package
v2.0
true
+ true
diff --git a/src/DTF/Libraries/WindowsInstaller/WindowsInstaller.csproj b/src/DTF/Libraries/WindowsInstaller/WindowsInstaller.csproj
index 047f390fd..e1db4063f 100644
--- a/src/DTF/Libraries/WindowsInstaller/WindowsInstaller.csproj
+++ b/src/DTF/Libraries/WindowsInstaller/WindowsInstaller.csproj
@@ -11,6 +11,7 @@
Microsoft.Deployment.WindowsInstaller
v2.0
true
+ true
diff --git a/src/DTF/Tools/SfxCA/SfxCA.vcxproj b/src/DTF/Tools/SfxCA/SfxCA.vcxproj
index 2c132bff3..b01e34df6 100644
--- a/src/DTF/Tools/SfxCA/SfxCA.vcxproj
+++ b/src/DTF/Tools/SfxCA/SfxCA.vcxproj
@@ -30,6 +30,7 @@
SfxCA
Unicode
EntryPoints.def
+ true
diff --git a/src/burn/engine/cache.cpp b/src/burn/engine/cache.cpp
index fd9a43889..46dc4146f 100644
--- a/src/burn/engine/cache.cpp
+++ b/src/burn/engine/cache.cpp
@@ -1104,13 +1104,29 @@ static HRESULT CalculateWorkingFolder(
{
HRESULT hr = S_OK;
RPC_STATUS rs = RPC_S_OK;
+ BOOL fElevated = FALSE;
WCHAR wzTempPath[MAX_PATH] = { };
UUID guid = {};
WCHAR wzGuid[39];
if (!vsczWorkingFolder)
{
- if (0 == ::GetTempPathW(countof(wzTempPath), wzTempPath))
+ ProcElevated(::GetCurrentProcess(), &fElevated);
+
+ if (fElevated)
+ {
+ if (!::GetWindowsDirectoryW(wzTempPath, countof(wzTempPath)))
+ {
+ ExitWithLastError(hr, "Failed to get windows path for working folder.");
+ }
+
+ hr = PathFixedBackslashTerminate(wzTempPath, countof(wzTempPath));
+ ExitOnFailure(hr, "Failed to ensure windows path for working folder ended in backslash.");
+
+ hr = ::StringCchCatW(wzTempPath, countof(wzTempPath), L"Temp\\");
+ ExitOnFailure(hr, "Failed to concat Temp directory on windows path for working folder.");
+ }
+ else if (0 == ::GetTempPathW(countof(wzTempPath), wzTempPath))
{
ExitWithLastError(hr, "Failed to get temp path for working folder.");
}
diff --git a/src/ext/BalExtension/mba/core/core.csproj b/src/ext/BalExtension/mba/core/core.csproj
index 7c1b7a3cb..acca4f8e6 100644
--- a/src/ext/BalExtension/mba/core/core.csproj
+++ b/src/ext/BalExtension/mba/core/core.csproj
@@ -14,6 +14,7 @@
true
true
true
+ true
diff --git a/src/ext/DifxAppExtension/difxapp.proj b/src/ext/DifxAppExtension/difxapp.proj
index 6c4e7dd19..1bf5473b3 100644
--- a/src/ext/DifxAppExtension/difxapp.proj
+++ b/src/ext/DifxAppExtension/difxapp.proj
@@ -4,6 +4,12 @@
+
+ Platform=x86
+
+
+ Platform=x64
+
diff --git a/src/ext/UIExtension/wixlib/AdvancedWelcomeEulaDlg.wxs b/src/ext/UIExtension/wixlib/AdvancedWelcomeEulaDlg.wxs
index d5ba41495..28966d54b 100644
--- a/src/ext/UIExtension/wixlib/AdvancedWelcomeEulaDlg.wxs
+++ b/src/ext/UIExtension/wixlib/AdvancedWelcomeEulaDlg.wxs
@@ -7,7 +7,7 @@
diff --git a/src/ext/UIExtension/wixlib/CustomizeDlg.wxs b/src/ext/UIExtension/wixlib/CustomizeDlg.wxs
index 4f6248eb4..1e668ce2d 100644
--- a/src/ext/UIExtension/wixlib/CustomizeDlg.wxs
+++ b/src/ext/UIExtension/wixlib/CustomizeDlg.wxs
@@ -29,8 +29,8 @@
-
-
+
+
diff --git a/src/ext/UIExtension/wixlib/DiskCostDlg.wxs b/src/ext/UIExtension/wixlib/DiskCostDlg.wxs
index 9fcc23268..fe3b6656a 100644
--- a/src/ext/UIExtension/wixlib/DiskCostDlg.wxs
+++ b/src/ext/UIExtension/wixlib/DiskCostDlg.wxs
@@ -11,8 +11,8 @@
-
-
+
+
diff --git a/src/ext/UIExtension/wixlib/ExitDialog.wxs b/src/ext/UIExtension/wixlib/ExitDialog.wxs
index 00e0a7bd3..895dbe012 100644
--- a/src/ext/UIExtension/wixlib/ExitDialog.wxs
+++ b/src/ext/UIExtension/wixlib/ExitDialog.wxs
@@ -10,7 +10,7 @@
-
+
diff --git a/src/ext/UIExtension/wixlib/FatalError.wxs b/src/ext/UIExtension/wixlib/FatalError.wxs
index b0f711b40..7889fd20a 100644
--- a/src/ext/UIExtension/wixlib/FatalError.wxs
+++ b/src/ext/UIExtension/wixlib/FatalError.wxs
@@ -12,7 +12,7 @@
-
+
diff --git a/src/ext/UIExtension/wixlib/FeaturesDlg.wxs b/src/ext/UIExtension/wixlib/FeaturesDlg.wxs
index 916f9f717..a2faf4c48 100644
--- a/src/ext/UIExtension/wixlib/FeaturesDlg.wxs
+++ b/src/ext/UIExtension/wixlib/FeaturesDlg.wxs
@@ -50,8 +50,8 @@
1
-
-
+
+
diff --git a/src/ext/UIExtension/wixlib/FilesInUse.wxs b/src/ext/UIExtension/wixlib/FilesInUse.wxs
index a91f88190..9692aff51 100644
--- a/src/ext/UIExtension/wixlib/FilesInUse.wxs
+++ b/src/ext/UIExtension/wixlib/FilesInUse.wxs
@@ -17,8 +17,8 @@
-
-
+
+
diff --git a/src/ext/UIExtension/wixlib/InstallDirDlg.wxs b/src/ext/UIExtension/wixlib/InstallDirDlg.wxs
index e43eb1ec5..fb1347856 100644
--- a/src/ext/UIExtension/wixlib/InstallDirDlg.wxs
+++ b/src/ext/UIExtension/wixlib/InstallDirDlg.wxs
@@ -15,8 +15,8 @@
-
-
+
+
diff --git a/src/ext/UIExtension/wixlib/InstallScopeDlg.wxs b/src/ext/UIExtension/wixlib/InstallScopeDlg.wxs
index 76a8b54ae..8dcf3b76c 100644
--- a/src/ext/UIExtension/wixlib/InstallScopeDlg.wxs
+++ b/src/ext/UIExtension/wixlib/InstallScopeDlg.wxs
@@ -7,8 +7,8 @@
diff --git a/src/ext/UIExtension/wixlib/MaintenanceWelcomeDlg.wxs b/src/ext/UIExtension/wixlib/MaintenanceWelcomeDlg.wxs
index b75910b86..3fb0f7d93 100644
--- a/src/ext/UIExtension/wixlib/MaintenanceWelcomeDlg.wxs
+++ b/src/ext/UIExtension/wixlib/MaintenanceWelcomeDlg.wxs
@@ -14,7 +14,7 @@
-
+
diff --git a/src/ext/UIExtension/wixlib/MsiRMFilesInUse.wxs b/src/ext/UIExtension/wixlib/MsiRMFilesInUse.wxs
index b9aa5b068..87d702097 100644
--- a/src/ext/UIExtension/wixlib/MsiRMFilesInUse.wxs
+++ b/src/ext/UIExtension/wixlib/MsiRMFilesInUse.wxs
@@ -25,8 +25,8 @@
-
-
+
+
diff --git a/src/ext/UIExtension/wixlib/OutOfDiskDlg.wxs b/src/ext/UIExtension/wixlib/OutOfDiskDlg.wxs
index f4245fad2..813593d9f 100644
--- a/src/ext/UIExtension/wixlib/OutOfDiskDlg.wxs
+++ b/src/ext/UIExtension/wixlib/OutOfDiskDlg.wxs
@@ -11,8 +11,8 @@
-
-
+
+
diff --git a/src/ext/UIExtension/wixlib/OutOfRbDiskDlg.wxs b/src/ext/UIExtension/wixlib/OutOfRbDiskDlg.wxs
index 23d0eff05..e018193ab 100644
--- a/src/ext/UIExtension/wixlib/OutOfRbDiskDlg.wxs
+++ b/src/ext/UIExtension/wixlib/OutOfRbDiskDlg.wxs
@@ -15,8 +15,8 @@
-
-
+
+
diff --git a/src/ext/UIExtension/wixlib/PrepareDlg.wxs b/src/ext/UIExtension/wixlib/PrepareDlg.wxs
index aa74d9772..1eece7387 100644
--- a/src/ext/UIExtension/wixlib/PrepareDlg.wxs
+++ b/src/ext/UIExtension/wixlib/PrepareDlg.wxs
@@ -10,7 +10,7 @@
1
-
+
diff --git a/src/ext/UIExtension/wixlib/ProgressDlg.wxs b/src/ext/UIExtension/wixlib/ProgressDlg.wxs
index 2e82dfcbf..091060d45 100644
--- a/src/ext/UIExtension/wixlib/ProgressDlg.wxs
+++ b/src/ext/UIExtension/wixlib/ProgressDlg.wxs
@@ -12,8 +12,8 @@
-
-
+
+
NOT Installed OR (Installed AND (RESUME OR Preselected) AND NOT PATCH)
diff --git a/src/ext/UIExtension/wixlib/ResumeDlg.wxs b/src/ext/UIExtension/wixlib/ResumeDlg.wxs
index 6393c4e31..f1dd0adfb 100644
--- a/src/ext/UIExtension/wixlib/ResumeDlg.wxs
+++ b/src/ext/UIExtension/wixlib/ResumeDlg.wxs
@@ -29,7 +29,7 @@
-
+
diff --git a/src/ext/UIExtension/wixlib/SetupTypeDlg.wxs b/src/ext/UIExtension/wixlib/SetupTypeDlg.wxs
index 1553f2bc0..2c8f15622 100644
--- a/src/ext/UIExtension/wixlib/SetupTypeDlg.wxs
+++ b/src/ext/UIExtension/wixlib/SetupTypeDlg.wxs
@@ -23,8 +23,8 @@
1
-
-
+
+
diff --git a/src/ext/UIExtension/wixlib/UserExit.wxs b/src/ext/UIExtension/wixlib/UserExit.wxs
index ded9e6d5f..742a46f11 100644
--- a/src/ext/UIExtension/wixlib/UserExit.wxs
+++ b/src/ext/UIExtension/wixlib/UserExit.wxs
@@ -12,7 +12,7 @@
-
+
diff --git a/src/ext/UIExtension/wixlib/VerifyReadyDlg.wxs b/src/ext/UIExtension/wixlib/VerifyReadyDlg.wxs
index c5ed4612a..b40702bdc 100644
--- a/src/ext/UIExtension/wixlib/VerifyReadyDlg.wxs
+++ b/src/ext/UIExtension/wixlib/VerifyReadyDlg.wxs
@@ -135,8 +135,8 @@
WixUI_InstallMode = "Remove"
-
-
+
+
diff --git a/src/ext/UIExtension/wixlib/WelcomeDlg.wxs b/src/ext/UIExtension/wixlib/WelcomeDlg.wxs
index 7e25866d5..c2f5840df 100644
--- a/src/ext/UIExtension/wixlib/WelcomeDlg.wxs
+++ b/src/ext/UIExtension/wixlib/WelcomeDlg.wxs
@@ -14,7 +14,7 @@
-
+
NOT Installed OR NOT PATCH
Installed AND PATCH
diff --git a/src/ext/UIExtension/wixlib/WelcomeEulaDlg.wxs b/src/ext/UIExtension/wixlib/WelcomeEulaDlg.wxs
index 08491cd5d..5d4fd81f5 100644
--- a/src/ext/UIExtension/wixlib/WelcomeEulaDlg.wxs
+++ b/src/ext/UIExtension/wixlib/WelcomeEulaDlg.wxs
@@ -8,7 +8,7 @@
-
+
1
diff --git a/src/ext/UtilExtension/util.proj b/src/ext/UtilExtension/util.proj
index 488857cd5..0462f654c 100644
--- a/src/ext/UtilExtension/util.proj
+++ b/src/ext/UtilExtension/util.proj
@@ -4,8 +4,8 @@
-
+
diff --git a/src/ext/VSExtension/vs.proj b/src/ext/VSExtension/vs.proj
index 2612e88a5..553ccdbf5 100644
--- a/src/ext/VSExtension/vs.proj
+++ b/src/ext/VSExtension/vs.proj
@@ -5,8 +5,8 @@
-
+
diff --git a/src/ext/ext.proj b/src/ext/ext.proj
index 72c766c89..16679ccff 100644
--- a/src/ext/ext.proj
+++ b/src/ext/ext.proj
@@ -11,6 +11,8 @@
false
+
+
@@ -27,7 +29,6 @@
-
diff --git a/tools/Dotnet.targets b/tools/Dotnet.targets
new file mode 100644
index 000000000..aa378082d
--- /dev/null
+++ b/tools/Dotnet.targets
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ $([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\))
+ $(WixRoot)packages\tools\
+ $(ProgramW6432)\dotnet\dotnet.exe
+ $(MSBuildProgramFiles32)\dotnet\dotnet.exe
+
+
+
+ $(DotnetToolsFolder)SignClient.exe
+
+
+
+
+
+ 1.1.7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
diff --git a/tools/WixBuild.Signing.targets b/tools/WixBuild.Signing.targets
new file mode 100644
index 000000000..e008147e0
--- /dev/null
+++ b/tools/WixBuild.Signing.targets
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+ <_SigningAppSettingsPath>$(MSBuildThisFileDirectory)appsettings.json
+ <_SigningFilterNonePath>$(MSBuildThisFileDirectory)signing-filter.none.txt
+ <_SigningName>WiX Toolset
+ <_SigningUrl>http://wixtoolset.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
diff --git a/tools/WixBuild.Tools.targets b/tools/WixBuild.Tools.targets
index 18ea19b93..822acc9ca 100644
--- a/tools/WixBuild.Tools.targets
+++ b/tools/WixBuild.Tools.targets
@@ -15,6 +15,9 @@
+
+
+
diff --git a/tools/WixBuild.targets b/tools/WixBuild.targets
index de6d4c5aa..75cc861b5 100644
--- a/tools/WixBuild.targets
+++ b/tools/WixBuild.targets
@@ -6,6 +6,7 @@
+
diff --git a/tools/WixBuild.vcxproj.props b/tools/WixBuild.vcxproj.props
index 580045d31..1364ee99d 100644
--- a/tools/WixBuild.vcxproj.props
+++ b/tools/WixBuild.vcxproj.props
@@ -48,6 +48,7 @@
$(OutDir)$(MultiTargetDirSuffix)\
$(OutputPath)$(MultiTargetDirSuffix)\
+ true
diff --git a/tools/WixBuild.vcxproj.targets b/tools/WixBuild.vcxproj.targets
index 1f2cac98e..307561fbd 100644
--- a/tools/WixBuild.vcxproj.targets
+++ b/tools/WixBuild.vcxproj.targets
@@ -11,5 +11,6 @@
WriteCppVersionFile;
GenerateWixInclude
+ true
diff --git a/tools/WixBuild.wixproj.targets b/tools/WixBuild.wixproj.targets
index 3510a8047..e96926cfb 100644
--- a/tools/WixBuild.wixproj.targets
+++ b/tools/WixBuild.wixproj.targets
@@ -3,41 +3,8 @@
-
- "$(PlatformSdkBinPath)signtool.exe"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
$(PrepareForBuildDependsOn);
diff --git a/tools/appsettings.json b/tools/appsettings.json
new file mode 100644
index 000000000..fe1c8c9b1
--- /dev/null
+++ b/tools/appsettings.json
@@ -0,0 +1,13 @@
+{
+ "SignClient": {
+ "AzureAd": {
+ "AADInstance": "https://login.microsoftonline.com/",
+ "ClientId": "c248d68a-ba6f-4aa9-8a68-71fe872063f8",
+ "TenantId": "16076fdc-fcc1-4a15-b1ca-32c9a255900e"
+ },
+ "Service": {
+ "Url": "https://codesign.dotnetfoundation.org/",
+ "ResourceId": "https://SignService/3c30251f-36f3-490b-a955-520addb85001"
+ }
+ }
+}
diff --git a/tools/signing-filter.none.txt b/tools/signing-filter.none.txt
new file mode 100644
index 000000000..44804a634
--- /dev/null
+++ b/tools/signing-filter.none.txt
@@ -0,0 +1 @@
+sign-no-files