UDP パケットの送信によって悪用された Toxcore のバッファ オーバーフロー

Tox P2P メッセージング プロトコルのリファレンス実装である Toxcore で脆弱性 (CVE-2021-44847) が確認されました。この脆弱性により、特別に細工された UDP パケットの処理時にコード実行がトリガーされる可能性があります。 この脆弱性は、UDP トランスポートが無効になっていない Toxcore ベースのアプリケーションを使用するすべてのユーザーに影響します。 攻撃するには、被害者の IP アドレス、ネットワーク ポート、DHT 公開キーを知っていて UDP パケットを送信するだけで十分です (この情報は DHT で公開されています。つまり、攻撃は任意のユーザーまたは DHT ホストに対して行われた可能性があります)。 。

この問題は toxcore リリース 0.1.9 ~ 0.2.12 で発生し、バージョン 0.2.13 で修正されました。 クライアント アプリケーションのうち、これまでのところ、この脆弱性を排除したアップデートをリリースしているのは qTox プロジェクトだけです。 セキュリティの回避策として、TCP サポートを残しつつ UDP の使用を無効にすることができます。

この脆弱性は、handle_request() 関数のバッファ オーバーフローによって引き起こされます。これは、ネットワーク パケット内のデータ サイズの誤った計算によって発生します。 特に、暗号化されたデータの長さは、「1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE」として定義された CRYPTO_SIZE マクロで決定され、後で「長さ - CRYPTO_SIZE」減算演算で使用されます。 マクロ内に括弧がないため、すべての値の合計を減算する代わりに、1 を減算して残りの部分を加算します。 たとえば、バッファ サイズは「length - (1 + 32 * 2 + 24)」ではなく、「length - 1 + 32 * 2 + 24」として計算され、バッファの外側にあるスタック上のデータが上書きされます。境界。

出所: オープンネット.ru

コメントを追加します