CWE-939:自定义URL方案处理程序中的授权不当
查看自定义信息:
移动平台和其他架构允许使用自定义URL方案来促进应用程序之间的通信。就iOS而言,这是唯一进行应用间通信的方法。该实施是由开发人员的自由裁量权,可能会在应用程序中打开安全缺陷。一个示例可能是潜在的危险功能,例如通过自定义URL方案修改文件。
该表显示了与这种弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
与观点“研究概念”相关(CWE-1000)
与“软件开发”视图相关(CWE-699)
与“建筑概念”的视图相关(CWE-1008)
引言的不同模式提供了有关如何以及何时引入这种弱点的信息。该阶段识别可能发生介绍的生命周期中的一个点,而音符提供了与给定阶段中引言有关的典型情况。
该清单显示可能出现给定弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。
技术 课程:移动(不确定的患病率) 示例1 该iOS应用程序使用自定义URL方案。URL方案中的替换Filetext操作允许外部应用程序与文件IncomingMessage.txt接口,并用查询字符串的文本字段替换内容。 外用
(好代码)
示例语言:Objective-C
nsstring *strimurl = @“ appscheme:// repleentfiletext?file = incomingMessage.txt&text&text = hello”;
nsurl *url = [nsurl urlwithstring:stringurl]; [[uiapplication sharedApplication] openurl:url]; 应用URL处理程序
(不良代码)
- (bool)应用程序:( uiapplication *)应用程序handeropenurl :( nsurl *)url {
如果(!url){ }
返回no; }NSSTRING *action = [url host]; if([[[Action iSequalToString: @“ repenterfiletext”]){
nsdictionary *dict = [self parsequerystringExampleFunction:[url查询]]; }//此功能将将内容写入指定文件 fileObject *objectfile = [self writeTofile:[dict objectforkey: @“ file”] withText:[dict objectforkey: @“ text”“”]; 返回是; 处理程序对谁可以使用其功能没有限制。可以使用任何调用URL处理程序的方法来调用处理程序,例如嵌入在Safari打开的网页上的以下恶意iframe。
(攻击代码)
示例语言:html
<
攻击者可以托管一个恶意网站,其中包含iframe和欺骗用户通过精心设计的网络钓鱼电子邮件进入该网站。由于Safari会自动执行IFRAME,因此当处理程序执行IFRAME代码时,不会提示用户,该代码自动调用URL处理程序,用恶意网站列表替换书签文件。由于替换filetext是一种潜在的危险操作,这是一种修改数据的动作,因此在WriteTofile之前应进行理智检查:withText:function。 示例2 这些Android和iOS应用程序在使用特定的URL方案中拦截了WebView中的URL加载,并执行特殊操作,从而允许WebView中的JavaScript与应用程序通信:
(不良代码)
示例语言:爪哇
// 安卓
@Override public boolean shopsoverriesurlloalloading(WebView视图,字符串URL){
if(url.substring(0,14).equalsignorecase(“示例Cheme:”)){
if(url.substring(14,25).equalsignorecase(“ getuserinfo”)){ }
WritedAtatoView(视图,用户数据); }返回false; 别的{
返回true; }
(不良代码)
示例语言:Objective-C
// ios
- (boo)webview :( uiwebview *)exwebview shopsstartloadwithrequest :( nsurlrequest *)exrequest navigationType :( uiwebviewnavigation type)exnavigationpe) {
nsurl *url = [Exrequest URL];
if([[[url方案] iSequalTostring:@“示例”]) {
NSString *functionString = [url ResourcesPecifier];
if([[functionString HASPREFIX:@“ SpecialFunction”])) { //使数据在WebView中可用。 uiwebview *webview = [self Writedatatoview:[url查询]]; 返回no; 返回是; 然后,可以通过在URL中传递参数来启动“本机代码”:
(攻击代码)
示例语言:JavaScript
window.location =示例Cheme:// method?parameter = value
由于该应用程序没有检查源,因此加载在本网络浏览中的恶意网站对API的访问与受信任的网站相同。
提供更多信息 - 请选择其他过滤器。
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款。CWE由美国国土安全部(DHS)网络安全和基础设施安全局(CISA),由国土安全系统工程和开发研究所(HSSEDI)由manbetx客户端首页(MITER)。版权所有©2006–2023,Miter Comanbetx客户端首页rporation。CWE,CWSS,CWRAF和CWE徽标是Miter Corporation的商标。manbetx客户端首页 |