カテゴリー
セキュリティ

ロシアのタクシー配車サービスがハックされ、近隣の空車が一か所に大集合

「Yandexタクシーが何者かにハックされ、モスクワのクツゾフスキー大通りに空きタクシーが集結した」というtweet

動画だけでも数十台はいますね。この動画を撮った人もタクシードライバーかな。後半に出てくるスマートフォンのアプリが Yandex Taxi のアプリなのかもしれません。

Yandex といえばロシアにおける Yahoo! Japan のような検索サービス最大手で、タクシー配車の Yandex Go もそのグループの中の一サービスなのでしょう。

タクシーが集められたのは地図の赤点のあたり。モスクワ中心部からみて西側ですね。クツゾフスキー大通りの名前はナポレオン一世を焦土戦術で撃退したクツーゾフ将軍にちなむもののようです。

こちらのニュース記事(Коммерсантъ)によると(機械翻訳で読んでいますが)、Yandex Go が「悪質な攻撃」によるものだと認め、その後問題は解消されたそうです。

記事中のセキュリティの専門家の解説では、アプリで多数のアカウントを新規登録してこのようなイタズラを行うのはたいへん(電話番号が要るし、クレジットカードの登録も要る)だし、他サービスからリークしたパスワードで既存のユーザーのアカウントを多数乗っ取って配車依頼をするのも簡単ではない、と。Yandex Go の認証等にバグがある可能性もあると語っています。

ロシアの新聞ですし、戦争状態にあるウクライナの攻撃、といった可能性については書かれていません。がしかし、配車アプリを多数ハックできるならもっと他の攻撃をするのではという気もしますね。

via Hacker News

カテゴリー
技術

Confusables – 紛らわしい文字を含めて検索できるPythonライブラリ

Unicode コンソーシアムが提供している見た目そっくりな文字リストにある文字が紛れていても文字列マッチする小さなライブラリが Confusables です。

このクラスは最新の Confusables.txt を Unicode.org から取得し、紛らわしい文字を含んだマッチする正規表現を生成してくれます。

たとえば、”Hello” に対しては次のようなパターンができます。

Regexp pattern: [HHℋℌℍ𝐇𝐻𝑯𝓗𝕳𝖧𝗛𝘏𝙃𝙷Η𝚮𝛨𝜢𝝜𝞖ⲎНᎻᕼꓧ𐋏ⱧҢĦӉӇ][e℮eℯⅇ𝐞𝑒𝒆𝓮𝔢𝕖𝖊𝖾𝗲𝘦𝙚𝚎ꬲеҽɇҿ][l‎\|∣⏽│1‎۱𐌠‎𝟏𝟙𝟣𝟭�
IIIⅠℐℑ𝐈𝐼𝑰𝓘𝕀𝕴𝖨𝗜𝘐𝙄𝙸Ɩlⅼℓ𝐥𝑙𝒍𝓁𝓵𝔩𝕝𝖑𝗅𝗹𝘭𝙡𝚕ǀΙ𝚰𝛪𝜤𝝞𝞘ⲒІӀ‎‎‎‎‎‎‎‎ⵏᛁꓲ𖼨𐊊𐌉‎‎łɭƗƚɫ‎‎‎‎ŀĿᒷ🄂⒈‎⒓㏫㋋㍤⒔㏬㍥⒕㏭㍦
⒖㏮㍧⒗㏯㍨⒘㏰㍩⒙㏱㍪⒚㏲㍫ljIJ‖∥Ⅱǁ‎𐆙⒒Ⅲ𐆘㏪㋊㍣Ю⒑㏩㋉㍢ʪ₶ⅣⅨɮʫ㏠㋀㍙][l‎\|∣⏽│1‎۱𐌠‎𝟏𝟙𝟣𝟭𝟷IIⅠℐℑ𝐈𝐼𝑰𝓘𝕀𝕴𝖨𝗜𝘐𝙄𝙸Ɩlⅼℓ𝐥𝑙�
𝓁𝓵𝔩𝕝𝖑𝗅𝗹𝘭𝙡𝚕ǀǀΙ𝚰𝛪𝜤𝝞𝞘ⲒІӀ‎‎‎‎‎‎‎‎ⵏᛁꓲ𖼨𐊊𐌉‎‎łɭƗƚɫ‎‎‎‎ŀĿᒷ🄂⒈‎⒓㏫㋋㍤⒔㏬㍥⒕㏭㍦⒖㏮㍧⒗㏯㍨⒘㏰㍩⒙㏱㍪⒚㏲㍫ljIJ‖∥Ⅱǁ‎𐆙⒒Ⅲ𐆘
㏪㋊㍣Ю⒑㏩㋉㍢ʪ₶ⅣⅨɮʫ㏠㋀㍙][oంಂംං०੦૦௦౦೦൦๐໐၀‎۵oℴ𝐨𝑜𝒐𝓸𝔬𝕠𝖔𝗈𝗼𝘰𝙤𝚘ᴏᴑꬽο𝛐𝜊𝝄𝝾𝞸σ𝛔𝜎𝝈𝞂𝞼ⲟоჿօ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ഠဝ𐓪𑣈
𑣗𐐬‎øꬾɵꝋөѳꮎꮻꭴ‎ơœɶ∞ꝏꚙൟတ]

