Tool Crash Exploit [Fixed]

UPDATE
Apologies, I thought it still worked but it is in fact patched, so at least the community can read this to understand how it worked and learn from it in the future.

A few days ago, a new exploit has been made to crash player’s clients using Tools. If your game is being affected, this script will prevent any abuse from happening before its too late.

Explanation

The way the exploit works is by setting the tool grip to CFrame.new(0/0, 0/0, 0/0) which actually changes to (0, -20000000 (ish), 0) and when it replicates over the network, roblox servers send it as (0, -1000000, 0). Tool Grip replication is a common exploit due to old pre-FilteringEnabled practices and may eventually be patched in the future.
Its not really known why this crashes, but the fact nobody sets their tool grips to -1000000 normally is a easy way to make a universal patch simply by checking the Y axis of any RightGrip welds (RightGrip is made by ROBLOX whenever a tool is equipped).

Script

This would be an example of what you could’ve done to fix it.

local Players = game:GetService("Players")
local function NewToolCheck(inst)
	local Player = inst.Parent.Parent.Name
	if inst.Name == "RightGrip" and Players:FindFirstChild(Player) ~= nil then
		local GripHeight = inst.C1.p.Y
		if GripHeight < -1000 then
			Players:FindFirstChild(Player):Kick("Tool Crashing")
		end
	end
end
game.Workspace.DescendantAdded:Connect(NewToolCheck)

Enjoy! :slight_smile:

9 Likes

Seems like a relatively smart way of handling this exploit, well informed article. This will alert community members alike to the potential dangers :+1:

2 Likes