Script Injection Vulnerability

The command bar (which uses LocalUserSecurity) has more privileges than a plugin (which uses PluginSecurity), and plugins have access to the CoreGui.

You might be thinking of some API members that are restricted to RobloxScriptSecurity, but that constraint only applies to certain API members, nothing crucial that developers need presently.

All of these constraints are available to see in my version of Roblox’s API Dump. https://github.com/CloneTrooper1019/Roblox-Client-Watch/blob/roblox/API-Dump.txt

6 Likes

I have totally stopped installing plugins unless it’s made by me or directly linked by someone trustworthy in the devforums. I don’t trust anything in the actual library right now, but luckily I haven’t needed anything (yet…)

2 Likes

Oh, thanks for the heads up. I’ve never thought of this.

1 Like

You could also look at the plugins source. I remember there was a way to be able to view a plugins source. Where Roblox Studio is installed there should be some .rbxm files (which are the plugins) somewhere, then you can load/drag & drop them into studio and see their source. I will check if this still works when I get home (I’m on phone). Also, this could be a plugin security issue. Roblox might of parched this a while ago.

1 Like

I fixed this by using the follow code in the command bar:

game:GetService(‘InsertService’):ClearAllChildren()

It removes a hidden code called “?” which is encrypted module script. An exploiter found it on my game and so far no problems.

1 Like

If the plugin is publicly available, you should be able to download them as .rbxm files using https://www.roblox.com/asset/?id=[id here]

Just remember to name it as an rbxm file because it saves as no type

1 Like

Why only search Backpack? I thought the malicious scripts could also hide in other services like the CSG service, InsertService, etc.

2 Likes

Some of the scripts that i’ve found weren’t inside a backpack, but most of them were for some reason
image

2 Likes

2 posts were merged into an existing topic: WIP Bugs / Features

Why does OP sound targeted towards the common form of injection that malicious plugins are using as opposed to place vulnerabilities in general? I don’t think the issue is Backpacks, it should pertain to how to locate vulnerabilities in general. Malicious developers are just going to change the method of usage (e.g. Folders, Models, raw script objects, etc).

The change specified is ideal, albeit my opinions on the subject matter. Backpacks and PlayerGuis shouldn’t even be insertable or creatable - what use case would someone have to do so? Folders superseded using these objects as containers for storage.

1 Like

I think the post is referring to the Backpack’s functionality outside of a player or the workspace. Normally scripts won’t run inside of any services so I’d assume the backpack bypasses this.

5 Likes

Why, though? Change them to Folder instances.

6 Likes

Its not models though, its plugins.
Models can only affect your place at run-time, when you server starts.

Plugins run in studio whether you know it or not - that’s the issue.

1 Like

11 posts were split to a new topic: Cannot find backdoor in my game

Thanks for looking into this! I really Enjoy Using Roblox and learning to script is always fun! Thanks for your Effort Roblox!

3 Likes

I think it would be an interesting idea where if a plugin wants to add a script to your game, it will give a popup (from roblox), stating where it wants to save to, allow you to view the code, and confirm/deny if you want it added. If you notice shady obfuscation or anything along those lines, you know immediatly to deny it. Just food for thought. I think it would help prevent many future instances that will try to add malicious code to hidden parts of your game.

7 Likes

I’ve got an Idea for how to prevent Users from seeing code like a modulescript, the dev can see the code it just hides it from the player by calling fuctions through remotefunction and remoteevent. Gotta develop it but I have school so after school I’ll create it! :wink:

1 Like

Please do not link/discuss specific malicious plugins or rule violations.

To provide some more details about this vulnerability such as how it happens and what @Christbru01’s detection plugin is doing (it feels like the best way to combat this sort of injection is to be transparent):

  • Backpacks currently run scripts that are descendants of them. This is so that scripts can run while they’re parented to Players

  • This vulnerability is caused because Plugins can create Backpacks and Scripts and place them inside of Services that can’t be seen normally in the Roblox explorer.

  • Some services, such as the CSGDictionaryService, cannot be accessed by scripts, Plugins, or the Command Bar. Due to an oddity with how Roblox works, there are means to place things within these services but not get them out

  • Due to this, and how Backpacks allow scripts to run, a vulnerability is created by putting a script in these services.

  • Christbru01’s plugin uses some some more obscure methods to detect and remove these Instances. These include GetDescendant, pcall, and Insert.

Hopefully this better educates people on what’s going on here. I can absolutely vouch for Christbru01’s plugin. You can also do the trick Seranok suggested up at the top of the thread, as that’s a guaranteed method.

6 Likes

Specific to the injection done by the fake “Terrain Save and Load” plugin, scripts are also injected randomly in the Workspace, so make sure to check more than just scripts in Backpack objects.

3 Likes