H-K-Y / Genshin_Impact_bot

原神bot,这是一个基于nonebot和HoshinoBot的原神娱乐及信息查询插件,包含原神抽卡,丘丘语翻译,找资源点等功能
GNU General Public License v3.0
387 stars 85 forks source link

【重要】Hoshino版本的部分功能存在CQ码注入漏洞 #98

Closed MingxuanGame closed 2 years ago

MingxuanGame commented 2 years ago

注入细节

通过在消息段构造CQ码,通过bot.send发送时将接收到的构造的CQ码被误认为真正的CQ码,实现注入

影响功能

资源地图,刷副本

影响版本

从提到的功能加入时到现在的全部提交均会收到影响

危害

可能会被利用发送一些其他的消息(如R18的图片,涉及sz等内容)导致机器人被风控/封号

解决方法

通过git clone

下载附件,将里面的Fix CQ Injection.patch复制到仓库文件夹,然后在仓库文件夹输入

git apply "Fix CQ Injection.patch"

通用解决方案(但是不推荐,若不是通过git clone下载的请通过此方法)

下载附件,将里面的query_resource_points.py复制到仓库文件夹/query_resource_points,替换掉原来的query_resource_points.py __init__.pyArtifact.py复制到仓库文件夹/artifact_collect,替换掉原来的那两个文件

附件

Fix CQ Injection.zip

chingkingm commented 2 years ago

可以改为on_rex触发,用\w来匹配,如

(\w+)哪里有

Screenshot_20220402-000746__01.jpg

MingxuanGame commented 2 years ago

刷副本等也可能存在注入 待需测试

MingxuanGame commented 2 years ago

已经确定找资源和刷副本存在注入 其他经过测试未发现注入 补丁已更新

MingxuanGame commented 2 years ago

昨天(4/1)晚上打了git patch补丁的query_resource_points.py第314行

mes.append(MessageSegment.text("\n\n※ {name} 一共找到 {count} 个位置点\n※ 数据来源于米游社wiki"))

替换成

mes.append(MessageSegment.text(f"\n\n※ {name} 一共找到 {count} 个位置点\n※ 数据来源于米游社wiki"))

打了今天补丁的(4/2)和使用通用方法的可以不用修改