メッセージアプリ「Telegram」の脆弱性突く攻撃、「右から左」に読むテキスト表示機能を悪用



ニュース

» 2018年02月15日 09時30分 公開



例えば「gnp.js」というマルウェアのファイル名を逆向きに表示すれば、「sj.png」という画像ファイルに見せかけることができてしまう。


[鈴木聖子,ITmedia]


 ロシアのセキュリティ企業Kaspersky Labは2月13日、仮想通貨ユーザーの間で人気のメッセージアプリ「Telegram」に存在する未解決の脆弱性が悪用されていたことが分かったと伝えた。この攻撃では、テキストを右から左へ表示するUnicodeの仕組みが悪用されていたという。

 Kasperskyのブログによると、Telegramの脆弱性を突く攻撃は、2017年10月にWindowsクライアントで報告された。利用されていたのは、アラビア語など特定の言語で使われる右から左への横書きに対応する目的で、テキストの流れを逆向きに表示する「Right to Left Override」(RLO)という仕組みだった。

 不正なメッセージでは、この仕組みを使ってファイル名を逆向きに表示し、ユーザーをだまそうとしていた。例えばJavaScript(.js)ファイルを使ったマルウェア「gnp.js」のファイル名を逆向きに表示すれば、「sj.png」という画像ファイルに見せかけることができてしまう。ただしWindowsでは、このファイルを開こうとするとセキュリティ警告が表示される。

photo画像にある「photo_high_resj.png」というファイルだが、右から読むと「gnp.js…」となる。れっきとしたJavaScript(.js)ファイルを使ったマルウェアだ(出典:Kaspersky Lab)


photo
Windowsで開こうとすると、JavaScriptファイルであることが分かる(出典:Kaspersky Lab)

 ユーザーがこの手口にだまされてマルウェアに感染すると、攻撃者にシステムを制御され、バックドアやキーロガーといった別のマルウェアが知らないうちに呼びこまれてしまう。「Monero」などの仮想通貨を採掘するマルウェアも仕込まれているのが見つかった。

 Kasperskyが調べたところ、Windowsクライアントでは2017年3月以来、この脆弱性が悪用されていたことが分かった。これまでのところ、攻撃はロシアのみで発生していて、ロシアの犯罪集団の関与がうかがわれると分析している。

 脆弱性が存在していたTelegramのバージョンなどは分かっていない。Kasperskyからの通報を受け、現在のTelegramではこの脆弱性は悪用されなくなったと同社は伝えている。


Copyright © ITmedia, Inc. All Rights Reserved.

‘; html += ‘

‘; e_dlv.innerHTML = html; cX = cX || {}; cX.callQueue = cX.callQueue || []; cX.callQueue.push([ ‘insertAdSpace’, { adSpaceId:adid, width:’100%’, height:190, initialHorizontalAdUnits:1, initialVerticalAdUnits:1, resizeToContentSize:true, renderTemplateUrl:render } ]); }; var insert_ok = function(_target,_str){ e_body.insertBefore(e_dlv,_target); set_dlv(); }; var insert_ng = function(_str){ e_dlv.style.display = ‘none’; }; var main = function(){ var e_nodes = e_body.childNodes; // BODY 直下子要素 var e_tags = []; // BODY 直下タグ var p_num = []; // BODY 直下 P タグ位置 var p_target_num; // 枠挿入基準位置 var o_float = {}; // 回り込み要素 var o_this = {}; // アクティブタグ var o_next = {}; // アクティブタグの次のタグ var flag_insert = 0; // 挿入フラグ // 回り込み要素チェック var check_float = function(_e){ var e = 0; if(_e.id.match(/^col¥d{3}(l|r)$/)){ e = _e; } return e; }; // 要素の Y 座標と高さの合計値 var get_element_y = function(_e){ var ey = 0; var eh = _e.offsetHeight; while(_e){ ey += _e.offsetTop; _e = _e.offsetParent; } return ey + eh; }; var check_ptag = function(_e){ var e = 0; if(_e.tagName && _e.tagName === ‘P’){ e = _e; } return e; }; var try_insert = function(){ p_target_num = Math.floor(p_num.length / 2) – 1; if(p_target_num >= _maxrange) p_target_num = _maxrange; for(var i = p_num[p_target_num]; i = _threshold){ try_insert(); }else{ insert_ng(‘P タグ ‘ + _threshold + ‘ 以下’); } }; if(e_body){ main(); }else{ insert_ng(‘記事本文なし’); }
})(document,4,5);

Related Post