Minecraft exploit fix — Trident Dupe 三叉戟複製修復

28

漏洞發現

該漏洞是 Minecraft 本身的漏洞,在1.13~1.21.4 (截止至2025/2/20) 皆有效

2/18偶然在YouTube上看到2B2T三叉戟複製影片,查詢了一下在此影片找到漏洞復現模組

漏洞原理

我使用Skript偵測Event並了解複製原理

on shoot:
    send "shoot!" to shooter
    
on drop:
    send "drop!" to player

在複製過程中,我發現三叉戟射出去之後伴隨著一個將三叉戟Q出去的動作

也就意味著三叉戟在射出去的那剎那留在背包裡面,而且是在射出去之後才消失

因此如果我們在三叉戟射出之後快速將三叉戟丟棄,那就會得到一個插在地上的三叉戟以及丟棄的三叉戟

完成複製

漏洞修復

為了驗證並修復此問題,我寫了以下Skript腳本刪除任何在射出三叉戟後1 tick內丟棄的物品

on shoot:
    if projectile is trident:
        set {anticheat::trident::%shooter's uuid%} to true    #將玩家設置標籤,表示剛射出三叉戟
        wait 1 tick    #等待三叉戟從背包消失
        delete {anticheat::trident::%shooter's uuid%}
    
on drop:
    if {anticheat::trident::%player's uuid%} is true:
        set item of event-dropped item to a air    #若在等待期間試圖丟棄三叉戟,將刪除掉落物

經過測試成功修復漏洞,且不影響正常玩家