CVE-2021-39177 (Java, published 2021-08-30T23:15Z)
Description: value: Geyser is a bridge between Minecraft: Bedrock Edition and Minecraft: Java Edition. Versions of Geyser prior to 1.4.2-SNAPSHOT allow anyone that can connect to the server to forge a LoginPacket with manipulated JWT token allowing impersonation as any user. Version 1.4.2-SNAPSHOT contains a patch for the issue. There are no known workarounds aside from upgrading.
Severity: HIGH (CVSS v3 base score: 9.8)
Weakness: CWE-287 \u2014 Improper Authentication
When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct.
Repository: https://github.com/GeyserMC/Geyser
Files changed:
Jenkinsfile
ap/pom.xml
bootstrap/bungeecord/pom.xml
bootstrap/pom.xml
bootstrap/spigot/pom.xml
bootstrap/sponge/pom.xml
bootstrap/standalone/pom.xml
bootstrap/velocity/pom.xml
common/pom.xml
connector/pom.xml
connector/src/main/java/org/geysermc/connector/network/UpstreamPacketHandler.java
connector/src/main/java/org/geysermc/connector/network/translators/PacketTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/PacketTranslatorRegistry.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockAdventureSettingsTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockAnimateTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockBlockEntityDataTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockBlockPickRequestTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockBookEditTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockCommandBlockUpdateTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockCommandRequestTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockContainerCloseTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockEmoteListTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockEntityPickRequestTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockFilterTextTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockInventoryTransactionTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockItemFrameDropItemTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockItemStackRequestTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockLecternUpdateTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockMapInfoRequestTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockMobEquipmentTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockMoveEntityAbsoluteTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockNetworkStackLatencyTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockPacketViolationWarningTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockPlayerInputTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockPositionTrackingDBClientRequestTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockRespawnTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockServerSettingsRequestTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockShowCreditsTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/BedrockTextTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/entity/BedrockEntityEventTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/entity/player/BedrockActionTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/entity/player/BedrockEmoteTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/entity/player/BedrockInteractTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/entity/player/BedrockMovePlayerTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/entity/player/BedrockRiderJumpTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/entity/player/BedrockSetPlayerGameTypeTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/bedrock/world/BedrockLevelSoundEventTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaAdvancementsTabTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaAdvancementsTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaBossBarTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaChatTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareCommandsTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareRecipesTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDeclareTagsTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDifficultyTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaDisconnectPacket.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaJoinGameTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaKeepAliveTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaLoginDisconnectTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaLoginPluginRequestTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaLoginSuccessTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaPingPacket.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaPluginMessageTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaRespawnTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaStatisticsTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/JavaUnlockRecipesTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityAnimationTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityAttachTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityCollectItemTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityEffectTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityEquipmentTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityHeadLookTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityMetadataTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityPositionRotationTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityPositionTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityPropertiesTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityRemoveEffectTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityRotationTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntitySetPassengersTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityStatusTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityTeleportTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaEntityVelocityTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/JavaRemoveEntitiesTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerAbilitiesTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerActionAckTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerChangeHeldItemTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerHealthTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerListEntryTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerPositionRotationTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/player/JavaPlayerSetExperienceTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/spawn/JavaSpawnEntityTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/spawn/JavaSpawnExpOrbTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/spawn/JavaSpawnLivingEntityTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/spawn/JavaSpawnPaintingTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/entity/spawn/JavaSpawnPlayerTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaDisplayScoreboardTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaScoreboardObjectiveTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaTeamTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/scoreboard/JavaUpdateScoreTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/title/JavaClearTitlesTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/title/JavaSetActionBarTextTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/title/JavaSetSubtitleTextTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/title/JavaSetTitleTextTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/title/JavaSetTitlesAnimationTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/window/JavaCloseWindowTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/window/JavaOpenHorseWindowTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/window/JavaOpenWindowTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/window/JavaSetSlotTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/window/JavaWindowItemsTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/window/JavaWindowPropertyTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockBreakAnimTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockChangeTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaBlockValueTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaChunkDataTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaExplosionTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaMapDataTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaMultiBlockChangeTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaNotifyClientTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaPlayBuiltinSoundTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaPlayEffectTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaPlaySoundTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaSpawnParticleTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaSpawnPositionTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaStopSoundTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaTradeListTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUnloadChunkTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUpdateTileEntityTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUpdateTimeTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUpdateViewDistanceTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaUpdateViewPositionTranslator.java
connector/src/main/java/org/geysermc/connector/network/translators/java/world/JavaVehicleMoveTranslator.java
connector/src/main/java/org/geysermc/connector/utils/LoginEncryptionUtils.java
pom.xml
Commit message: Bump version to try and fix deploying; other nitpicks


