Minecraftサーバーでは有名なDynmapですが、アクセス権に関するセキュリティホールがあり、当サーバーでも該当していたので報告します。

DynmapでMySQLを使用している場合、「web/standalone/MySQL_config.php」にSQLサーバーにアクセスするために必要なデータが記述されます。

これには、MySQLサーバーの「ホスト、ポート、ユーザーID、パスワードなど」が含まれており、すべて平文で読み取ることが可能です。

dynmap_mysql_config

 

公式ドキュメントには、導入に関してこのようなファイルが生成されるという記述がなく、挙句の果てには、「standalone」フォルダにフルアクセス権限を与えるトラブルシューティングが載っています。。。

 

このセキュリティホールは、非常に危険で、該当ポートが開いている場合、悪意のあるユーザーがMySQLサーバーにアクセスし、DBを弄ることが可能になってしまいます。また、ポートが閉まっている場合でも、パスワードを使いまわしている場合は、他のサービスが攻撃される可能性があります。

DynmapでMySQLを使用している管理者様は必ず確認してください。私がminecraft.jpにあるサーバーリストで確認したところ、いくつものサーバーがMySQL_config.phpを読み取ることが可能な状態でした。

修正方法

重大なセキュリティホールですが、これはアクセス権を適切に設定することで簡単に修正することが可能です。

Linux系の場合は「standalone」フォルダのアクセス権を644に。

Windows系の場合は「standalone」フォルダのアクセス権を全て拒否(項目が多く、必要な権限について詳しくは特定していません。)することでアクセスすることができなくなります。

また、MySQL_config.phpを読み取ることが可能な状態に合致していた場合は、関連するパスワードの変更を強く推奨します。

 

間違い、質問等があればコメントか@ken_kentanにまでお願いします。また、この件は既に開発者に報告済みです。