こんにちは、突然ですがあなたのサーバーでBungeeCord使っていますか?
VelocityやFlameCord、XCord等の事は言っていません。
本当に「BungeeCord」サーバー(またはWaterfall)を使っているかを、聞いています。
もしあなたがBungeeCordを使っているのであれば、それを直ちにやめるべきでしょう。
(別にプロキシサーバーを使うなと言っているわけではない。)
その理由は、BungeeCordにある意味の分からない脆弱性にあります。
BungeeCordとは?
そもそもの話をしておきましょう。
BungeeCordとは、複数のサーバーをつなげることが出来る、プロキシです。
プロキシは、中継サーバー、つまり途中で経由するサーバーの事を指します。
このBungeeCordを使うと、一度切断して入りなおす必要がなく、簡単にサーバー間を移動できます。
例えばHypixelのBedWarsサーバーとSkyWarsサーバーが簡単に移動できるあれ、あれもBungeeCordで実現できるわけですね。
他の大手サーバーでよくある、クリックしたらサーバーが移動できるあれ。
あれもBungeeCordで実現できます。
BungeeCordの脆弱性とは?
BungeeCordの脆弱性には、有名なものが一つあると思いますが、今回はそれではありません。
この脆弱性は、BungeeCordのコマンド「/bungee」を高速でスパムするというものです。
この攻撃は一見そんなに効果がなさそうですが、CPUのコアが少ないPCでホストしている人にとって、この攻撃はとんでもなく脅威になるんです。
そもそも、この攻撃によって実際に被害を受ける人は、非常に限定的でしょう。
そのため基本的に気にしなくても良いはずですが、もしあなたがPCのスペックに自信がない人であったり、とにかく脆弱性はつぶしたい人なら見ておくべきでしょう。
実際に攻撃されると、BungeeCordのCPU使用率を非常に高め、だいたい400%(つまり4コア)、場合によっては容易にそれ以上の負荷を与えることが出来ます。
場合によっては、とはどういうことか。
つまり、古いBungeeCordでさらに脆弱なサーバーだった場合です。
古いBungeeCordは、容易に800%(つまり8コア)やそれ以上の負荷を与えることが出来ます。
これにより、サーバーにラグが発生したり、完全に停止してしまいます。
そしてBungeeCord自体がダウンするため、バックエンドサーバーに関係なく、全プレイヤーが切断されて、再起動されるまで再接続は一切できなくなります。
(BungeeCordには自動再起動がデフォルトでは無いので、手動で対応されるまで待たなければならない。)
そして、この脆弱性は、少しコーディングできる人であれは、誰でも簡単に再現できます。
(おそらくパケットをスパムすれば良いだけなので、非常に容易だと思われる。)
BungeeCordのソースコードを見ても、コマンドに負荷がかかるような処理は何も書かれておらず、サーバーバージョンを取得する処理のみがあります。
何故それがサーバーの負荷上昇につながるのかはまったくもって不明です。
対策方法
1. スペックアップ
そもそもこれにより、致命的なほど大量のコア数を消費することは出来ません。
例えば私のサーバーは24コアありますが、テストとして自分で攻撃したとき、4コア程しか消費されず終わり、それ以上は何もありませんでした。
威力を上げると、数十秒間の間最大10コア程消費させることが出来ましたが、これは一時的なものなので、サーバーダウンにはならないと思われます。
そのため、ほとんどの場合4コア以上あれば簡単にサーバークラッシュを回避できるでしょう。
ラグを回避したいのであれば、出来るだけ多くのCPUコアを用意すれば、簡単に対策できます。
(10コア以上あれば、ほぼ100%攻撃をどうにか出来るでしょう。)
対策というより…ただの脳筋戦法です。
2. FlameCordを使う
FlameCordとは、BungeeCordのフォークです。
処理の改善や脆弱性対策が供えられたシステムで、有料ですが性能は確かです。
例えば、らーす鯖ではFlameCordが使われていて、実際に攻撃しようとすると蹴られます。
つまりこの脆弱性が対策されていて、攻撃しようとしたプレイヤーはすぐ蹴られるということです。
とはいえ、蹴られず実際に攻撃が実行されると、BungeeCordと同じぐらいのコアを消費します。
3. Velocityを使う
Velocityとは、1から作られた新たなプロキシサーバーです。
Velocityにも同様に「/velocity」コマンドがあります。
ですが、こちらはスパムしてもCPU使用率を上げることはありません。
(古いVelocityであればCPU使用率を上げるみたいです…必ず最新版を使いましょう!)
また、Velocityサーバーには基本的にコマンド制限があります。
つまり、あまりに威力が大きい攻撃を行うと蹴られます。
その点でもVelocityは非常に安全で、攻撃を簡単に阻止できます。
4. ViaVersionを使う
プロキシ(VelocityやBungeeCord)にViaVersionを入れて、レート制限をかけましょう。
これにより、攻撃を行おうとすると、レート制限によりプレイヤーが蹴られます。
これはBungeeCordのままでもすぐ対策出来る、容易で簡単な方法です!
FlameCordにはViaVersionを導入できません。
そのため、FlameCordを使っているならそれだけでどうにかしましょう。
または、Velocityへの変更も個人的にお勧めとしておきます。
最後に
いかがでしたでしょうか?
ほとんどの基本的なサーバーは、この攻撃の被害にあうことはないでしょう。
ただスペックに自信のないサーバーや、対策皆無のサーバーは簡単にこの脆弱性の被害にあってしまうため、対策をするなり、スペックを改善するなりした方が良いでしょう。
では!
コメント