iOS 11のカメラアプリには、QRコードを読み込み指定されたURLをブラウザで開くことができるQRコードリーダーの機能が搭載されています。ところがこのQRコードリーダーに不具合が存在し、本来のURLのホスト名とは異なるホスト名を通知時に表示してしまう不具合が存在すると指摘されています(MacRumors)。
脆弱性を発見したInfosecのセキュリティ研究者Roman Mueller氏は、この不具合を悪用して、通知で表示されたホスト名と全く異なるWebサイトにユーザーを誘導できるとし、実際に"facebook.comを開く"という通知を表示したあと、自分のサイトをブラウザで開くデモを公開しています。
カメラアプリのQRコード読み取り機能で使用されているURLの解析処理が正しくおこなわれておらず、ホスト名が正しく切り取られていないことが原因とのこと。
具体的には上のQRコードが表す「https://xxx\@facebook.com:443@infosec.rm-it.de/」というURLを読み込ませると、「facebook.com」が通知として表示されるのにもかかわらず、Safariでは「infosec.rm-it.de」が開かれてしまうようです(iOS 11.2.6で実際に確認できました)。
The URL embedded in the QR code is: https://xxx\@facebook.com:443@infosec.rm-it.de/
But if you tap it to open the site, it will instead open https://infosec.rm-it.de/
The URL parser of the camera app has a problem here detecting the hostname in this URL in the same way as Safari does. It probably detects “xxx\” as the username to be sent to “facebook.com:443”. While Safari might take the complete string “xxx\@facebook.com” as a username and “443” as the password to be sent to infosec.rm-it.de. This leads to a different hostname being displayed in the notification compared to what actually is opened in Safari.
QRコードの問題はAppleのセキュリティチームに対し2017年12月23日に報告済みだったのにもかかわらず、2018年3月24日の段階で修正されていないと説明されています。