微软的愚蠢根证书系统

admin 2024年11月6日17:36:29评论16 views字数 2152阅读7分10秒阅读模式

信任问题:微软与苹果在数字信任与加密方面的差距

我对苹果在其操作系统和设备上实施加密的做法感到非常赞赏。总体而言,苹果在其设备上使用安全隔区(Secure Enclave)方面有着长期的优良记录,并且在采用最新的加密方法上推进了数字信任。相比之下,个人并不太认可微软在数字信任和加密实现方面的表现。在我看来,微软在采用先进加密技术方面往往落后于行业数年。

我可能会错,但我认为微软可能正在通过云端动态添加根证书授权(CA,Certificate Authority)的数字证书。这种做法并不安全,可能会引发一系列问题,甚至成为攻击的切入点。尤其是对于隔离系统(air-gapped systems),这将是个严重的问题。其他应用程序,如 Python,不会自动触发可信根证书的下载,这可能会导致某些 Python 程序出错。此外,微软还似乎在 Windows 的新安装中添加了过期的根 CA 证书,这也很不寻常。

为了让大家了解数字证书的重要性,让我们探讨一下它们的应用场景。

数字证书的重要性

在此背景下,X509证书包含了Bob的公钥,当Bob使用私钥为数据或软件签名时,Alice可以使用Bob的公钥(从数字证书中获取)来验证该签名。每个数字证书都需要一个通向根CA的证书链。如果没有根CA,证书将无法被信任。

TRCA中的可疑证书(受信任的根证书机构)

我在Mac的Parallels虚拟机中安装了Windows 11,对其根证书的使用感到惊讶。特别问题在于,一些根证书已经在多年前到期:

微软的愚蠢根证书系统
过期证书示例

例如,我们可以看到一张证书的创建日期竟然可以追溯到1999年:

微软的愚蠢根证书系统
1999年证书示例

微软可能有一些遗留软件需要使用这些证书中包含的公钥,因此这些软件或许忽视了证书过期带来的风险。但这种情况不应发生

我可能会有误解,但微软在处理加密方面的记录确实不佳,其历史上有许多不良实现的例子。

另一个奇怪的现象是,当我们安装全新的Windows 11系统时,仅有17个根证书被安装。这不足以覆盖所有主要的根证书机构。Windows似乎依赖于Windows更新中的CTL(证书信任列表)。因此,用户必须启用更新,否则很可能会收到许多未信任的根证书警告。

微软当前的受信任根证书列表(https://ccadb.my.salesforce-sites.com/microsoft/IncludedCACertificateReportForMSFT)可以在此查看:

微软的愚蠢根证书系统
根证书列表

Microsoft Edge也会检查自己的CLT列表,然后将新的证书添加到TRCA(受信任的根证书机构)中。

示例:最长过期时间的证书

例如,DigiCert的一张证书有效期长达2046年:

微软的愚蠢根证书系统
DigiCert示例

这是一个4K RSA公钥:

微软的愚蠢根证书系统
4K RSA公钥

使用PowerShell下载和检查当前可信证书

可以使用以下PowerShell代码来下载并检查当前的可信证书:

# list taken from https://learn.microsoft.com/en-us/security/trusted-root/participants-list
# THANK YOU @ASwisstone https://x.com/ASwisstone ! :)

$content = $null
$content = (Invoke-WebRequest https://ccadb-public.secure.force.com/microsoft/IncludedCACertificateReportForMSFTCSV).Content

if (!$content)
{
Write-Host 'Cannot download list of certs. Exiting.' -ForegroundColor Red
}
else
{
$legitCerts = ($content -join '' | ConvertFrom-Csv).'SHA-1 Fingerprint'

#Grab local certs:
$machineRootCerts = dir Cert:LocalMachineRoot
$userRootCerts = dir Cert:CurrentUserRoot

#analyze
$allRootCerts = $machineRootCerts + $userRootCerts
$diffCerts = $allRootCerts | Where-Object {$_.Thumbprint -notin $legitCerts}

#display
if ($diffCerts.Count -eq 0)
{
Write-Host 'All your certs are present on the list.' -ForegroundColor Green
}
foreach ($cert in $diffCerts)
{
Write-Host (($cert.PSPath -split '::')[1]+"`t"+$cert.Issuer) -ForegroundColor Red
}
}

结论

总体来看,微软在数字证书管理方面存在一些让人担忧的问题,特别是对过期和旧证书的使用,可能为潜在的安全风险打开了大门。对于使用Windows系统的用户,保持更新以及定期检查证书的有效性至关重要。

原文始发于微信公众号(独眼情报):微软的愚蠢根证书系统

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月6日17:36:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   微软的愚蠢根证书系统https://cn-sec.com/archives/3363652.html

发表评论

匿名网友 填写信息