【问题标题】:Why does Electron kill Windows processes that have arguments with colons?为什么 Electron 会杀死带有冒号参数的 Windows 进程?
【发布时间】:2021-05-15 09:24:01
【问题描述】:

如果我启动一个带有冒号参数的 Electron 程序,程序会立即退出。

Process process = new Process();
process.StartInfo.FileName = "C:\\Program Files (x86)\\SomeElectronApp.exe";
process.StartInfo.Arguments = "ab:c d";
process.Start();

process.WaitForExit();
Console.WriteLine(1); // break point here

但是,如果我交换参数以使带有冒号的参数始终排在最后,那么程序将成功启动。

这是提到here

[This] 是针对旧 Windows 漏洞的安全缓解措施

有人知道这个缺陷是什么吗?

更新:

找到源代码here

函数CheckCommandLineArguments有如下逻辑:

else if (IsUrlArg(argv[i])) {
   block_args = true;
}

IsUrlArg 在哪里:

// colon indicates that the argument starts with a URI scheme
if (c == ':') {
     // it could also be a Windows filesystem path
     if (p == arg + 1)
          break;

     return true;
}

【问题讨论】:

    标签: c# .net windows process electron


    【解决方案1】:

    “缺陷”很可能是包含空格的未加引号的文件名。

    考虑

    > "C:\Program Files (x86)\SomeElectronApp.exe" "C:\Program Files (x86)\SomeElectronFile.dat"
    

    > "C:\Program Files (x86)\SomeElectronApp.exe" C:\Program Files (x86)\SomeElectronFile.dat
    

    > C:\Program Files (x86)\SomeElectronApp.exe C:\Program Files (x86)\SomeElectronFile.dat
    

    如果您错误地将文件关联设置为

    path\to\exe %1
    

    而不是

    path\to\exe "%1"
    

    那么每个使用ShellExecute 函数的程序都会给你一个不带引号的文件名,即使它包含空格。

    使其成为“Windows”缺陷的原因在于,在 Windows 上,一个命令行字符串被传递给生成的程序,该程序负责将其分解为 argv 数组。相比之下,大多数其他操作系统传递参数数组,因此启动程序必须努力将文件名分解为多个单词。

    【讨论】:

    • 我找到了执行此操作的实际源代码(在我的问题中)。似乎它们实际上允许 Windows 文件路径,但不允许其他带有冒号的参数,因此即使是未加引号的文件路径也会通过检查。好像他们在尝试阻止 URI?
    【解决方案2】:

    通过查看提交找到了答案。

    修复远程代码执行漏洞 (CVE-2018-1000006)。 Source:

    当满足某些条件时,受影响的电子版本可能容易受到远程代码执行缺陷的影响:

    1. electron 应用程序正在 Windows 上运行。
    2. 电子应用程序注册为协议的默认处理程序,例如 nodeapp://。

    此漏洞是由于无法在 Electron 的命令行处理程序中清理 chromium 的其他参数造成的。

    blog post here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      相关资源
      最近更新 更多