Vulnerable code:
        /*stage ('Deploy') {
        }*/
        <version>1.4.1-SNAPSHOT</version>
    <version>1.4.1-SNAPSHOT</version>
        <version>1.4.1-SNAPSHOT</version>
            <version>1.4.1-SNAPSHOT</version>
        <version>1.4.1-SNAPSHOT</version>
            <version>1.4.1-SNAPSHOT</version>
        <version>1.4.1-SNAPSHOT</version>
            <version>1.4.1-SNAPSHOT</version>
        <version>1.4.1-SNAPSHOT</version>
            <version>1.4.1-SNAPSHOT</version>
        <version>1.4.1-SNAPSHOT</version>
            <version>1.4.1-SNAPSHOT</version>
        <version>1.4.1-SNAPSHOT</version>
            <version>1.4.1-SNAPSHOT</version>
        <version>1.4.1-SNAPSHOT</version>
        <version>1.4.1-SNAPSHOT</version>
            <version>1.4.1-SNAPSHOT</version>
            <version>1.4.1-SNAPSHOT</version>
            <version>690a545d</version>
        LoginEncryptionUtils.encryptPlayerConnection(connector, session, loginPacket);
    public abstract void translate(T packet, GeyserSession session);
            translator.translate(packet, session);
    public void translate(AdventureSettingsPacket packet, GeyserSession session) {
    public void translate(AnimatePacket packet, GeyserSession session) {
    public void translate(BlockEntityDataPacket packet, GeyserSession session) {
    public void translate(BlockPickRequestPacket packet, GeyserSession session) {
    public void translate(BookEditPacket packet, GeyserSession session) {
    public void translate(CommandBlockUpdatePacket packet, GeyserSession session) {
    public void translate(CommandRequestPacket packet, GeyserSession session) {
    public void translate(ContainerClosePacket packet, GeyserSession session) {
    public void translate(EmoteListPacket packet, GeyserSession session) {
    public void translate(EntityPickRequestPacket packet, GeyserSession session) {
    public void translate(FilterTextPacket packet, GeyserSession session) {
    public void translate(InventoryTransactionPacket packet, GeyserSession session) {
    public void translate(ItemFrameDropItemPacket packet, GeyserSession session) {
    public void translate(ItemStackRequestPacket packet, GeyserSession session) {
    public void translate(LecternUpdatePacket packet, GeyserSession session) {
    public void translate(MapInfoRequestPacket packet, GeyserSession session) {
    public void translate(MobEquipmentPacket packet, GeyserSession session) {
    public void translate(MoveEntityAbsolutePacket packet, GeyserSession session) {
    public void translate(NetworkStackLatencyPacket packet, GeyserSession session) {
    public void translate(PacketViolationWarningPacket packet, GeyserSession session) {
    public void translate(PlayerInputPacket packet, GeyserSession session) {
    public void translate(PositionTrackingDBClientRequestPacket packet, GeyserSession session) {
    public void translate(RespawnPacket packet, GeyserSession session) {
    public void translate(ServerSettingsRequestPacket packet, GeyserSession session) {
    public void translate(SetLocalPlayerAsInitializedPacket packet, GeyserSession session) {
    public void translate(ShowCreditsPacket packet, GeyserSession session) {
    public void translate(TextPacket packet, GeyserSession session) {
    public void translate(EntityEventPacket packet, GeyserSession session) {
    public void translate(PlayerActionPacket packet, GeyserSession session) {
    public void translate(EmotePacket packet, GeyserSession session) {
    public void translate(InteractPacket packet, GeyserSession session) {
    public void translate(MovePlayerPacket packet, GeyserSession session) {
    public void translate(RiderJumpPacket packet, GeyserSession session) {
    public void translate(SetPlayerGameTypePacket packet, GeyserSession session) {
    public void translate(LevelSoundEventPacket packet, GeyserSession session) {
    public void translate(ServerAdvancementTabPacket packet, GeyserSession session) {
    public void translate(ServerAdvancementsPacket packet, GeyserSession session) {
    public void translate(ServerBossBarPacket packet, GeyserSession session) {
    public void translate(ServerChatPacket packet, GeyserSession session) {
    public void translate(ServerDeclareCommandsPacket packet, GeyserSession session) {
    public void translate(ServerDeclareRecipesPacket packet, GeyserSession session) {
    public void translate(ServerDeclareTagsPacket packet, GeyserSession session) {
    public void translate(ServerDifficultyPacket packet, GeyserSession session) {
    public void translate(ServerDisconnectPacket packet, GeyserSession session) {
    public void translate(ServerJoinGamePacket packet, GeyserSession session) {
    public void translate(ServerKeepAlivePacket packet, GeyserSession session) {
    public void translate(LoginDisconnectPacket packet, GeyserSession session) {
    public void translate(LoginPluginRequestPacket packet, GeyserSession session) {
    public void translate(LoginSuccessPacket packet, GeyserSession session) {
    public void translate(ServerPingPacket packet, GeyserSession session) {
    public void translate(ServerPluginMessagePacket packet, GeyserSession session) {
    public void translate(ServerRespawnPacket packet, GeyserSession session) {
    public void translate(ServerStatisticsPacket packet, GeyserSession session) {
    public void translate(ServerUnlockRecipesPacket packet, GeyserSession session) {
    public void translate(ServerEntityAnimationPacket packet, GeyserSession session) {
    public void translate(ServerEntityAttachPacket packet, GeyserSession session) {
    public void translate(ServerEntityCollectItemPacket packet, GeyserSession session) {
    public void translate(ServerEntityEffectPacket packet, GeyserSession session) {
    public void translate(ServerEntityEquipmentPacket packet, GeyserSession session) {
    public void translate(ServerEntityHeadLookPacket packet, GeyserSession session) {
    public void translate(ServerEntityMetadataPacket packet, GeyserSession session) {
    public void translate(ServerEntityPositionRotationPacket packet, GeyserSession session) {
    public void translate(ServerEntityPositionPacket packet, GeyserSession session) {
    public void translate(ServerEntityPropertiesPacket packet, GeyserSession session) {
    public void translate(ServerEntityRemoveEffectPacket packet, GeyserSession session) {
    public void translate(ServerEntityRotationPacket packet, GeyserSession session) {
    public void translate(ServerEntitySetPassengersPacket packet, GeyserSession session) {
    public void translate(ServerEntityStatusPacket packet, GeyserSession session) {
    public void translate(ServerEntityTeleportPacket packet, GeyserSession session) {
    public void translate(ServerEntityVelocityPacket packet, GeyserSession session) {
    public void translate(ServerRemoveEntitiesPacket packet, GeyserSession session) {
    public void translate(ServerPlayerAbilitiesPacket packet, GeyserSession session) {
    public void translate(ServerPlayerActionAckPacket packet, GeyserSession session) {
    public void translate(ServerPlayerChangeHeldItemPacket packet, GeyserSession session) {
    public void translate(ServerPlayerHealthPacket packet, GeyserSession session) {
    public void translate(ServerPlayerListEntryPacket packet, GeyserSession session) {
    public void translate(ServerPlayerPositionRotationPacket packet, GeyserSession session) {
    public void translate(ServerPlayerSetExperiencePacket packet, GeyserSession session) {
    public void translate(ServerSpawnEntityPacket packet, GeyserSession session) {
    public void translate(ServerSpawnExpOrbPacket packet, GeyserSession session) {
    public void translate(ServerSpawnLivingEntityPacket packet, GeyserSession session) {
    public void translate(ServerSpawnPaintingPacket packet, GeyserSession session) {
    public void translate(ServerSpawnPlayerPacket packet, GeyserSession session) {
    public void translate(ServerDisplayScoreboardPacket packet, GeyserSession session) {
    public void translate(ServerScoreboardObjectivePacket packet, GeyserSession session) {
    public void translate(ServerTeamPacket packet, GeyserSession session) {
    public void translate(ServerUpdateScorePacket packet, GeyserSession session) {
    public void translate(ServerClearTitlesPacket packet, GeyserSession session) {
    public void translate(ServerSetActionBarTextPacket packet, GeyserSession session) {
    public void translate(ServerSetSubtitleTextPacket packet, GeyserSession session) {
    public void translate(ServerSetTitleTextPacket packet, GeyserSession session) {
    public void translate(ServerSetTitlesAnimationPacket packet, GeyserSession session) {
    public void translate(ServerCloseWindowPacket packet, GeyserSession session) {
    public void translate(ServerOpenHorseWindowPacket packet, GeyserSession session) {
    public void translate(ServerOpenWindowPacket packet, GeyserSession session) {
    public void translate(ServerSetSlotPacket packet, GeyserSession session) {
    public void translate(ServerWindowItemsPacket packet, GeyserSession session) {
    public void translate(ServerWindowPropertyPacket packet, GeyserSession session) {
    public void translate(ServerBlockBreakAnimPacket packet, GeyserSession session) {
    public void translate(ServerBlockChangePacket packet, GeyserSession session) {
    public void translate(ServerBlockValuePacket packet, GeyserSession session) {
    public void translate(ServerChunkDataPacket packet, GeyserSession session) {
    public void translate(ServerExplosionPacket packet, GeyserSession session) {
    public void translate(ServerMapDataPacket packet, GeyserSession session) {
    public void translate(ServerMultiBlockChangePacket packet, GeyserSession session) {
    public void translate(ServerNotifyClientPacket packet, GeyserSession session) {
    public void translate(ServerPlayBuiltinSoundPacket packet, GeyserSession session) {
    public void translate(ServerPlayEffectPacket packet, GeyserSession session) {
    public void translate(ServerPlaySoundPacket packet, GeyserSession session) {
    public void translate(ServerSpawnParticlePacket packet, GeyserSession session) {
    public void translate(ServerSpawnPositionPacket packet, GeyserSession session) {
    public void translate(ServerStopSoundPacket packet, GeyserSession session) {
    public void translate(ServerTradeListPacket packet, GeyserSession session) {
    public void translate(ServerUnloadChunkPacket packet, GeyserSession session) {
    public void translate(ServerUpdateTileEntityPacket packet, GeyserSession session) {
    public void translate(ServerUpdateTimePacket packet, GeyserSession session) {
    public void translate(ServerUpdateViewDistancePacket packet, GeyserSession session) {
    public void translate(ServerUpdateViewPositionPacket packet, GeyserSession session) {
    public void translate(ServerVehicleMovePacket packet, GeyserSession session) {
            if (!validChain) {
                validChain = EncryptionUtils.verifyJwt(jwt, EncryptionUtils.getMojangPublicKey());
            if (lastKey != null) {
                if (!EncryptionUtils.verifyJwt(jwt, lastKey)) return false;
            JsonNode payloadNode = JSON_MAPPER.readTree(jwt.getPayload().toString());
            JsonNode ipkNode = payloadNode.get("identityPublicKey");
            Preconditions.checkState(ipkNode != null && ipkNode.getNodeType() == JsonNodeType.STRING, "identityPublicKey node is missing in chain");
            lastKey = EncryptionUtils.generateKey(ipkNode.asText());
    public static void encryptPlayerConnection(GeyserConnector connector, GeyserSession session, LoginPacket loginPacket) {
        encryptConnectionWithCert(connector, session, loginPacket.getSkinData().toString(), certChainData);
    private static void encryptConnectionWithCert(GeyserConnector connector, GeyserSession session, String clientData, JsonNode certChainData) {
    <version>1.4.1-SNAPSHOT</version>

Fixed code:
        stage ('Deploy') {
        }
        <version>1.4.2-SNAPSHOT</version>
    <version>1.4.2-SNAPSHOT</version>
        <version>1.4.2-SNAPSHOT</version>
            <version>1.4.2-SNAPSHOT</version>
        <version>1.4.2-SNAPSHOT</version>
            <version>1.4.2-SNAPSHOT</version>
        <version>1.4.2-SNAPSHOT</version>
            <version>1.4.2-SNAPSHOT</version>
        <version>1.4.2-SNAPSHOT</version>
            <version>1.4.2-SNAPSHOT</version>
        <version>1.4.2-SNAPSHOT</version>
            <version>1.4.2-SNAPSHOT</version>
        <version>1.4.2-SNAPSHOT</version>
            <version>1.4.2-SNAPSHOT</version>
        <version>1.4.2-SNAPSHOT</version>
        <version>1.4.2-SNAPSHOT</version>
            <version>1.4.2-SNAPSHOT</version>
            <version>1.4.2-SNAPSHOT</version>
            <version>6ce2f6e</version>
        LoginEncryptionUtils.encryptPlayerConnection(session, loginPacket);
    public abstract void translate(GeyserSession session, T packet);
            translator.translate(session, packet);
    public void translate(GeyserSession session, AdventureSettingsPacket packet) {
    public void translate(GeyserSession session, AnimatePacket packet) {
    public void translate(GeyserSession session, BlockEntityDataPacket packet) {
    public void translate(GeyserSession session, BlockPickRequestPacket packet) {
    public void translate(GeyserSession session, BookEditPacket packet) {
    public void translate(GeyserSession session, CommandBlockUpdatePacket packet) {
    public void translate(GeyserSession session, CommandRequestPacket packet) {
    public void translate(GeyserSession session, ContainerClosePacket packet) {
    public void translate(GeyserSession session, EmoteListPacket packet) {
    public void translate(GeyserSession session, EntityPickRequestPacket packet) {
    public void translate(GeyserSession session, FilterTextPacket packet) {
    public void translate(GeyserSession session, InventoryTransactionPacket packet) {
    public void translate(GeyserSession session, ItemFrameDropItemPacket packet) {
    public void translate(GeyserSession session, ItemStackRequestPacket packet) {
    public void translate(GeyserSession session, LecternUpdatePacket packet) {
    public void translate(GeyserSession session, MapInfoRequestPacket packet) {
    public void translate(GeyserSession session, MobEquipmentPacket packet) {
    public void translate(GeyserSession session, MoveEntityAbsolutePacket packet) {
    public void translate(GeyserSession session, NetworkStackLatencyPacket packet) {
    public void translate(GeyserSession session, PacketViolationWarningPacket packet) {
    public void translate(GeyserSession session, PlayerInputPacket packet) {
    public void translate(GeyserSession session, PositionTrackingDBClientRequestPacket packet) {
    public void translate(GeyserSession session, RespawnPacket packet) {
    public void translate(GeyserSession session, ServerSettingsRequestPacket packet) {
    public void translate(GeyserSession session, SetLocalPlayerAsInitializedPacket packet) {
    public void translate(GeyserSession session, ShowCreditsPacket packet) {
    public void translate(GeyserSession session, TextPacket packet) {
    public void translate(GeyserSession session, EntityEventPacket packet) {
    public void translate(GeyserSession session, PlayerActionPacket packet) {
    public void translate(GeyserSession session, EmotePacket packet) {
    public void translate(GeyserSession session, InteractPacket packet) {
    public void translate(GeyserSession session, MovePlayerPacket packet) {
    public void translate(GeyserSession session, RiderJumpPacket packet) {
    public void translate(GeyserSession session, SetPlayerGameTypePacket packet) {
    public void translate(GeyserSession session, LevelSoundEventPacket packet) {
    public void translate(GeyserSession session, ServerAdvancementTabPacket packet) {
    public void translate(GeyserSession session, ServerAdvancementsPacket packet) {
    public void translate(GeyserSession session, ServerBossBarPacket packet) {
    public void translate(GeyserSession session, ServerChatPacket packet) {
    public void translate(GeyserSession session, ServerDeclareCommandsPacket packet) {
    public void translate(GeyserSession session, ServerDeclareRecipesPacket packet) {
    public void translate(GeyserSession session, ServerDeclareTagsPacket packet) {
    public void translate(GeyserSession session, ServerDifficultyPacket packet) {
    public void translate(GeyserSession session, ServerDisconnectPacket packet) {
    public void translate(GeyserSession session, ServerJoinGamePacket packet) {
    public void translate(GeyserSession session, ServerKeepAlivePacket packet) {
    public void translate(GeyserSession session, LoginDisconnectPacket packet) {
    public void translate(GeyserSession session, LoginPluginRequestPacket packet) {
    public void translate(GeyserSession session, LoginSuccessPacket packet) {
    public void translate(GeyserSession session, ServerPingPacket packet) {
    public void translate(GeyserSession session, ServerPluginMessagePacket packet) {
    public void translate(GeyserSession session, ServerRespawnPacket packet) {
    public void translate(GeyserSession session, ServerStatisticsPacket packet) {
    public void translate(GeyserSession session, ServerUnlockRecipesPacket packet) {
    public void translate(GeyserSession session, ServerEntityAnimationPacket packet) {
    public void translate(GeyserSession session, ServerEntityAttachPacket packet) {
    public void translate(GeyserSession session, ServerEntityCollectItemPacket packet) {
    public void translate(GeyserSession session, ServerEntityEffectPacket packet) {
    public void translate(GeyserSession session, ServerEntityEquipmentPacket packet) {
    public void translate(GeyserSession session, ServerEntityHeadLookPacket packet) {
    public void translate(GeyserSession session, ServerEntityMetadataPacket packet) {
    public void translate(GeyserSession session, ServerEntityPositionRotationPacket packet) {
    public void translate(GeyserSession session, ServerEntityPositionPacket packet) {
    public void translate(GeyserSession session, ServerEntityPropertiesPacket packet) {
    public void translate(GeyserSession session, ServerEntityRemoveEffectPacket packet) {
    public void translate(GeyserSession session, ServerEntityRotationPacket packet) {
    public void translate(GeyserSession session, ServerEntitySetPassengersPacket packet) {
    public void translate(GeyserSession session, ServerEntityStatusPacket packet) {
    public void translate(GeyserSession session, ServerEntityTeleportPacket packet) {
    public void translate(GeyserSession session, ServerEntityVelocityPacket packet) {
    public void translate(GeyserSession session, ServerRemoveEntitiesPacket packet) {
    public void translate(GeyserSession session, ServerPlayerAbilitiesPacket packet) {
    public void translate(GeyserSession session, ServerPlayerActionAckPacket packet) {
    public void translate(GeyserSession session, ServerPlayerChangeHeldItemPacket packet) {
    public void translate(GeyserSession session, ServerPlayerHealthPacket packet) {
    public void translate(GeyserSession session, ServerPlayerListEntryPacket packet) {
    public void translate(GeyserSession session, ServerPlayerPositionRotationPacket packet) {
    public void translate(GeyserSession session, ServerPlayerSetExperiencePacket packet) {
    public void translate(GeyserSession session, ServerSpawnEntityPacket packet) {
    public void translate(GeyserSession session, ServerSpawnExpOrbPacket packet) {
    public void translate(GeyserSession session, ServerSpawnLivingEntityPacket packet) {
    public void translate(GeyserSession session, ServerSpawnPaintingPacket packet) {
    public void translate(GeyserSession session, ServerSpawnPlayerPacket packet) {
    public void translate(GeyserSession session, ServerDisplayScoreboardPacket packet) {
    public void translate(GeyserSession session, ServerScoreboardObjectivePacket packet) {
    public void translate(GeyserSession session, ServerTeamPacket packet) {
    public void translate(GeyserSession session, ServerUpdateScorePacket packet) {
    public void translate(GeyserSession session, ServerClearTitlesPacket packet) {
    public void translate(GeyserSession session, ServerSetActionBarTextPacket packet) {
    public void translate(GeyserSession session, ServerSetSubtitleTextPacket packet) {
    public void translate(GeyserSession session, ServerSetTitleTextPacket packet) {
    public void translate(GeyserSession session, ServerSetTitlesAnimationPacket packet) {
    public void translate(GeyserSession session, ServerCloseWindowPacket packet) {
    public void translate(GeyserSession session, ServerOpenHorseWindowPacket packet) {
    public void translate(GeyserSession session, ServerOpenWindowPacket packet) {
    public void translate(GeyserSession session, ServerSetSlotPacket packet) {
    public void translate(GeyserSession session, ServerWindowItemsPacket packet) {
    public void translate(GeyserSession session, ServerWindowPropertyPacket packet) {
    public void translate(GeyserSession session, ServerBlockBreakAnimPacket packet) {
    public void translate(GeyserSession session, ServerBlockChangePacket packet) {
    public void translate(GeyserSession session, ServerBlockValuePacket packet) {
    public void translate(GeyserSession session, ServerChunkDataPacket packet) {
    public void translate(GeyserSession session, ServerExplosionPacket packet) {
    public void translate(GeyserSession session, ServerMapDataPacket packet) {
    public void translate(GeyserSession session, ServerMultiBlockChangePacket packet) {
    public void translate(GeyserSession session, ServerNotifyClientPacket packet) {
    public void translate(GeyserSession session, ServerPlayBuiltinSoundPacket packet) {
    public void translate(GeyserSession session, ServerPlayEffectPacket packet) {
    public void translate(GeyserSession session, ServerPlaySoundPacket packet) {
    public void translate(GeyserSession session, ServerSpawnParticlePacket packet) {
    public void translate(GeyserSession session, ServerSpawnPositionPacket packet) {
    public void translate(GeyserSession session, ServerStopSoundPacket packet) {
    public void translate(GeyserSession session, ServerTradeListPacket packet) {
    public void translate(GeyserSession session, ServerUnloadChunkPacket packet) {
    public void translate(GeyserSession session, ServerUpdateTileEntityPacket packet) {
    public void translate(GeyserSession session, ServerUpdateTimePacket packet) {
    public void translate(GeyserSession session, ServerUpdateViewDistancePacket packet) {
    public void translate(GeyserSession session, ServerUpdateViewPositionPacket packet) {
    public void translate(GeyserSession session, ServerVehicleMovePacket packet) {
import com.nimbusds.jose.shaded.json.JSONObject;
import com.nimbusds.jose.shaded.json.JSONValue;
import java.net.URI;
        if (data.size() != 3) {
            return false;
        }

            // x509 cert is expected in every claim
            URI x5u = jwt.getHeader().getX509CertURL();
            if (x5u == null) {
                return false;
            ECPublicKey expectedKey = EncryptionUtils.generateKey(jwt.getHeader().getX509CertURL().toString());
            // First key is self-signed
            if (lastKey == null) {
                lastKey = expectedKey;
            } else if (!lastKey.equals(expectedKey)) {
                return false;
            if (!EncryptionUtils.verifyJwt(jwt, lastKey)) {
                return false;
            }

            if (lastKey.equals(EncryptionUtils.getMojangPublicKey())) {
                validChain = true;
            }

            Object payload = JSONValue.parse(jwt.getPayload().toString());
            Preconditions.checkArgument(payload instanceof JSONObject, "Payload is not an object");

            Object identityPublicKey = ((JSONObject) payload).get("identityPublicKey");
            Preconditions.checkArgument(identityPublicKey instanceof String, "identityPublicKey node is missing in chain");
            lastKey = EncryptionUtils.generateKey((String) identityPublicKey);

    public static void encryptPlayerConnection(GeyserSession session, LoginPacket loginPacket) {
        encryptConnectionWithCert(session, loginPacket.getSkinData().toString(), certChainData);
    private static void encryptConnectionWithCert(GeyserSession session, String clientData, JsonNode certChainData) {
            GeyserConnector connector = session.getConnector();

    <version>1.4.2-SNAPSHOT</version>