-
Notifications
You must be signed in to change notification settings - Fork 168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
如何区分source的原始对象和传播中被污染的对象 #63
Comments
通过 throughapi 辅助 判断,是否可行? |
感觉不行,不管through了什么api,最后都会回到如何区分这两个对象的问题 |
比如Intent.getParcelable?,主要是从本质上区分,从Intent中直接提取一个Intent,如果只是从Intent中提取string,integer之类的,这种污点传播,认为是没有危害的。 |
对,所以就产生了这个误报,因为只有setResult(intent2)才是漏洞,还是说 |
刚刚的throughpapi就是设计用来做这个事情的。 具体是什么api,需要你自己根据你的业务代码进行总结。 |
这个本质是如何操控�pathfinder,你看看有什么其他的sanitizer方式,可以自定义加进去的。 |
限定在getParcelable并不能解决这种类型的误报:
这种通用漏洞似乎应该假设跟业务代码没关系,当然如果是case by case,熟悉业务逻辑的话,确实可以针对性做一些限制。你们有没有那种仅针对某个App的规则,增加个packageName字段? |
确实不能,针对性的限制,可以举例说说么?只要能在sanitizer中表达的,都是可以的。 |
我分析了很多样本,发现最常见的代码模式是这样的:
所以我尝试去检查
但是好像不太行,appshark认为 你们有规则用到 |
appshark进行的是流不敏感 分析,所以可以直接忽略指令间的顺序 |
那可能没戏了...改VariableFlowRule的话,删了 |
https://codeql.github.com/codeql-query-help/java/java-android-intent-uri-permission-manipulation/
下面分别是有漏洞和没漏洞的例子:
那如果是这种情况,intent1虽然是新建的,但是被intent2污染了,如果不能区分这两者,那就会产生误报:
The text was updated successfully, but these errors were encountered: