macOS 10.13/iOS 11のゼロ幅非接合子処理の不具合を利用しアプリをクラッシュさせる文字列が複数発見される。

スポンサーリンク

 macOS 10.13/iOS 11のゼロ幅非接合子処理の不具合を利用しアプリをクラッシュさせる文字列が複数発見されているようです。詳細は以下から。

Unicdeのロゴ

 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 1013.3/iOS 11.2.5をクラッシュさせることが出来る文字列

当初報告された文字列以外にもmacOS 10.13.3やiOS 11.2.5などのアプリをクラッシュさせる事が出来るZWNJを含んだ文字列が複数発見されているそうです。

スポンサーリンク

検証

 現在報告されているのは以下の3パターンの文字列で、インドで利用されているテルグ語(Telugu)以外にも、バングラデシュなどで利用されているベンガル語(Bengali)とZWNJを組み合わせることで、アプリをクラッシュさせることが出来るので、興味のある方は新しい文字列を探してみて下さい。

macOSとiOSのCoreTextの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