セキュリティ/報告例
この報告は、Neosでのパッチ適用に成功した脆弱性が含まれています。このレポートは、脆弱性レポート作成の優れた手引きとなります。この形式を真似ることは許可されており、奨励されています。
何を見つけたか?
悪意のあるユーザーが別のユーザーになりすましてセッションに参加できるようにする脆弱性。
どうやって見つけたか?
私は特に、新しいセキュリティ問題の報奨金ポリシーにより、セキュリティに大きな影響を与える脆弱性を探しています。
これはどれほど深刻だと思いますか?
これは少なくとも中程度の重大度の問題であると私は信じています。 次のような影響があります。
- Neosスタッフを含むユーザーのなりすまし
- 悪意のあるユーザーがセッションIDを持っている場合、Contacts / Contacts +セッションへの強制入力
- 偽装されたユーザーが有効な招待状を持っていて、悪意のあるユーザーがセッションIDを知っている場合、プライベートセッションへの強制入場。
- 攻撃者が盗もうとしているアセットの所持者になることができるため、SimpleAvatarProtectionの回避手段となる。
PoC実装が作成され、現在のバージョンのNeos(2021.9.3.1281)で機能することが確認されています。
誰がこれを知っていますか?
脆弱性の詳細を完全に把握しているのは私だけです。 マルチプレイヤーテスト用に[PlayerA]と[PlayerB]を採用しましたが、彼らはなりすましの脆弱性が存在することを認識しているだけで、その仕組みに関する具体的な認識はありません。
ログ
攻撃者が参加するホストからのログには、異常なことは何も表示されませんが、要求された場合はログを追跡できます。
再現手順
キャラクター
- 「Sally」は「SallyWorld」という名前のセッションをホストしています
- 「Eve」はSallyWorldへのアクセスを取得したい悪意のあるユーザーとします
- 「John」はイブが主催するセッションのユーザーです
攻撃
# EveはJohnのユーザー名とユーザーIDを使用してSallyWorldに接続します # SallyはEveにJoinChallengeを発行します # EveはこのJoinChallengeをジョンに転送します # Johnは秘密鍵を使用してJoinChallengeに署名し、JoinAuthenticate応答をEveに送り返します # EveはこのJoinAuthenticate応答をSallyに転送します # SallyはEveを世界に受け入れます
スクリーンショット
世界には2人の[PlayerB]がいることを示しています。1人は本物で、もう1人は私が彼になりすました: 「匿名化のために省略」
ビデオ
このビデオでは、[PlayerA]になりすます: 「匿名化のために省略」
再現アイテムへのリンクまたはURL
再現アイテムはNeosプラグインであり、現在、配布できる方法でパッケージ化されていません。 あなたがそれを必要とするならば、私はあなたのために特別なビルドを作ることができます。
考えられる改善策
- ノンスのみの使用からノンス+ sessionIdentifierを署名済みデータとして使用するように変更
- JoinChallengesがホストからのものであることを確認(これは部分的な修正にすぎない可能性があります)