Skip to content

[Bug] State bag replication allows arbitrary model spawning via progressProps (client→all replication exploit #55

@the-big-gs

Description

@the-big-gs

Describe the bug
When LocalPlayer.state:set('lib:progressProps', bigProps, true) is used, the state bag replication behavior causes every nearby client to receive and execute the same data leading to mass model spawning on all clients.

because ox_lib progress props (lib:progressProps) rely on normal state bag synchronization, a malicious client can push a large payload of fake props, causing other players’ clients to create hundreds of entities

To Reproduce
Steps to reproduce the behavior:

  1. Create a script that sets a replicated state with a large props table, e.g.:
local bigProps = {}
for i = 1, 600 do
    table.insert(bigProps, {
        model = "p_spinning_anus_s",
        pos = vector3(0.0, 0.0, 0.0),
        rot = vector3(0.0, 0.0, 0.0),
        bone = 0
    })
end
LocalPlayer.state:set('lib:progressProps', bigProps, true)
  1. Join the server with at least one other player (non-strict mode)..
  2. Trigger the script.
  3. Observe that all players nearby start spawning the same models client-side.

Expected behavior
Only the local player who triggers the progress bar should spawn props or run the progress animation.
Other clients should never receive or replicate that state automatically.

Impact
A malicious player can spam hundreds of spawned props for all clients
Causes massive FPS drops and potential client crashes
Works on any server that doesn’t use strict mode

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions