W42H/W42CAで発生した「特定の文字列(%n %S)で端末が強制的に再起動してしまうバグ」

【ご参考】auのW42CAとW42Hに強制再起動する不具合

ちょっとプログラムを書いたことがある人なら気が付くと思いますが、これってC言語のprintf関数で数値や文字列を規定の形で表示するための記述式です。

int i=500;
printf("iは%dです\n",i);

とか記述すると、画面上には「iは500です。」と表示されたりするアレの仲間です。

今回のバグは、本来ならば「%n」という文字列そのものとして扱わなくてはならないものが、printf関数の引数を用いて上記のように展開されてしまうことによる不具合で、「Format String Vulnerability」なんて名前が付いている、れっきとしたソフトウェア脆弱性の一つだったりします。

XSSやSQL-Injectionと同じく、入力される文字列をそのまま信用して利用してしまうことによる不具合ですが、前者と比べレアな不具合ではあります。 某IT系ニュースサイトでは、既に詳細な解説なんかが上がっていて、やらかしてしまった人はさぞかし臍を噛む思いでしょうね。

合掌。


ひとつ新しい記事へ / ひとつ古い記事へ