注册忘记密码

黑客论坛,黑客工具,黑客教程,QQ技术,黑客基地,黑客网络,黑客软件,黑客联盟,免杀,远控,ddos,cc,黑客攻防,黑客编程,黑客定位,手机定位,微信定位,hack,黑客网站,查开房,定位,信息查询

查看: 296|回复: 0

[黑客新闻] 无题大鹅模拟游戏(Untitled Goose Game)存在代码可执行漏洞

[复制链接]
   0 UID
   0帖子
   0精华
21
   0威望
500
   0金币
44899
   0贡献
5000
   0阅读权限
   200
   积分
   0
   在线时间
   534 小时
   最后登录
   2019-12-14
发表于 2019-12-3 01:30:17 来自手机 | 显示全部楼层 |阅读模式
Untitled Goose Game(无题大鹅模拟、捣蛋鹅)是一款画风简单的第三人称模拟类游戏,通过模拟一只大鹅去完成一些捣乱任务,是House House制作的一款农场题材搞笑游戏。经作者发现,Untitled Goose Game由于在其游戏存档加载器(Save Game Loader)中存在不安全的反序列化机制从而可导致代码执行漏洞,攻击者可以针对目标玩家的在启动游戏存档加载器时实施恶意代码执行攻击。

漏洞详情

Untitled Goose Game使用.NET的BinaryFormatter去读取和反序列化游戏存档文件,由于其中未采用特定的SerializationBinder去控制反序列化过程,因此,控制了游戏存档文件的攻击者可以利用其反序列化过程来执行任意代码。攻击者只需在游戏存档文件中写入一个恶意的序列化对象,让Untitled Goose Game去读取即可实现攻击。游戏存档文件在操作系统中的存储位置为C:\Users<USER>\AppData\LocalLow\House House\Untitled Goose Game\savegame0.save.

Untitled Goose Game中的反序列化过程发生在Untitled_Data\Managed\Assembly-CSharp.dll文件的StandaloneSaveSystem类中,以下是其中存在安全风险的方法函数:

public SaveGameData LoadSlot(int slot) {  string savePath = this.GetSavePath(slot);  SaveGameData result;  if (File.Exists(savePath))  {   Debug.Log("loading from " + savePath);   using (FileStream fileStream = File.Open(savePath, FileMode.Open))   {    result = (SaveGameData)new BinaryFormatter().Deserialize(fileStream);   }   Debug.Log("sucessfully loaded savegame data from " + savePath);  }  else  {   Debug.Log("savefile doesn't exist. didn't load any data");   result = new SaveGameData();  }  return result; }
漏洞利用所需工具

要成功利用该漏洞,需要用到 James Forshaw 改进过的一个反序列组件TypeConfuseDelegate,具体可以参考此处。其实,该改进组件已经整合到了反序列化工具ysoserial.net中了,可以在此下载。

可用以下命令生成PoC漏洞利用:

ysoserial.exe -f BinaryFormatter -t TypeConfuseDelegateMono -o raw -c "calc" > "C:\Users<user>\AppData\LocalLow\House House\Untitled Goose Game\savegame0.save"

新发布的TypeConfuseDelegateMono组件,可用来发起对其它基于MONO平台开发游戏的攻击测试。

漏洞上报处置进程

07/10/2019 - 向House House公司通报

09/10/2019 - House House确认漏洞

22/10/2019 - House House发布补丁

29/10/2019 - 公开漏洞

发表回复

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则


快速回复 返回顶部 返回列表