あとはこれに対して入力された文字列がマッチするかをチェックすれば、紛らわしい文字列かどうかの判定ができるというわけです。

テストコードでは “𝓗℮𝐥1೦” が “Hello” にマッチすることが確認できます。紛らわしい文字列として真で、元の”Hello”と同値ではないなら、誤認することを狙った”Hello”のニセモノだ、というわけですね。

Confusables のリスト中には日本語の紛らわしい文字(ハと八とかニと二とか)もあります。『カタカナの「ノ」はスラッシュと似ている』という定義もあり、”and/or” に間違うパターンを出してみるとこんな風になりました。カタカナの「ノ」だけじゃなく斜め線に見える文字もたくさんUnicodeにあるんですね。

Regexp pattern: [a⍺a𝐚𝑎𝒂𝒶𝓪𝔞𝕒𝖆𝖺𝗮𝘢𝙖𝚊ɑα𝛂𝛼𝜶𝝰𝞪а⍶℀℁ꜳæӕꜵꜷꜹꜻꜽ][n𝐧𝑛𝒏𝓃𝓷𝔫𝕟𝖓𝗇𝗻𝘯𝙣𝚗ոռɳƞη𝛈𝜂𝜼𝝶𝞰ᵰnj][dⅾⅆ𝐝𝑑�
𝒹𝓭𝔡𝕕𝖉𝖽𝗱𝘥𝙙𝚍ԁԁᏧᑯꓒɗɖƌđ₫ᑻᒇʤdzʣdžʥ][/᜵⁁∕⁄╱⟋⧸𝈺㇓〳Ⳇノ丿⼃⧶⫽⫻][oంಂംං०੦૦௦౦೦൦๐໐၀‎۵oℴ𝐨𝑜𝒐𝓸𝔬𝕠𝖔𝗈𝗼𝘰𝙤𝚘ᴏᴑꬽο𝛐𝜊𝝄𝝾𝞸σ𝛔�
𝝈𝞂𝞼ⲟⲟоჿօ‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎ഠဝ𐓪𑣈𑣗𐐬‎øꬾɵꝋөѳꮎꮻꭴ‎ơœɶ∞ꝏꚙൟတ][r𝐫𝑟𝒓𝓇𝓻𝔯𝕣𝖗𝗋𝗿𝘳𝙧𝚛ꭇꭈᴦⲅгꮁɽɼɍғᵲґ𑣣mⅿ𝐦𝑚𝒎𝓂𝓶𝔪𝕞𝖒𝗆𝗺𝘮
𝙢𝚖𑜀₥ɱᵯ]

“andノor” と入れると、”Matched” となるわけです。

日本語ドメインもあまり普及していないし、日本語に紛らわしい文字を混ぜた文字列で何かをすり抜けられるというユースケースもそんなにないかもしれませんが、まあそういう必要があればこういったチェックをつけるのでしょう。

カテゴリー
ネットの事件

英銀行の「正しい電話番号」確認サイト、JSONで全74000番号を晒す作りで議論を呼ぶ

イギリスの大手バークレーズ銀行、利用者の電話詐欺被害対策として「バークレイズ銀行の電話番号として正しいか調べる」サイトを公開しているのですが、その実装に問題があるのではという疑義がHacker News で上がり議論となっています。

Phone number checker サイトでは、電話番号を一つ入力するフォームが置かれ、ここに電話番号を入力すると、74000個ある正式な電話番号の場合は「この番号へ掛けても大丈夫です」という結果が出ます。

大手とはいえ、一つの銀行が74000個も番号を抱えてるのはすごいですね。フリーダイヤルから支店や部署まですべての番号を含むにしても。

議論となっているのは、このチェッカがクライアントサイドだけで動いているらしいこと。JSONファイルが読み込まれていて、このファイルに74000個の電話番号がベタ書きされています。


{
"numbers": [
"0800000097",
"0800001011",
"0800008008",
"0800111777",
"0800201612",
"0800222200",
"0800222800",
"0800227222",
"0800281435",
"0800282390",
"0800289289",
"0800289888",
"0800289989",

最初に声を上げたブログが、入力フォームの形式チェックがあまりちゃんとしていない(ハイフンを含んだりイギリスの国番号44から始まる形式を正しく認識できない等)やJSONファイルのサイズ(1.3Mbytes)が大きすぎることを問題にしていた(これぐらい許容範囲だとか、正規表現で書けばよいとか圧縮をちゃんとすればよいとか)ため、Hacker News での議論も多方向に拡散してしまっているのですが、主要な問題は偽メールや偽電話でだまそうとしている勢力が簡単に正式な電話番号のリストを入手できるところにあるのではないかなと思います。

発信者番号通知も改竄可能なので、騙す側に改竄するための正しい番号のリストを教えているという話でもあります。このチェッカが正しく理解されていないと、電話を「受けた時」にこのチェッカで正しいとされたから電話の相手を信用してもいいと思ってしまったりしてしまう可能性もあります。