AndroidOS版LINEに重大な危険性 バッファオーバーフローって何?

皆さんLINEはお使いでしょうか。私4Kは使いこなしているとは到底言えないまでも、それなりの頻度で利用しております。

そんなLINEですが、AndroidOS版のLINEでバッファオーバーフローの脆弱性が発見され、アップデートすることを呼びかけられているのは、スマートニュースなどのニュース配信アプリなんかでもLINEに関する記事がまとめられていたこともあり、目にしたことがある方もいるでしょう。

ですが、そういったまとめ記事って、『クラッシュする』とか『任意のコードが実行される』とかは書いてあるものの、バッファオーバーフローについては触れられていない気がします。

ですので、今回は『バッファオーバーフローって何?』というようなことをツラツラと書いていきます。

バッファって?

コンピュータープログラムにおけるバッファとは『データを一時的に記憶するための領域』です。

ではなぜ一時的に記憶する領域を確保する必要があるのでしょうか。

理由は、入出力処理よりもコンピューターの演算能力のほうが素早いので、そこで発生した同期のずれを補うためです。

具体的な例を挙げるとプリンターの印刷などがそうで、例えば100ページの文書を印刷しようと思った際、Wordなどで印刷ボタンを押すとPCでの処理は終了です。

ですが、プリンター側は1ページ目が終わったら2ページ目、2ページ目が終わったら3ページ目と順番に印刷していくので、PC側での処理のように爆速で印刷し終えることはできません。

このように、PCの入出力処理との間で時間のずれが発生してしまっても、バッファに一時的に保存しておくことで、100ページ目までしっかり印刷することができるようになるわけです。

簡単にまとめると、それぞれの機器で処理速度が差があっても正確に処理できているのはバッファと呼ばれる領域のおかげということです。

バッファオーバーフローって?

では、バッファオーバーフローとは何でしょうか。

バッファオーバーフローとは上述したバッファよりも大きなサイズのデータを書き込むことで生まれる脆弱性です。

例えば、名前を入力するフォームがあるとします。日本人の名前なら漢字や平仮名で、どれだけ長くても10文字程度には収まるという推測のもと、10文字まで保存できるようなバッファ領域を確保しました。

では、10文字しか許容されない領域に対して11文字以上の名前を入力しようとするとどうなるでしょうか。

このフォームの制御プログラムを書いた人が11文字以上の名前を入力された場合の処理をしていない場合、バッファ領域を超過してデータが書き込まれてしまいます

超過した11文字目が上書きされた箇所がプログラムが動作する上で、すごく重要な内容が書かれている場所であった場合、プログラムが開発者の想定とは大きく異なった挙動をしてしまうかもしれません。

こうなってしまうと、冒頭の『クラッシュしてしまう』といったことに繋がってきます。また、11文字目以降に不正なスクリプトを埋め込むことができれば『任意のコードが実行される』に繋がる恐れもあります。

LINEの場合

ではLINEの場合はどのような危険性があったのでしょうか。

LINE公式ページによると、プロフィールの画像を意図的に変更させることができたようです。

第三者によって、他アカウントのプロフィール画像を意図的に変更可能な状態となっていました。この脆弱性の影響を受ける対象は、通常の個人用LINEアカウントの他に、LINE@、LINE公式アカウントも含まれます。

引用元:LINEアカウントのプロフィール画像を変更可能な脆弱性の修正のお知らせ

また、プロフィール画像を書き換えられてしまうほかにも、細工を施された画像をAndroidOS版のLINEで読み込むことでクラッシュしてしまうのだとか。

さすがにどのように細工された画像ならクラッシュさせられるかといったところまでは見つけられなかったのですが、利用頻度が高いアプリケーションということもあり、早急にアップデートするようにしましょう。

今回はたまたまAndroidOS版のLINEでの脆弱性でしたが、iOSやWindowsなど別のOSやプログラムで脆弱性が見つかることも多々あります。ですので、OSやアプリケーションは特別な事情がない限り、最新版にするよう心がけましょう。

iOS版は?

今回発見されたのはAndroidOS版でしたが、iOS版でも将来的にはバグが見つかる可能性は十分あります。こういった脆弱性が見つかった際は、たまたま運が良かったので自分とは関係なかったと思うようにしましょう。

LINEにかかわらず、人気アプリの開発者とハッカーの戦いは常にいたちごっこで、なんなら開発者側のほうが後手を取っていることも少なくありません。再三になりますが、OSやアプリはきちんとアップデートしましょう!

また、iPhoneだからMacPCだから安全だという都市伝説、信じている方たまにいらっしゃいますよね?

確かにiOS向けのアプリケーションはAppStoreの厳しい審査を受けてはいますし、『サンドボックス』という他所へ悪影響を与えないように作られた環境でアプリが動作しているようで、一定水準以上の安全性は保たれています。

ですが、今回のような脆弱性やバグが見つからないという保証はありません。公になっていないだけで既に見つかっている可能性だってあるので、くれぐれもご注意ください。

まとめ

バッファオーバーフローとは、『バッファよりも大きなデータを書き込まれることで起きる不具合』のことで、バッファとは『データを一時的に記憶するための場所』です。

こういったプログラムの脆弱性は頻繁に見つかっているので、OSやアプリを最新の状態を維持するなどの方法で自衛する必要があります。

AndroidOSの搭載されたスマホを使っている人(=iPhone以外のスマホを使っている人)でLINEを使っている人はGooglePlayから最新版をインストールしましょう!