Compare commits

...

11 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
860a7689c5 Add URL scheme validation to prevent command injection via Process.Start
- HelpMenu.cs: Add https/http scheme validation to OpenUrl() to prevent
  custom URI scheme exploitation
- UpdateWindow.cs: Add scheme validation alongside existing IsFile/IsUnc/IsLoopback
  checks to only allow http/https URLs
- ProgramRoot.cs: Add https:// prefix validation for network-fetched downloadUrl
  before passing to Process.Start with UseShellExecute=true

Co-authored-by: Kvarkas <3611964+Kvarkas@users.noreply.github.com>
2026-02-25 17:36:46 +00:00
copilot-swe-agent[bot]
b65686823c Initial plan 2026-02-25 17:29:05 +00:00
Dimitrij
43735b1d04 Merge pull request #3169 from mRemoteNG/renovate/vstest-monorepo
Update dependency Microsoft.NET.Test.Sdk to 18.3.0
2026-02-24 17:25:53 +00:00
renovate[bot]
002f6cb290 Update dependency Microsoft.NET.Test.Sdk to 18.3.0 2026-02-24 13:30:48 +00:00
Dimitrij
92c617d442 Merge pull request #3168 from mRemoteNG/renovate/aws-sdk-net-monorepo
Update aws-sdk-net monorepo
2026-02-24 10:20:28 +00:00
renovate[bot]
764b96f864 Update aws-sdk-net monorepo 2026-02-23 21:57:17 +00:00
Dimitrij
e30a8ad3f0 Merge pull request #3164 from mRemoteNG/renovate/chromiumembeddedframework.runtime.win-arm64-145.x
Update dependency chromiumembeddedframework.runtime.win-arm64 to v145
2026-02-22 16:26:38 +00:00
Dimitrij
1e85969e3a Merge pull request #3165 from mRemoteNG/renovate/chromiumembeddedframework.runtime.win-x64-145.x
Update dependency chromiumembeddedframework.runtime.win-x64 to v145
2026-02-22 16:26:24 +00:00
renovate[bot]
1a47bba982 Update dependency chromiumembeddedframework.runtime.win-x64 to v145 2026-02-22 16:24:37 +00:00
renovate[bot]
1cc5f05bf5 Update dependency chromiumembeddedframework.runtime.win-arm64 to v145 2026-02-22 16:24:32 +00:00
Dimitrij
7e0277f85d Update GitHub regex to exclude user-attachments
allow attachments
2026-02-22 16:24:08 +00:00
6 changed files with 21 additions and 7 deletions

View File

@@ -20,7 +20,7 @@ jobs:
with:
script: |
const githubRepoRegex =
/\[[^\]]*\]\(https?:\/\/github\.com\/[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+[^\s)]*\)|https?:\/\/github\.com\/[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+[^\s)]*/gi;
/\[[^\]]*\]\((?!https?:\/\/github\.com\/user-attachments\/assets\/)[^\)]*https?:\/\/github\.com\/(?!user-attachments\/assets\/)[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+[^\s)]*\)|https?:\/\/github\.com\/(?!user-attachments\/assets\/)[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+[^\s)]*/gi;
// CASE 1: Comment
if (context.payload.comment) {

View File

@@ -5,8 +5,8 @@
<NoWarn>$(NoWarn);NU1507;NU1701</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="AWSSDK.Core" Version="4.0.3.14" />
<PackageVersion Include="AWSSDK.EC2" Version="4.0.76" />
<PackageVersion Include="AWSSDK.Core" Version="4.0.3.15" />
<PackageVersion Include="AWSSDK.EC2" Version="4.0.76.1" />
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.6.2" />
<PackageVersion Include="Castle.Core" Version="5.2.1" />
<PackageVersion Include="ConsoleControl" Version="1.3.0" />
@@ -25,7 +25,7 @@
<PackageVersion Include="Microsoft.Data.SqlClient.SNI.runtime" Version="6.0.2" />
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="10.0.3" />
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="10.0.3" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
<PackageVersion Include="Microsoft.NETCore.Platforms" Version="7.0.4" />
<PackageVersion Include="Microsoft.NETCore.Targets" Version="5.0.0" />
<PackageVersion Include="Microsoft.VisualStudio.TextTemplating.VSHost" Version="17.14.40265" />

View File

@@ -64,7 +64,9 @@ namespace mRemoteNG.App
{
try
{
Process.Start(new ProcessStartInfo(fileName: downloadUrl) { UseShellExecute = true });
if (!string.IsNullOrEmpty(downloadUrl) &&
downloadUrl.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
Process.Start(new ProcessStartInfo(fileName: downloadUrl) { UseShellExecute = true });
}
catch (Exception ex)
{

View File

@@ -204,6 +204,11 @@ namespace mRemoteNG.UI.Menu
private static void OpenUrl(string url)
{
if (string.IsNullOrWhiteSpace(url) ||
(!url.StartsWith("https://", StringComparison.OrdinalIgnoreCase) &&
!url.StartsWith("http://", StringComparison.OrdinalIgnoreCase)))
return;
var startInfo = new ProcessStartInfo
{
FileName = url,

View File

@@ -99,6 +99,13 @@ namespace mRemoteNG.UI.Window
return;
}
// Only allow http/https URLs to prevent exploitation via custom URI schemes
if (!linkUri.Scheme.Equals("https", StringComparison.OrdinalIgnoreCase) &&
!linkUri.Scheme.Equals("http", StringComparison.OrdinalIgnoreCase))
{
return;
}
var startInfo = new ProcessStartInfo
{
FileName = linkUri.ToString(),

View File

@@ -553,10 +553,10 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<PackageReference Update="chromiumembeddedframework.runtime.win-x64" Version="144.0.12" />
<PackageReference Update="chromiumembeddedframework.runtime.win-x64" Version="145.0.26" />
</ItemGroup>
<ItemGroup Condition="'$(Platform)'=='arm64'">
<PackageReference Update="chromiumembeddedframework.runtime.win-arm64" Version="144.0.12" />
<PackageReference Update="chromiumembeddedframework.runtime.win-arm64" Version="145.0.26" />
</ItemGroup>
<ItemGroup>
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />