已解决【漏洞】关于自定义商人NBT数据类型缺失的代码调查报告

1.7.10传承版自36.6版本以后,商人可以通过NBT数据定义以下两个参数:

参考文献:Trading | The Lord of the Rings Minecraft Mod Wiki | Fandom

ShouldLockTrades [boolean, default true] :控制商人是否会因为一次性交易大量商品临时锁定交易;

ShouldRefresh [boolean, default true] :控制商人是否会在总交易额超过一定值后刷新所有交易。

经NBT分析,传承版的商人NPC具备这两个参数

S_2C(Z9H4(W@`22J4OAI$RJ

【传承版的商人NBT数据】

然而,重制版,无论是1.7.10还是1.12.2版本均缺失ShouldLockTrades变量,只有ShouldRefresh变量

L)IFE_Y%KEY%B}7S3~L}AVO

【重制版的商人NBT数据】

这导致商人无法通过改写NBT数据实现无限交易,如银币兑换、出售不限量商品等功能。

经排查,该漏洞是由于商人实体类的定义缺少该变量和与之相关的if判定代码导致的,需要修复。

如下图中标示的代码上方缺少声明和初始化private boolean ShouldLockTrades = true;

$I(ECX95HIZA14JJ~EO0@AS

请登录后发表评论

    没有回复内容