question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Security Issue: Able to bypass Private & Friends Only lobby settings by directly joining the lobbyId

See original GitHub issue

Describe the bug If a lobby is set to private or friends only, anyone can still join it if they have the lobbyId. And since lobbyId really only has 5-6 of its 18 characters changing based on when it was made, it is fairly trivial to guess lobbyIds.

To Reproduce

  1. Create a lobby with “SteamMatchmaking.CreateLobbyAsync(10);”
  2. Set the lobby to private “lobby.SetPrivate();” or friends only “lobby.SetFriendsOnly();”
  3. Get the lobbyID “lobby.Id.ToString();”
  4. On another user that has not been invited or added as a friend by the host, call “SteamMatchmaking.JoinLobbyAsync(lobbyId);” or preferably create a local lobby var “new lobby(lobbyId);” and call “lobby.Join()” on it.

Calling Code

Outlined above.

Expected behavior The join game request on the 2nd user should fail because they don’t have permission.

Desktop (please complete the following information):

  • OS: Windows 11
  • Unity: 2020.3.30f1

Additional context I’m fairly certain this an issue with with base C++ Steamworks SDK but I wanted to post it here for awareness. This issue is compounded by the lack of ability to securely kick a user from a lobby.

Theoretically, a malicious user could modify their client to refuse local calls to kick itself from a lobby and exploit the above flaw to join any lobby they desired. So there is nothing a host could do to get rid of them, short of closing their own lobby.

Please let me know if I missed a detail anywhere that solves this issue. I am trying to find a solution to this problem for my game.

Issue Analytics

  • State:open
  • Created 2 years ago
  • Reactions:1
  • Comments:6 (1 by maintainers)

github_iconTop GitHub Comments

1reaction
FreeMotion45commented, Jul 7, 2022

I can’t believe Valve don’t see this as an issue…

1reaction
maxha651commented, Mar 21, 2022

If you haven’t already, reporting it here might be the quickest way to get a response if Valve agrees that it is a security issue (I think it is).

Read more comments on GitHub >

github_iconTop Results From Across the Web

Problem joining a private lobby through LobbyCode ...
In my project, I was able to successfully create and join lobbies with 'QuickJoinLobbyAsync'. But then I wanted to create a private lobby...
Read more >
IT Admins - Control who can bypass the meeting lobby in ...
This setting controls whether anonymous participants and dial-in users can join the meeting without a verified participant in attendance. This ...
Read more >
PSA: If you don't want people joining your lobby, please ...
There's a minimum level requirement option, and a private/friends-only setting. Please use them if you don't want certain people joining.
Read more >
Monster Hunter Rise: How to Join and Host a Multiplayer ...
Monster Hunter Rise's multiplayer options are buried in a couple menus ... Here's how to host or join an online lobby and find...
Read more >
Onward - Dev Blog - The ultimate VR Mil-Sim tactical shooter
We will be introducing Server IDs to lobbies. You will easily be able to find your friends' games using the "Server ID" option...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found