<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[The continuation of FAForever]]></title><description><![CDATA[<h1>The damage of malicious actors</h1>
<p dir="auto">tldr: Unfortunately, this is a dire message. The continuation of FAForever should not be taken for granted. We need help. We need new contributors with the intrinsic motivation to support FAForever’s future. All type of contributions are welcome, but in particular we are looking for contributors with a solid software development background to help address the latest attack vectors used by malicious actors.</p>
<p dir="auto">The past decade the internet has changed significantly. In my personal view the internet used to be more innocent. As a small open source service provider such as FAForever it was unthinkable that we would be the target of malicious actors. And because of that the infrastructure of FAForever was never designed to be resilient against malicious actors. Of course, there are basic authentication and authorization checks. But in general, our implementation assumed the user consuming the service acted in good faith.</p>
<p dir="auto">Starting roughly two years ago, FAForever has been under constant attack by one or more malicious actors. This has been, and still is, a difficult struggle. The malicious actors started off with relative innocent DDoS attacks that abused the initial naïve setup of our service. Over the past two years it has grown into a sophisticated, consistent multifaceted cat-and-mouse game between the malicious actors and the server administrators of FAForever. I am talking about an organized effort to take down FAForever. Some of these malicious actors put in the effort to make a recruitment video on YouTube and even managing a Discord server with the sole purpose of learning how to attack the infrastructure of FAForever. As if FAForever is some live target practice to learn the ropes of the trade.</p>
<p dir="auto">Over the past two years the type of attacks has adapted. Additional defenses against the actions of these malicious actors were put into place. We introduced the use of OAuth to access our previously public API to prevent malicious actors of constantly initiating long, straining tasks on our systems. Cloudflare was implemented to prevent DDoS attacks from flooding legitimate (HTTP) traffic to our systems. Network relays are provided by a third party, for which we pay, as our self-hosted solution could not be adequately defended. A lot more has happened as we tried to constantly adapt to catch the latest attack vector of the malicious actors.</p>
<p dir="auto">What initially started with abusing our services directly has eventually evolved into targeting individual players. As our defenses for the core services of FAForever became more resilient, the malicious actors appear to be shifting their focus to target the one weakness that is inherent to <a href="https://help.steampowered.com/en/faqs/view/1433-AD20-F11D-B71E" rel="nofollow ugc">peer-to-peer networking</a>. That is the underlying network technology for Supreme Commander. Through that the malicious actors can gather the IPs and target individual players with direct DDoS attacks. This started with the targeting of specific streamers as they were playing roughly a year ago. Apparently, it recently expanded to a more systematic approach to target individual players just to occasionally DDoS them at the right moment to break the game that they are playing.</p>
<p dir="auto">This is just another step in the cat-and-mouse game that has been happening the past two years. Fortunately, there is a technical solution to this. We can force all players to connect to each other via a relay. This would hide their personal IP. We attempted this last week with our current infrastructure, but it was not successful. There is a lot of work being done on a <a href="https://github.com/FAForever/faf-pioneer" rel="nofollow ugc">new solution</a>. But the technical complexity of it is staggering. We've come a long way and it appears that games with up to two players are stable. However, games with more then two players are unstable. Reasoning about and investigating of the cause requires a lot of technical knowledge. And we need more of that expertise in order to help stabilize the new solution in order to protect our community.</p>
<p dir="auto">Our new implementation uses the <a href="https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment" rel="nofollow ugc">Interactive Connectivity Establishment (ICE)</a> protocol as the underlying technology. We now use a modern, well maintained <a href="https://github.com/pion/webrtc" rel="nofollow ugc">library</a> that implements the protocol. The details that prevent us from deploying it are in the interaction between the game, the <a href="https://github.com/FAForever/faf-pioneer" rel="nofollow ugc">ICE adapter</a>, <a href="https://github.com/FAForever/faf-icebreaker" rel="nofollow ugc">the ICE breaker</a> and the relays.</p>
<h2>What FAForever needs for the future</h2>
<p dir="auto">We need new contributors who combine technical knowledge with the intrinsic motivation to take initiative and help stabilize FAForever. This means taking the lead in finding and identifying issues, investigating them, and then either reporting observations or submitting pull requests with fixes.</p>
<p dir="auto">If you want to contribute then please reach out to <a class="plugin-mentions-user plugin-mentions-a" href="/user/giebmasse" aria-label="Profile: Giebmasse">@<bdi>Giebmasse</bdi></a> to get access to <a href="https://faforever.zulipchat.com/" rel="nofollow ugc">Zulip</a>. You can reach out to him via the forums or via our official Discord server. Once you have access to Zulip you can join dedicated channels to report your observations or ask for help with your investigations and/or pull requests.</p>
<h3>What FAForever needs in the short term</h3>
<p dir="auto">In the short term we need people that are already familiar with the technical domain. You should be familiar with investigating (network related) problems. You have the time, the tooling and the understanding to take the initiative and start running tests to make observations. Compare what you see in your tooling, what you see in logs with what you see in the source code to help identify the cause of the instability.</p>
<p dir="auto">This work is focused primarily on the following repositories:</p>
<ul>
<li><a href="https://github.com/FAForever/faf-pioneer" rel="nofollow ugc">WebRTC Network adapter</a></li>
<li><a href="https://github.com/FAForever/faf-icebreaker" rel="nofollow ugc">https://github.com/FAForever/faf-icebreaker</a></li>
</ul>
<p dir="auto">Related channels on Zulip:</p>
<ul>
<li><a href="https://faforever.zulipchat.com/#narrow/channel/203478-general" rel="nofollow ugc">general</a></li>
<li><a href="https://faforever.zulipchat.com/#narrow/channel/203524-ice-development" rel="nofollow ugc">ice-development</a></li>
</ul>
<h3>What FAForever needs in the medium-to-long term</h3>
<p dir="auto">We need new application developers and server administrators to help stabilize and improve our services. As mentioned before, the past two years have been a constant cat-and-mouse game. Whenever a vulnerability is exploited, the service becomes unavailable until we implement a fix. FAForever has no full-time engineers; contributor time is limited. This creates a high-pressure environment where vulnerabilities must be patched immediately.</p>
<p dir="auto">Unfortunately, a fix made in such conditions can sometimes introduce new stability issues in parts of the software that are not critical but relied (in good faith) on the pre-patched behavior. And because the next exploit of a vulnerability usually appears soon after, there is little to no time left for proper refactoring. This is where you can make the difference.</p>
<p dir="auto">This may involve but is not limited to one of the following repositories:</p>
<ul>
<li><a href="https://github.com/FAForever" rel="nofollow ugc">The official client</a></li>
<li><a href="https://github.com/FAForever/faf-java-api" rel="nofollow ugc">Our API</a></li>
<li><a href="https://github.com/FAForever/faf-moderator-client" rel="nofollow ugc">Moderator client</a></li>
<li><a href="https://github.com/FAForever/faf-java-commons" rel="nofollow ugc">Shared library of functionality</a></li>
<li><a href="https://github.com/FAForever/db" rel="nofollow ugc">Database</a></li>
<li><a href="https://github.com/FAForever/faf-user-service" rel="nofollow ugc">User service</a></li>
<li><a href="https://github.com/FAForever/server" rel="nofollow ugc">Lobby service</a> (interacts with the game)</li>
<li><a href="https://discord.com/channels/197033481883222026/1196741258689921095/1196741258689921095" rel="nofollow ugc">League service</a></li>
</ul>
<p dir="auto">Infrastructure related repositories:</p>
<ul>
<li><a href="https://github.com/FAForever/gitops-stack" rel="nofollow ugc">Kubernetes stack</a></li>
<li><a href="https://github.com/FAForever/faf-architecture" rel="nofollow ugc">Architectural documentation</a></li>
</ul>
<p dir="auto">For more information, see the following resources on Discord in the <a href="https://discord.com/channels/197033481883222026/1168179121843613760" rel="nofollow ugc">Looking for Volunteers</a>:</p>
<ul>
<li><a href="https://discord.com/channels/197033481883222026/1196741258689921095" rel="nofollow ugc">Application Developer</a></li>
<li><a href="https://discord.com/channels/197033481883222026/1196740949213196359" rel="nofollow ugc">System administrator</a></li>
</ul>
<p dir="auto">Also see the <a href="https://wiki.faforever.com/Infrastructure/DevOps" rel="nofollow ugc">statutes of the DevOps team</a> to learn more about all the available roles and the organization of the team.</p>
<p dir="auto">Related channels on Zulip:</p>
<ul>
<li><a href="https://faforever.zulipchat.com/#narrow/channel/203478-general" rel="nofollow ugc">general</a></li>
<li><a href="https://faforever.zulipchat.com/#narrow/channel/203529-java-server" rel="nofollow ugc">java-server</a></li>
<li><a href="https://faforever.zulipchat.com/#narrow/channel/203508-client" rel="nofollow ugc">client</a></li>
<li><a href="https://faforever.zulipchat.com/#narrow/channel/203528-java-api" rel="nofollow ugc">java-api</a></li>
</ul>
<h3>What else you can do to help FAForever</h3>
<p dir="auto">If you're not a developer, you can still contribute to FAForever in several important ways.</p>
<h4>Do not vent your frustration towards contributors</h4>
<p dir="auto">I understand that the situation these past years can have been frustrating. A perceived stream of never-ending issues that break your flow when playing Supreme Commander via FAForever. Whether it is unable to login, unable to download the latest version of the game or just unable to keep a connection going. It has been frustrating for everyone involved. And I understand that you may feel the need to vent your anger. This occasionally happens by users on our platforms.</p>
<p dir="auto">But please, do not direct this frustration towards our service or our contributors. Whether this is a server administrator, a moderator or just someone who's trying to help people with technical issues. They are not responsible for the behavior of the malicious actors that are attacking our infrastructure day in day out. These attacks made FAForever feel unstable all the time. Venting your anger towards contributors does not fix the actions of the malicious actors. All it will do is drain the intrinsic motivation of contributors. The same contributors that are the only thing we have at this moment that keeps FAForever going.</p>
<h4>Do not share credentials with other users and/or services</h4>
<p dir="auto">Recently, we've seen a surge in accounts that are used for malicious activity such as crashing and/or invalidating in-game lobbies. This includes accounts with a long history of normal behavior. We suspect these accounts may have been hijacked by malicious actors. Help the community to protect your account by using a unique password, especially between FAForever and a fork of the project.</p>
<p dir="auto">For more information, see also this announcement:</p>
<ul>
<li><a href="https://forum.faforever.com/topic/9485/suspicion-of-hijacked-accounts">https://forum.faforever.com/topic/9485/suspicion-of-hijacked-accounts</a></li>
</ul>
<h4>Help contribute in any of the other teams</h4>
<p dir="auto">A lot of teams are looking for contributors and there are a lot of area's where initiative from someone with the right expertise can create a large, meaningful impact for the community. This is not limited to just developers. If you are for example proficient as a graphics designer or a video editor then there's a lot you can do in FAForever to both help shape our image to the outside world. See also the following links for more information:</p>
<ul>
<li><a href="https://forum.faforever.com/topic/8514/join-the-faf-team-exciting-opportunities-for-contributors">https://forum.faforever.com/topic/8514/join-the-faf-team-exciting-opportunities-for-contributors</a></li>
<li><a href="https://discord.com/channels/197033481883222026/1168179121843613760" rel="nofollow ugc">Looking for Volunteers thread in Discord</a></li>
</ul>
<p dir="auto">You can make a post and/or reach out to people with a team lead role on Discord to see if you can contribute towards the goals and purpose of a team that sparks your interest.</p>
<h4>Help spread awareness</h4>
<p dir="auto">You can also support us simply by spreading awareness. Share this announcement with people you know who might be able to help. If you’re a streamer, share it with your audience. The more reach we have, the better our chances of finding new contributors who are motivated to help preserve FAForever for the future.</p>
<hr />
<p dir="auto">Only together can we ensure the continuity of FAForever. If you care as much about its future as we do, please contribute or help us reach someone who can. Now is the time to make a difference!</p>
<p dir="auto">Jip<br />
President of the FAForever association</p>
]]></description><link>https://forum.faforever.com/topic/9493/the-continuation-of-faforever</link><generator>RSS for Node</generator><lastBuildDate>Wed, 03 Jun 2026 23:52:05 GMT</lastBuildDate><atom:link href="https://forum.faforever.com/topic/9493.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Sep 2025 15:45:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to The continuation of FAForever on Fri, 12 Sep 2025 19:25:17 GMT]]></title><description><![CDATA[<p dir="auto">After some healthy discussion on Discord, a small FAQ that I'll update over time. Feel free to ask me questions either via the forums or via Discord. I unfortunately do not have all the answers though.</p>
<blockquote>
<p dir="auto">Did it really start two years ago? And consistently over time?</p>
</blockquote>
<p dir="auto">Yes, see for example these two announcements from 2023:</p>
<ul>
<li><a href="https://forum.faforever.com/topic/6680/ddos-update">https://forum.faforever.com/topic/6680/ddos-update</a></li>
<li><a href="https://forum.faforever.com/topic/6182/addressing-severe-connectivity-issues-what-has-happened">https://forum.faforever.com/topic/6182/addressing-severe-connectivity-issues-what-has-happened</a></li>
</ul>
<p dir="auto">And in general the <a href="https://discord.com/channels/197033481883222026/1073647306613719151" rel="nofollow ugc">server status page on Discord</a>. Not all events are related to the malicious actors. Sometimes we just wrote an innocent bug. Or scheduled maintenance. But especially before we had Cloudflare, if a service went down ten times a day then that was not because we thought it would be nice to turn it off and on again <img src="https://forum.faforever.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=30176cb40ac" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> .</p>
<p dir="auto">Initially our infrastructure was the primary target. Especially around tournament days. Individuals streamers have been a consistent target for more than a year. See for example the frustration shared here:</p>
<ul>
<li><a href="https://forum.faforever.com/topic/9440/ddos-and-now-something-new-again/28">https://forum.faforever.com/topic/9440/ddos-and-now-something-new-again/28</a></li>
</ul>
<blockquote>
<p dir="auto">Do we know anything about motives?</p>
</blockquote>
<p dir="auto">Yes and no. I mean the fact that it's been on going consistently for two years speaks chapters about their intentions.</p>
<p dir="auto">There have been occasionally some sort of talk between representatives of FAForever and someone who claims to be (one of) the attackers. But there's no way for us to verify this. Therefore I'm uncomfortable with sharing details of these talks.</p>
<blockquote>
<p dir="auto">Do you have a link to the mentioned YouTube video and/or the Discord server?</p>
</blockquote>
<p dir="auto">Unfortunately I reported the <a href="https://www.youtube.com/watch?v=eIJU_4iBrWA" rel="nofollow ugc">YouTube video</a> and it got removed accordingly. I did not keep a recording of it. I also am not part of the Discord server that I mentioned. It was shown in the video. I've seen temporary Discord invites. Perhaps a screenshot. But it's impossible for me to verify a screenshot.</p>
<p dir="auto">I suppose it is nice to know that the report button on YouTube is, occasionally, somewhat functional.</p>
<p dir="auto">And yes, I could've done some <a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ" rel="nofollow ugc">rickrolling</a> there but I did not. Even though the sentiment of the song suits the announcement in some fashion.</p>
<blockquote>
<p dir="auto">Would more donations help?</p>
</blockquote>
<p dir="auto">All donations are appreciated. But what we need can not be fixed with more funding. <a class="plugin-mentions-user plugin-mentions-a" href="/user/brutus5000" aria-label="Profile: Brutus5000">@<bdi>Brutus5000</bdi></a> wrote a  blog post about it in 2021:</p>
<ul>
<li><a href="https://forum.faforever.com/topic/2413/the-complexity-of-the-faf-infrastructure-and-why-throwing-money-at-it-doesn-t-fix-shit/1">https://forum.faforever.com/topic/2413/the-complexity-of-the-faf-infrastructure-and-why-throwing-money-at-it-doesn-t-fix-shit/1</a></li>
</ul>
<p dir="auto">What we need are more contributors that are intrinsically motivated to help FAForever thrive. And specifically, experienced software developers that want to stick around for a while to help maintain the software and infrastructure of FAForever.</p>
]]></description><link>https://forum.faforever.com/post/69290</link><guid isPermaLink="true">https://forum.faforever.com/post/69290</guid><dc:creator><![CDATA[Jip]]></dc:creator><pubDate>Fri, 12 Sep 2025 19:25:17 GMT</pubDate></item></channel></rss>