From 9d1f6fc0840ee1c4a3c79db6b9a86a89428b2644 Mon Sep 17 00:00:00 2001 From: D1GQ Date: Sun, 6 Sep 2026 23:30:09 -0500 Subject: [PATCH] Add protection to vent kick exploit --- .../NetObjectHandlers/UpdateSystemHandler.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Modules/AntiCheat/RPCHandlers/NetObjectHandlers/UpdateSystemHandler.cs b/src/Modules/AntiCheat/RPCHandlers/NetObjectHandlers/UpdateSystemHandler.cs index b66d2ce..7052b28 100644 --- a/src/Modules/AntiCheat/RPCHandlers/NetObjectHandlers/UpdateSystemHandler.cs +++ b/src/Modules/AntiCheat/RPCHandlers/NetObjectHandlers/UpdateSystemHandler.cs @@ -20,8 +20,8 @@ internal sealed class UpdateSystemHandler : RPCHandler { systemHandlers = new Dictionary> { - { (uint)SystemTypes.Sabotage, (sender, system, reader, count) => HandleSabotageSystem(sender, system.Cast(), reader) }, - { (uint)SystemTypes.Ventilation, (sender, system, reader, count) => HandleVentilationSystem(sender, system.Cast(), count) }, + { (uint)SystemTypes.Sabotage, (sender, system, reader, count) => HandleSabotageSystem(sender, system.Cast()) }, + { (uint)SystemTypes.Ventilation, (sender, system, reader, count) => HandleVentilationSystem(sender, system.Cast(), reader) }, { (uint)SystemTypes.Electrical, (sender, system, reader, count) => HandleSwitchSystem(sender, system.Cast(), count) }, { (uint)SystemTypes.Comms, (sender, system, reader, count) => HandleCommsSystem(sender, system, count) }, { (uint)SystemTypes.MushroomMixupSabotage, (sender, system, reader, count) => HandleMushroomMixupSabotageSystem(sender, system.Cast(), count) }, @@ -68,10 +68,8 @@ internal sealed class UpdateSystemHandler : RPCHandler return true; } - private static bool HandleSabotageSystem(PlayerControl? sender, SabotageSystemType sabotageSystem, MessageReader reader) + private static bool HandleSabotageSystem(PlayerControl? sender, SabotageSystemType sabotageSystem) { - byte count = reader.ReadByte(); - if (!sender.IsImpostorTeam()) { return false; @@ -85,8 +83,14 @@ internal sealed class UpdateSystemHandler : RPCHandler return true; } - private static bool HandleVentilationSystem(PlayerControl? sender, VentilationSystem ventilationSystem, byte count) + private static bool HandleVentilationSystem(PlayerControl? sender, VentilationSystem ventilationSystem, MessageReader reader) { + _ = reader.ReadUInt16(); + var operation = (VentilationSystem.Operation)reader.ReadByte(); + if (operation == VentilationSystem.Operation.BootImpostors) + { + return false; + } return true; }