【マイクラ】BungeeCordを個人的にあまりお勧めしない理由

未分類

こんにちは、突然ですがあなたのサーバーで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への変更も個人的にお勧めとしておきます。

最後に

いかがでしたでしょうか?

ほとんどの基本的なサーバーは、この攻撃の被害にあうことはないでしょう。
ただスペックに自信のないサーバーや、対策皆無のサーバーは簡単にこの脆弱性の被害にあってしまうため、対策をするなり、スペックを改善するなりした方が良いでしょう。

では!

コメント

タイトルとURLをコピーしました