CVE-2024-45337: Golang Crypto Library Flawed, Risks Authorization Bypass
2024/12/15 SecurityOnline — Golang の暗号ライブラリに、新たな脆弱性 CVE-2024-45337 (CVSS 9.1) が発見された。この脆弱性は、ServerConfig.PublicKeyCallback 関数の誤用に起因するものであり、アプリケーションやライブラリにおいて、認可バイパスを引き起こす可能性を持つ。

脆弱性の詳細
コールバック関数である PublicKeyCallback 関数は、SSH 接続時にクライアントが提供する公開鍵の真正性を、サーバ・サイドで確認するためのものだ。しかし、新たに判明したのは、認証に使用される実際の鍵を、この関数が保証しないという事実である。
この脆弱性が発生するのは、アプリケーションが認可を判断する際に、PublicKeyCallback に提示される鍵の順序や内容が誤っている場合だ。攻撃者は、以下のような手順に沿うことで、この脆弱性を悪用できる:
- 複数の公開鍵の提示:複数の公開鍵を送信することで、サーバを欺く。
- 異なる鍵での認証:サーバが特定の公開鍵を検証したとしても、攻撃者は別の方法 (パスワード/キーボード・インタラクティブなど) で認証できる。
上記の手順により、提示された鍵と、実際の認証方法の不一致が生じ、脆弱なアプリケーションによる不正アクセスへの許可が発生し得る。
緩和策
- golang.org/x/crypto v0.31.0 以降へのアップグレード:このバージョンには、公開鍵認証が成功した際に、PublicKeyCallback に渡された最後の鍵を強制的に使用させるという、重要な修正が含まれている。
- 適切な権限の利用:あらゆるアプリケーションは、認証コールバック内の権限フィールドを活用し、認証試行に関連するデータを保存/取得すべきである。外部の状態や PublicKeyCallback に提示されたキーの順序に基づいた、認証の決定は避けるべきだ。
- サードパーティ・ライブラリの確認:golang.org/x/crypto とインタラクトするサードパーティ・ライブラリを使用している場合には、PublicKeyCallback および権限フィールドの誤用につながる可能性があるため、そのドキュメントおよび実装を慎重に確認すべきである。
いろんなところに、脆弱性の材料があるのだと感じてしまいますね。人気の Golang だけに、影響も広がるはずです。ご利用のチームは、ご注意ください。よろしければ、Golang で検索も、ご参照ください。
You must be logged in to post a comment.