類似の Unicode 文字を使用して認証をバイパスする

GitHubの オフ 電子メール内の Unicode 文字を操作してアカウントへのアクセスを奪うことを可能にする攻撃の影響を受けやすくなります。 問題は、小文字または大文字の変換関数を使用すると、一部の Unicode 文字が、スタイルが似ている通常の文字に変換されることです (複数の異なる文字が XNUMX つの文字に変換される場合、たとえば、トルコ語の文字「ı」と「i」) 「」は大文字に変換すると「I」に変換されます。

一部のサービスやアプリケーションでは、ログイン パラメータをチェックする前に、ユーザーが指定したデータがまず大文字または小文字に変換されてからデータベースにチェックインされます。 サービスがログインまたは電子メールでの Unicode 文字の使用を許可している場合、攻撃者は同様の Unicode 文字を使用して、Unicode Case Mapping Collision の衝突を操作する攻撃を実行する可能性があります。

'ß'.toUpperCase() == 'ss'.toUpperCase() // 0x0131
'K'.toLowerCase() == 'K'.toLowerCase() // 0x212A
'John@Gıthub.com'.toUpperCase() == '[メール保護]'.toUpperCase()

GitHub の攻撃者 できた 忘れたパスワードを回復するためのフォームを使用して、衝突を引き起こす Unicode 文字を含むアドレスをフォームに指定して、別の電子メールへの回復コードの送信を開始します (たとえば、 [メール保護] 電子メール m が示されましたı[メール保護])。 アドレスは大文字に変換され、元のアドレスと一致したため、テストに合格しました ([メール保護] )が、手紙を送信するときにそのまま置き換えられ、回復コードが偽のアドレスに送信されました(mı[メール保護]).

いくつかの 文字、レジスタを変換するときに衝突が発生します。

ß 0x00DF SS
ı 0x0131 私
ſ 0x017F S
ff 0xFB00 FF
 0xFB01 FI
 0xFB02 FL
ffi 0xFB03 FFI
ffl 0xFB04 FFL
ſt 0xFB05 ST
st 0xFB06 ST
K 0x212A k

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

コメントを追加します