CWE观点:移动应用程序的弱点
视图组件cwe - 312:明文存储的敏感信息
视图定制的信息:
因为信息存储在明文(即。,unencrypted), attackers could potentially read it. Even if the information is encoded in a way that is not human-readable, certain techniques could determine which encoding is being used, then decode the information. 数据迁移到云上,它可以被攻击者更容易从任何地方访问数据在互联网上。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:云计算患病率(待定) 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的代码片段将明文用户帐户ID存储在浏览器cookie。
(坏的代码)
例如语言:Java
响应。addCookie(新饼干(“userAccountID”, acctID);
因为帐户ID在明文,用户的账户信息暴露如果他们的电脑被攻击者。 示例2 这段代码将用户的登录信息写入cookie,这样用户不需要稍后再登录。
(坏的代码)
例如语言:PHP
函数persistLogin(用户名、密码美元){
$ data =数组(美元= >用户名“用户名”,“密码”= >美元密码); }setcookie(“用户数据”,元数据); 代码将用户的用户名和密码存储在cookie中明文用户的机器。这让用户的登录信息如果他们的电脑被攻击者。即使在不损害用户的机器,这个弱点结合跨站点脚本(cwe - 79)可能允许攻击者远程复制饼干。 也注意这个示例代码展示明文存储在一个Cookie (cwe - 315)。 示例3 下面的代码尝试建立连接、读取密码,然后将其存储到缓冲区。
(坏的代码)
例如语言:C
服务器。sin_family = AF_INET;惠普= gethostbyname (argv [1]);
如果(hp = = NULL)错误(“未知主机”); memcpy ((char *)及服务器。惠普sin_addr (char *) - > h_addr,惠普- > h_length); 如果(命令行参数个数< 3)端口= 80; 其他端口=(无符号短)atoi (argv [3]); 服务器。sin_port = htons(港口); 如果(连接(袜子,(struct sockaddr *)及服务器,sizeof服务器)< 0)错误(“连接”); … 在((n =读(袜子,缓冲区,BUFSIZE-1)) ! = 1) { 写(目前password_buffer n); … 而成功,程序不加密数据写到缓冲区之前,可能暴露在未经授权的演员。 示例4 下面的例子展示的部分属性和配置文件为Java和ASP。网络应用程序。文件包含用户名和密码信息,但他们在明文存储。 这个Java示例显示了一个属性文件明文用户名/密码对。
(坏的代码)
例如语言:Java
# Java Web应用程序ResourceBundle属性文件 … webapp.ldap.username = secretUsername webapp.ldap.password = secretPassword … 下面的例子展示了一个配置文件的一部分ASP。网络应用程序。这个配置文件包含连接到数据库的用户名和密码信息,但对存储在明文。
(坏的代码)
例如语言:ASP.NET
…
< connectionStrings >
<添加名称= connectionString =“ud_DEV connectDB = uDB;uid = db2admin;pwd =密码;dbalias = uDB; System.Data providerName =。Odbc " / > < / connectionStrings >… 用户名和密码信息不应包括在一个配置文件或一个属性文件明文这将允许任何人可以读取文件访问资源。如果可能的话,这个信息加密。 示例5 2022年,OT:冰崩研究调查了10个不同的操作技术(OT)供应商的产品。研究人员报道,56个漏洞,说产品是“不安全的设计”(ref - 1283]。如果这些漏洞利用,往往让对手改变产品运营,从拒绝服务改变产品执行的代码。因为这些产品经常被应用于行业,如电力、电气、水,和其他人,甚至会出现安全问题。 至少有一个产品在明文存储密码。 例子6 2021年,一个网站由PeopleGIS存储数据我们市在亚马逊网络服务(AWS)简单存储服务(S3)桶。
(坏的代码)
例如语言:其他
安全研究人员发现86 S3 bucket可以访问没有身份验证(cwe - 306)和存储数据加密(cwe - 312)。这些桶暴露超过1000 GB的数据和160万个文件包括物理地址、电话号码、税务文件,驾照的照片id等等。ref - 1296][ref - 1295]
虽然没有公开披露的数据是如何保护后发现,多种选择可以考虑。
(好的代码)
例如语言:其他
敏感信息可能已经被确保保护桶没有公共读访问,例如,通过启用s3-account-level-public-access-blocks-periodic规则阻止公共访问。此外,数据可能是加密静止S3使用适当的设置,例如,通过启用服务器端加密使用s3-bucket-server-side-encryption-enabled设置。其他设置可以进一步防止桶数据泄露。(ref - 1297]
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
术语
不同的人使用“明文”和“明文”指的是同一件事:缺乏加密。然而,在密码学,这些更精确的含义。明文信息之前输入密码算法,包括already-encrypted文本。明文是未加密的任何信息,尽管它可能会在一个编码形式,不轻易人类可读的(比如base64编码)。
cwe - 319:明文传输的敏感信息
视图定制的信息:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定) 类:ICS /不(通常是普遍的)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的代码试图建立一个连接一个网站敏感信息交流。
(坏的代码)
例如语言:Java
尝试{
URL u =新的URL (“http://www.secret.example.org/”); }HttpURLConnection胡= (HttpURLConnection) u.openConnection (); hu.setRequestMethod (“”); hu.connect (); OutputStream os = hu.getOutputStream (); hu.disconnect (); 抓住(IOException e) { / /…… 虽然连接成功建立后,未加密的连接,可能是所有敏感数据发送或接收从服务器将读到意想不到的演员。 示例2 2022年,OT:冰崩研究调查了10个不同的操作技术(OT)供应商的产品。研究人员报道,56个漏洞,说产品是“不安全的设计”(ref - 1283]。如果这些漏洞利用,往往让对手改变产品运营,从拒绝服务改变产品执行的代码。因为这些产品经常被应用于行业,如电力、电气、水,和其他人,甚至会出现安全问题。 多个供应商使用明文传输的敏感信息的产品。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 602:客户端执行服务器端安全
视图定制的信息:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 这个例子包含客户端代码,检查如果用户身份验证成功之前发送一个命令。服务器端代码执行身份验证在一个步骤,并执行命令在一个单独的步骤。 客户端(client.pl)
(好的代码)
例如语言:Perl
美元服务器= " server.example.com ";
用户名=美元AskForUserName (); 密码=美元AskForPassword (); $地址= AskForAddress (); $袜子= OpenSocket(服务器1234美元); writeSocket(美元的袜子,“身份验证用户名密码美元\ n”); 美元$ resp = readSocket(袜子); 如果($ resp eq“成功”){ #用户名/通过有效,继续更新信息! writeSocket(美元的袜子,“改变地址用户名地址\ n”美元; 其他{
打印“错误:无效的认证! \ n”; }服务器端(server.pl):
(坏的代码)
$袜子= acceptSocket (1234);
(cmd美元,args) = ParseClientRequest($袜子); 如果(cmd eq美元“身份验证”){
(用户名,通过美元)=分裂(美元/ \ s + /参数,2);
结果=美元AuthenticateUser(用户名,通过美元); writeSocket(美元的袜子,“\ n”美元); #不关闭套接字失败;假设 #用户再试一次 elsif (cmd eq美元“改变地址”){
如果(validateAddress (args美元)){ }
(res = UpdateDatabaseRecord美元用户名、“地址”,args美元); }成功writeSocket(美元的袜子,“\ n”); 其他{
writeSocket(美元的袜子,“失败,地址是畸形\ n”); }服务器接受2命令,“身份验证”,对用户进行身份验证,和“改变地址”,更新地址字段的用户名。客户端执行身份验证,只有发送一个改变地址,用户如果认证成功。因为客户已经完成了认证,服务器假定改变地址的用户名是一样的经过身份验证的用户。攻击者可以修改客户端通过删除的代码发送“身份验证”命令,执行改变地址。 示例2 2022年,OT:冰崩研究调查了10个不同的操作技术(OT)供应商的产品。研究人员报道,56个漏洞,说产品是“不安全的设计”(ref - 1283]。如果这些漏洞利用,往往让对手改变产品运营,从拒绝服务改变产品执行的代码。因为这些产品经常被应用于行业,如电力、电气、水,和其他人,甚至会出现安全问题。 多个供应商使用客户端身份验证的产品。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 362:并发执行和不当使用共享资源同步(“竞争条件”)
视图定制的信息:
预计这可能有安全隐患时,同步是重要的安全代码,记录用户是否进行验证或修改等重要状态信息,不应该受到一个局外人。 竞态条件发生在并发环境中,有效的代码序列的属性。根据上下文,一个代码序列可能形式的函数调用,少量的指令,一系列的程序调用,等等。 竞态条件违反了这些属性,这是密切相关的:
竞态条件存在时,一个“干扰代码序列”仍然可以访问共享资源,违反排他性。程序员可能认为某些代码序列执行太快干扰影响的代码序列;当他们不是,这违反了原子性。例如,单一的“x + +”声明可能出现原子在代码层,但实际上它是非原子在指令层,因为它涉及到阅读(x)的原始值,其次是计算(x + 1),紧随其后的是一个写(将结果保存到x)。 干扰代码序列可能是“可信的”或“不可信”。一个trusted interfering code sequence occurs within the program; it cannot be modified by the attacker, and it can only be invoked indirectly. An untrusted interfering code sequence can be authored directly by the attacker, and typically it is external to the vulnerable program.
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 C(有时流行) c++(有时流行) Java(有时流行) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 这段代码可以用在电子商务应用程序支持账户之间的转账。需要转移的总量,将它发送到新的账户,从原来的账户扣除的金额。
(坏的代码)
例如语言:Perl
$ transfer_amount = GetTransferAmount ();
美元资产= GetBalanceFromDatabase (); 如果(transfer_amount < 0美元){
FatalError(“坏转移金额”); }美元newbalance =资产- transfer_amount美元; 如果((平衡- transfer_amount美元)< 0){
FatalError(“资金不足”); }SendNewBalanceToDatabase ($ newbalance); NotifyUser(“转移transfer_amount美元成功。”); NotifyUser(“新的平衡:$ newbalance”); 之间的竞争条件可能发生调用GetBalanceFromDatabase()和SendNewBalanceToDatabase ()。 100.00假设最初的平衡。攻击可以构造如下:
(攻击代码)
例如语言:其他
下面的伪代码,攻击者使两个同步调用的程序,CALLER-1 caller 2。调用者都是同样的用户帐户。
CALLER-1(攻击者)与规划1(实例处理CALLER-1)。caller 2与项目二相关联。 CALLER-1让80.00的转会申请。 规划1调用GetBalanceFromDatabase和设置平衡至100.00美元 规划1计算newbalance为20.00美元,然后调用SendNewBalanceToDatabase ()。 由于服务器负载很高,规划1调用SendNewBalanceToDatabase()遇到一个延迟。 caller 2让1.00的转会申请。 项目二调用GetBalanceFromDatabase()并设置平衡至100.00美元。这是因为之前的规划1请求尚未处理。 99.00项目二决定了新的平衡。 在最初的延迟之后,规划1提交其资产到数据库,设置为20.00。 项目二发送一个请求来更新数据库,设置平衡至99.00 在这个阶段,攻击者应该有一个平衡的19.00(由于价值81.00的转移),但平衡是99.00,记录在数据库中。 防止这一弱点,程序员有几个选项,包括使用一个锁来防止多个并发请求到web应用程序,或使用同步机制,包括所有的代码之间GetBalanceFromDatabase()和SendNewBalanceToDatabase ()。 示例2 以下函数试图获得一个锁,以执行操作在一个共享资源。
(坏的代码)
例如语言:C
空白f (pthread_mutex_t *互斥){
pthread_mutex_lock(互斥);
/ * * /访问共享资源 pthread_mutex_unlock(互斥); 然而,代码不检查pthread_mutex_lock()返回的值的错误。如果pthread_mutex_lock()由于任何原因无法获得互斥锁,功能可能引入竞争条件和导致未定义行为的程序。 为了避免数据竞争,正确的写程序必须检查的结果线程同步功能和妥善处理所有错误,通过试图恢复他们或报告他们更高的水平。
(好的代码)
例如语言:C
int f (pthread_mutex_t *互斥){
int结果;
结果= pthread_mutex_lock(互斥); 如果(0 ! =结果)
返回结果;
/ * * /访问共享资源 返回pthread_mutex_unlock(互斥); 示例3 假设一个处理器的内存管理单元(MMU)有5个其他影子MMU分配它的各种核心的工作负载。每个MMU的起始地址和结束地址访问内存。任何时候这个访问范围内变化(根据处理器的引导地位),主要的MMU的影子MMU发送更新消息。 假设互连结构不优先考虑这样的“更新”包比其他一般的流量包。这引入了竞争条件。如果攻击者可以用足够的信息,以便洪水目标的攻击数据包达到目标之前,新的访问范围更新,那么攻击者可以利用这个场景。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 250:执行与不必要的特权
视图定制的信息:
新的弱点暴露,因为使用额外的特权,如根或管理员,可以禁用正常安全检查被执行的操作系统或周围的环境。其他已存在的弱点可以变成安全漏洞,如果他们出现在操作提高特权。 权限管理功能可以在一些不那么显而易见的行为方式,他们有不同的特性在不同的平台上。如果你是这些矛盾尤其明显转变从一个非根用户到另一个地方。信号处理程序,并催生了进程运行在过程拥有的特权,如果作为根用户运行过程执行信号火灾或子流程时,信号处理器或子流程将使用root特权操作。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关观点“软件开发”(cwe - 699)
相关视图”架构概念”(cwe - 1008)
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 这段代码暂时提高了程序的权限允许用户创建一个新的文件夹。 在程序仅提高特权级别创建文件夹并立即再次降低,如果调用os.mkdir()抛出一个异常,调用lowerPrivileges()将不会发生。结果,计划无限期地在凸起的特权经营状态,可能导致出现进一步的开发。 示例2 下面的代码调用chroot()来限制应用程序下面的文件系统的一个子集APP_HOME为了阻止攻击者使用程序未经授权地访问文件位于其他位置。由用户指定的代码然后打开一个文件和过程文件的内容。
(坏的代码)
例如语言:C
chroot (APP_HOME);
目录(“/”); 文件*数据= fopen (argv [1],“r +”); … 限制应用程序的主目录内的过程在打开任何文件之前是一个宝贵的安全措施。然而,没有调用setuid()和一些非零值意味着应用程序继续与不必要的root特权操作。任何成功的利用由攻击者对应用程序现在可以导致特权升级攻击因为任何恶意操作将超级用户的权限执行。如果应用程序的特权级别滴一个非根用户,潜在的损失明显减少。 示例3 这个应用程序将使用用户的位置来确定用户的时区:
(坏的代码)
例如语言:Java
locationClient = new locationClient(这个,这个,这个);
locationClient.connect (); userCurrLocation位置; userCurrLocation = locationClient.getLastLocation (); setTimeZone (userCurrLocation); 这是不必要的使用位置的API,这些信息已经可以使用Android API。总是一定没有的另一种方式获得需要的信息在诉诸使用位置API。 示例4 这段代码使用位置来确定用户的当前我们国家的位置。 首先应用程序必须声明,它需要在应用程序的manifest.xml ACCESS_FINE_LOCATION许可:
(坏的代码)
例如语言:XML
< uses-permission android: name = " android.permission.ACCESS_FINE_LOCATION " / >
在执行期间,调用getLastLocation()将返回一个基于位置的应用程序的位置的权限。在这种情况下,应用程序允许最准确的位置:
(坏的代码)
例如语言:Java
locationClient = new locationClient(这个,这个,这个);
locationClient.connect (); userCurrLocation位置; userCurrLocation = locationClient.getLastLocation (); deriveStateFromCoords (userCurrLocation); 当应用程序需要这些信息,它不需要使用ACCESS_FINE_LOCATION许可,随着ACCESS_COARSE_LOCATION许可足以识别哪些我们国家的用户。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 359:暴露私人个人信息未经授权的演员
视图定制的信息:
有多种类型产品必须保护从攻击者的敏感信息,包括系统数据、通信、配置、商业秘密、知识产权、和个人的个人(私人)信息。私人的个人信息可能包括密码、电话号码、地理位置、个人信息、信用卡号码,等私人信息是很重要的考虑产品的人是一个用户,或处理的数据集的一部分产品。私人信息的曝光不一定防止产品工作正常,事实上暴露可能是由开发人员,例如数据共享与其他组织的一部分。然而,暴露个人隐私信息仍然可以不受欢迎或法律或法规所明确禁止的。 某些类型的私人信息包括:
PII其中一些信息可能描述为(个人身份信息)、受保护的健康信息(φ)等类别的私人信息可能重叠或随预期使用或特定行业的政策和做法。 有时不标记为私有的数据可以有隐私的含义在不同的上下文。例如,学生身份证号码通常不被认为是私人因为没有明确和公开的映射到单个学生的个人信息。然而,如果一个学校生成基于学生社会安全号码,身份证号码的识别号码应考虑私有的。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的代码包含一个日志记录语句跟踪记录的内容添加到数据库,存储在一个日志文件中。其他值,存储,getPassword()函数返回用户提供的明文密码与账户相关联。
(坏的代码)
例如语言:c#
通过= GetPassword ();
… dbmsLog。WriteLine(id + ":" + pass + ":" + type + ":" + tstamp); 上面的示例中的代码文件系统日志明文密码。尽管许多开发人员信任文件系统作为安全的数据存储位置,它不应该被信任含蓄,尤其是隐私是一个问题。 示例2 这段代码使用位置来确定用户的当前我们国家的位置。 首先应用程序必须声明,它需要在应用程序的manifest.xml ACCESS_FINE_LOCATION许可:
(坏的代码)
例如语言:XML
< uses-permission android: name = " android.permission.ACCESS_FINE_LOCATION " / >
在执行期间,调用getLastLocation()将返回一个基于位置的应用程序的位置的权限。在这种情况下,应用程序允许最准确的位置:
(坏的代码)
例如语言:Java
locationClient = new locationClient(这个,这个,这个);
locationClient.connect (); userCurrLocation位置; userCurrLocation = locationClient.getLastLocation (); deriveStateFromCoords (userCurrLocation); 当应用程序需要这些信息,它不需要使用ACCESS_FINE_LOCATION许可,随着ACCESS_COARSE_LOCATION许可足以识别哪些我们国家的用户。 示例3 2004年,一名员工在美国在线销售约9200万私人客户电子邮件地址到一个垃圾邮件发送者营销境外赌博网站(ref - 338]。为了应对这样的高调的利用,私人数据的收集和管理越来越规范。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
维护
这个条目重叠其他条目不围绕的那种敏感信息暴露。然而,由于隐私处理这样的重要性是由于法规和其他因素,它可能是有用的对于weakness-finding工具强调功能检测个人的私人信息,而不是系统信息,目前尚不清楚——和——这个条目应该弃用。
cwe - 200:暴露敏感信息的未经授权的演员
视图定制的信息:
有许多不同类型的错误,介绍信息曝光。错误的严重程度范围广泛,可以根据产品的上下文操作,透露敏感信息的类型,以及它可能提供给攻击者的利益。某些敏感信息包括:
对不同党派信息可能是敏感,每一种都可能有自己的预期是否应该受到保护的信息。这些政党包括:
信息曝光可以发生在不同的方式:
保密是常见的做法来描述任何损失作为“信息暴露,”但这可能导致过度使用cwe - 200CWE的映射。从CWE的角度来看,损失的机密性是一个技术的影响,可以来自几十个不同的弱点,如不安全的文件权限或界外阅读。cwe - 200及其底层的后代为了封面中发生的错误行为,明确管理、存储、传输或净化敏感信息。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的代码检查的有效性提供的用户名和密码并通知用户的成功或失败的登录。
(坏的代码)
例如语言:Perl
我的$ username =参数(用户名);
我的密码美元=参数(“密码”); 如果(IsValidUsername(用户名)= = 1) {
如果(IsValidPassword(用户名、密码)美元= = 1) }{
打印“登录成功”; }其他的 {
打印“登录失败,不正确的密码”; }其他的 {
打印“登录失败,未知的用户名”; }在上面的代码中,当一个不正确的用户名有不同的信息提供,而当用户名是正确的,但密码是错误的。这种差异使潜在的攻击者了解登录的状态函数,并可能允许攻击者发现一个有效的用户名通过尝试不同的值,直到返回不正确的密码信息。本质上,这使得攻击者更容易获得必要的身份验证凭证的一半。 虽然这种类型的信息对用户是有用的,也有用一个潜在的攻击者。在上面的示例中,消息都失败的情况下应该是一样的,如:
(结果)
“登录失败,错误的用户名或密码”
示例2 这段代码试图打开一个数据库连接,并打印任何发生的异常。
(坏的代码)
例如语言:PHP
尝试{
openDbConnection (); }/ /打印异常消息,包括异常消息和配置文件的位置 捕获(异常$ e) {
呼应了例外:,$ e - > getMessage (), ' \ n '; }回声,检查凭证在配置文件:“Mysql_config_location美元,' \ n '; 如果发生异常,则打印消息暴露的位置配置文件脚本使用。攻击者可以利用这些信息来目标配置文件(可能利用路径遍历的弱点)。如果文件可以读取,攻击者可以获得凭证访问数据库。攻击者还可以用恶意替换文件,导致应用程序使用一个任意的数据库。 示例3 在下面的示例中,该方法getUserBankAccount从数据库检索一个银行帐户对象使用提供的用户名和账号来查询数据库。如果一个SQLException提出查询数据库时,将创建一个错误消息输出到日志文件。
(坏的代码)
例如语言:Java
公共BankAccount getUserBankAccount(用户名的字符串,字符串accountNumber) {
BankAccount userAccount =零;
字符串查询=零; 尝试{
如果(isAuthorizedUser(用户名)){ }捕捉(SQLException ex) {
查询= " SELECT *从账户所有者= " }+用户名+”和accountID = " + accountNumber; DatabaseManager dbManager = new DatabaseManager (); 连接康涅狄格州= dbManager.getConnection (); =声明支撑conn.createStatement (); ResultSet queryResult = stmt.executeQuery(查询); userAccount = (BankAccount) queryResult.getObject (accountNumber);
字符串logMessage = "无法从数据库检索帐户信息,\ nquery:”+查询; }Logger.getLogger (BankManager.class.getName ()) . log(水平。严重,logMessage、交货); 返回userAccount; 创建的错误信息包括数据库查询的信息可能包含敏感信息的数据库或查询逻辑。在本例中,错误消息将公开数据库中使用的表名和列名。这些数据可以用来简化其他的攻击,如SQL注入(cwe - 89)直接访问数据库。 示例4 这个代码存储位置有关当前用户的信息:
(坏的代码)
例如语言:Java
locationClient = new locationClient(这个,这个,这个);
locationClient.connect (); currentUser.setLocation (locationClient.getLastLocation ()); … 捕获(异常e) {
AlertDialog。Builder builder = new AlertDialog.Builder(this); }构建器。setMessage(“对不起,这个应用程序经历了一个错误。”); AlertDialog警报= builder.create (); alert.show (); 日志。e (“ExampleActivity”、“捕获异常:“+ e +“在用户:”+ User.toString ()); 当应用程序遇到异常用户对象写入日志。因为用户对象包含位置信息,用户的位置也写入到日志。 示例5 下面是一个实际的MySQL错误语句:
(结果)
例如语言:SQL
警告:永久链接():拒绝访问的用户:‘root@localhost /usr/local/www/wi-data/includes/database.(使用密码:N1nj4)公司在4号线
错误显然暴露数据库证书。 例子6 这段代码在网页上显示一些信息。
(坏的代码)
例如语言:JSP
社会安全号码:< % = ssn % > < / br >信用卡号码:< % = ccn % >
代码显示一个用户的信用卡和社会安全号码,即使他们并不是绝对必要的。 例7 下面的程序基于调试标记改变它的行为。
(坏的代码)
例如语言:JSP
< %如果(Boolean.getBoolean (“debugEnabled”)) {
% >
用户帐号:< % = acctNo % > < % }% > 代码写敏感的调试信息到客户端浏览器如果“debugEnabled”标志被设置为true。 示例8 这段代码使用位置来确定用户的当前我们国家的位置。 首先应用程序必须声明,它需要在应用程序的manifest.xml ACCESS_FINE_LOCATION许可:
(坏的代码)
例如语言:XML
< uses-permission android: name = " android.permission.ACCESS_FINE_LOCATION " / >
在执行期间,调用getLastLocation()将返回一个基于位置的应用程序的位置的权限。在这种情况下,应用程序允许最准确的位置:
(坏的代码)
例如语言:Java
locationClient = new locationClient(这个,这个,这个);
locationClient.connect (); userCurrLocation位置; userCurrLocation = locationClient.getLastLocation (); deriveStateFromCoords (userCurrLocation); 当应用程序需要这些信息,它不需要使用ACCESS_FINE_LOCATION许可,随着ACCESS_COARSE_LOCATION许可足以识别哪些我们国家的用户。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
映射 使用映射:气馁(CWE ID不应该用来映射到实际的漏洞)。 理由是:cwe - 200常被误用来表示损失的机密性的弱点,但保密损失是一个技术的影响,而不是一个根源的错误。CWE 4.9,超过400 CWE条目会导致机密性的丧失。其他选项通常是可用的。(ref - 1287]。 评论:如果一个错误或错误导致信息披露,然后使用CWE ID的错误。考虑从授权不当(cwe - 285),不安全的权限(cwe - 732),不适当的身份验证(cwe - 287)等。还要考虑孩子等敏感信息插入发送数据(cwe - 201),可观察到的差异(cwe - 203),敏感信息插入可外部访问文件或目录(cwe - 538),或者其他人。 维护
映射分析的结果在2020年的前25位,最近的版本中,这个弱点正在审查,因为它是经常滥用映射来掩盖很多问题,导致损失的机密性。看到映射指出,扩展描述和备选项。
cwe - 939:不适当的授权方案在处理程序定义URL
视图定制的信息:
移动平台和其他体系结构允许使用自定义URL方案来促进应用程序之间的通信。在iOS的情况下,这是唯一的应用程序之间的通信方法。实现在开发人员的自由裁量权可能打开应用程序中的安全漏洞。一个例子可能是有潜在危险的功能,如通过一个定制的URL方案修改文件。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
示例1 这iOS应用程序使用一个定制的URL方案。replaceFileText行动在URL中计划允许外部应用程序接口文件incomingMessage。txt和替换内容的文本字段的查询字符串。 外部应用程序
(好的代码)
例如语言:objective - c
NSString * stringURL = @“appscheme: / / replaceFileText ?文件= incomingMessage.txt&text =你好”;
NSURL * url = [NSURL URLWithString stringURL):; [[UIApplication sharedApplication] openURL: url]; 应用程序的URL处理程序
(坏的代码)
——(BOOL)应用程序:UIApplication(*)应用handleOpenURL: url (NSURL *) {
如果url (!) { }
返回NO; }NSString *行动= [url主机]; 如果([行动isEqualToString: @ replaceFileText "]) {
NSDictionary * dict =[自我parseQueryStringExampleFunction: [url查询]]; }/ /该函数将内容写入指定的文件 FileObject * objectFile =[自我writeToFile: [dict objectForKey @“文件”):withText: [dict objectForKey: @“文本”]]; 返回YES; 处理程序没有限制谁可以使用它的功能。处理程序可以使用任何方法调用的URL调用处理程序,如以下恶意iframe嵌入在网页上打开了Safari。
(攻击代码)
例如语言:HTML
< iframe的src = " appscheme: / / replaceFileText ?文件= Bookmarks.dat&text = listOfMaliciousWebsites”>
攻击者可以举办一个恶意网站包含iframe,诱骗用户将网站通过一个精心网络钓鱼邮件。由于Safari自动执行iframes,不会提示用户处理程序执行iframe时自动调用URL处理程序的代码替换书签文件列表的恶意网站。由于replaceFileText是一个有潜在危险的行动,一个动作,修改数据,应该有一个检查前writeToFile: withText:函数。 示例2 这些Android和iOS应用程序拦截URL WebView中加载和执行特殊操作如果使用一个特定的URL方案,从而使Javascript WebView中交流与应用程序:
(坏的代码)
例如语言:Java
/ /安卓
@Override 公共布尔shouldOverrideUrlLoading (WebView视图中,字符串url) {
如果(url.substring (0, 14) .equalsIgnoreCase (examplescheme: ")) {
如果(url.substring (25) .equalsIgnoreCase (“getUserInfo”)) { }
writeDataToView(视图中,用户数据); }返回错误; 其他{
返回true; }
(坏的代码)
例如语言:objective - c
/ / iOS
(保龄球)webView:(UIWebView *) exWebView shouldStartLoadWithRequest: (NSURLRequest *) exRequest navigationType: exNavigationType (UIWebViewNavigationType) {
NSURL * URL = [exRequest URL];
如果([[URL方案]isEqualToString: @ " exampleScheme "]) {
resourceSpecifier NSString * functionString = [URL];
如果([functionString hasPrefix: @ " specialFunction "]) { / /使数据可用webview。 UIWebView * webView =[自我writeDataToView: [URL查询]]; 返回NO; 返回YES; 打个电话到本机代码可以由在URL传递参数:
(攻击代码)
例如语言:JavaScript
窗口。位置= examplescheme: / /方法? =参数值
因为应用程序不检查源,一个恶意网站加载在这个WebView有相同的访问API是一个可信任的网站。
cwe - 295:不当证书验证
视图定制的信息:
当一个证书是无效的或恶意的,它可能允许攻击者欺骗信任实体通过干涉主机和客户端之间的通信路径。软件可能会连接到一个恶意主机虽然认为这是一个可信的主机,或者软件可能欺骗接受欺骗似乎来自一个可信主机的数据。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 这段代码检查连接对等的证书。
(坏的代码)
例如语言:C
如果((cert = SSL_get_peer_certificate (ssl) & &主机)
foo = SSL_get_verify_result (ssl);
如果((X509_V_OK = = foo) | | X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN = = foo)) / /证书看起来不错,主机可以信任 在这种情况下,因为是自签名证书,没有外部权威可能是主人的身份。程序可以与欺骗主机不同的系统,如缓存DNS中毒或使用一个Adversary-in-the-Middle (AITM)攻击修改交通从服务器到客户端。 示例2 下面的OpenSSL代码获得一个证书,验证它。
(坏的代码)
例如语言:C
cert = SSL_get_peer_certificate (ssl);
如果(cert & & (SSL_get_verify_result (ssl) = = X509_V_OK)) { / /做秘密的事情 即使返回X509_V_OK“验证”的一步,这一步不包括检查常见的名字对主机的名称。也就是说,没有保证所需主机的证书。已建立SSL连接可能与恶意主机提供一个有效的证书。 示例3 下面的OpenSSL代码确保有一个证书,允许使用过期的证书。
(坏的代码)
例如语言:C
如果(cert = SSL_get_peer(证书(ssl)) {
foo = SSL_get_verify_result (ssl);
如果((X509_V_OK = = foo) | | (X509_V_ERR_CERT_HAS_EXPIRED = = foo)) / /做东西 如果调用SSL_get_verify_result()返回X509_V_ERR_CERT_HAS_EXPIRED,这意味着证书已经过期。随着时间的推移,越来越有可能对攻击者妥协证书。 示例4 下面的OpenSSL代码确保有一个证书在继续之前执行。
(坏的代码)
例如语言:C
如果(cert = SSL_get_peer_certificate (ssl)) {
/ /得到一个证书,做秘密的事情 因为这段代码不使用ssl_get_verify_result()检查证书,它可以接受证书被吊销(X509_V_ERR_CERT_REVOKED)。可以与一个恶意的主机进行通信的软件。 示例5 下面的OpenSSL代码确保主机有一个证书。
(坏的代码)
例如语言:C
如果(cert = SSL_get_peer_certificate (ssl)) {
/ /得到证书,主机可以信任 / / foo = SSL_get_verify_result (ssl); / /如果(X509_V_OK = = foo)…… 注意,代码不叫SSL_get_verify_result (ssl),这有效地禁用验证步骤检查证书。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 926:不当Android应用程序组件的出口
视图定制的信息:
不当的攻击和后果出口组件可能取决于导出的组件:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
有三种类型的组件,这些组件可以被导出的Android应用程序。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 此应用程序导出manifest.xml活动和服务:
(坏的代码)
例如语言:XML
<活动android: name = " com.example.vulnerableApp.mainScreen " >
… <意图过滤器>
<行动android: name = " com.example.vulnerableApp。OPEN_UI " / > < /意图过滤器><类别android: name = " android.intent.category.DEFAULT " / > … <服务android: name = " com.example.vulnerableApp.backgroundService " > … <意图过滤器>
<行动android: name = " com.example.vulnerableApp。START_BACKGROUND " / > < /意图过滤器>… 因为这些组件有意图过滤器,但并没有显式地设置“android:出口= false”清单中的其他地方,他们自动导出,以便任何其他应用程序可以启动它们。这可能会导致意想不到的行为或事迹。 示例2 这个应用程序创建了一个内容提供者应用程序中启用自定义搜索建议:
(坏的代码)
例如语言:XML
<供应商>
android: name = " com.example.vulnerableApp.searchDB " < /提供者>android:当局= " com.example.vulnerableApp.searchDB " > 因为这个内容提供者只打算在应用程序中使用,它不需要出口。然而,在Android 4.2之前,它是自动导出所以可能会允许恶意应用程序访问敏感信息。
cwe - 920:权力的不当限制消费
视图定制的信息:
等环境的嵌入式或移动设备,电力可以是一个有限的资源,比如电池,不能由软件自动补充本身,和设备并不总是直接附加到一个可靠的电源。如果软件使用权力过多过快,那么这可能会导致设备(软件),随后停止运转,直到电力恢复,或增加设备所有者的财务负担,因为电力成本增加。 应用程序的正常运行将消耗的力量。然而,在某些情况下,攻击者可能会导致应用程序消费比预期更多的权力,使用组件(如:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
cwe - 297:不当的验证证书与主机不匹配
视图定制的信息:
即使一个证书是格式良好的,签署和信任链,它可能仅仅是一个有效的证书比网站,不同的网站的软件是互动的。如果没有正确检查证书的寄主专一性的数据,如常见的名称(CN)的主题或主题的替代名称(SAN)扩展的证书,可以重定向或欺骗攻击允许恶意主机的有效证书提供数据,冒充一个可信的主机。为了确保数据完整性,证书必须是有效的,它必须与被访问的网站。 即使软件试图检查主机名,仍有可能不正确检查主机名。例如,攻击者可以创建一个证书的名称始于一个可信的名称,后跟一个空字节,这可能会导致一些基于字符串的比较,只有检查部分包含信任的名字。 这个弱点可能出现在软件使用证书寄,如果软件不验证主机名的证书是固定的。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的OpenSSL代码获得一个证书,验证它。
(坏的代码)
例如语言:C
cert = SSL_get_peer_certificate (ssl);
如果(cert & & (SSL_get_verify_result (ssl) = = X509_V_OK)) { / /做秘密的事情 即使返回X509_V_OK“验证”的一步,这一步不包括检查常见的名字对主机的名称。也就是说,没有保证所需主机的证书。已建立SSL连接可能与恶意主机提供一个有效的证书。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 925:不当验证意图的广播接收器
视图定制的信息:
某些类型的意图,被行动字符串,只能播放由操作系统本身,而不是第三方应用程序。然而,当应用程序注册接收这些隐式系统的意图,也是注册接收任何显式意图。而恶意应用程序不能发送一个隐式系统的意图,它可以发送一个显式意图到目标应用程序中,这可能会假定任何收到的意图是一个有效的隐式系统的意图,而不是从另一个应用程序显式意图。这可能会导致意想不到的行为。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的例子显示出,需求不足。
(坏的代码)
例如语言:XML
<清单包= " com.example.vulnerableApplication " >
<应用>
…
<接收机android: name = " .ShutdownReceiver " >
<意图过滤器> < /接收器>
<行动android: name = " android.intent.action.ACTION_SHUTDOWN " / > < /意图过滤器>… < /应用程序> ShutdownReceiver类将处理的目的:
(坏的代码)
例如语言:Java
… IntentFilter过滤器= new IntentFilter (Intent.ACTION_SHUTDOWN); BroadcastReceiver sReceiver = new ShutDownReceiver (); registerReceiver (sReceiver、过滤); … 公开课ShutdownReceiver BroadcastReceiver{延伸
@Override }公共空间onReceive(最后的上下文语境,最终目的意图){
mainActivity.saveLocalData (); }mainActivity.stopActivity (); 因为方法不确定意图行动预计系统意图,任何收到意图将触发关闭程序,如下所示:
(攻击代码)
例如语言:Java
窗口。位置= examplescheme: / /方法? =参数值
攻击者可以使用此行为导致拒绝服务。
cwe - 940:不当验证源的通信通道
视图定制的信息:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 这个Android应用程序会删除一个用户帐户时收到一个这样做的意图:
(坏的代码)
例如语言:Java
IntentFilter过滤器= new IntentFilter (“com.example.RemoveUser”);
MyReceiver接收机= new MyReceiver (); registerReceiver(接收机、过滤); 公开课DeleteReceiver BroadcastReceiver{延伸
@Override }公共空间onReceive(上下文语境,意图意图){
int userID = intent.getIntExtra(“标识”); }destroyUserData (userID); 这个应用程序不检查意图的起源,从而允许任何恶意应用程序删除一个用户。总是检查一个意图的起源,或创建一个使用manifest allowlist受信任的应用程序。xml文件。 示例2 这些Android和iOS应用程序拦截URL WebView中加载和执行特殊操作如果使用一个特定的URL方案,从而使Javascript WebView中交流与应用程序:
(坏的代码)
例如语言:Java
/ /安卓
@Override 公共布尔shouldOverrideUrlLoading (WebView视图中,字符串url) {
如果(url.substring (0, 14) .equalsIgnoreCase (examplescheme: ")) {
如果(url.substring (25) .equalsIgnoreCase (“getUserInfo”)) { }
writeDataToView(视图中,用户数据); }返回错误; 其他{
返回true; }
(坏的代码)
例如语言:objective - c
/ / iOS
(保龄球)webView:(UIWebView *) exWebView shouldStartLoadWithRequest: (NSURLRequest *) exRequest navigationType: exNavigationType (UIWebViewNavigationType) {
NSURL * URL = [exRequest URL];
如果([[URL方案]isEqualToString: @ " exampleScheme "]) {
resourceSpecifier NSString * functionString = [URL];
如果([functionString hasPrefix: @ " specialFunction "]) { / /使数据可用webview。 UIWebView * webView =[自我writeDataToView: [URL查询]]; 返回NO; 返回YES; 打个电话到本机代码可以由在URL传递参数:
(攻击代码)
例如语言:JavaScript
窗口。位置= examplescheme: / /方法? =参数值
因为应用程序不检查源,一个恶意网站加载在这个WebView有相同的访问API是一个可信任的网站。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 941:不正确地指定目的地通信通道
视图定制的信息:
攻击者在目的地可以恶搞受信任的服务器窃取数据或引起拒绝服务。 至少有两个不同的弱点,会导致软件与一个意想不到的目的地:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定) 示例1 这段代码监听一个端口上的DNS请求并将结果发送给请求的地址。
(坏的代码)
例如语言:Python
袜子= socket.socket(插座。AF_INET socket.SOCK_DGRAM)
袜子。绑定((UDP_IP UDP_PORT)) 而真正的:
data = sock.recvfrom (1024)
如果没有数据:
打破
(requestIP nameToResolve) = parseUDPpacket(数据) 记录= resolveName (nameToResolve) sendResponse (requestIP记录) 这段代码将DNS记录发送给请求的IP地址。UDP允许容易改变源IP地址(“欺骗”),从而允许攻击者重定向响应一个目标,这可能是被网络流量。
cwe - 511:逻辑/定时炸弹
视图定制的信息:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 772:失踪后释放资源的有效寿命
视图定制的信息:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
相关的视图”方案及质量的措施(2020)”(CWE-1305)
相关的视图”方案及数据保护措施”(cwe - 1340)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的方法永远不会关闭文件句柄。给予足够的时间,最终BufferReader的Finalize()方法应该调用关闭(),但没有保证这个动作需要多长时间。事实上,没有保证Finalize()方法会被调用。在忙碌的环境中,操作系统可以使用所有可用的文件句柄前关闭()函数。
(坏的代码)
例如语言:Java
私人空间processFile(字符串帧)
{
BufferReader费尔= new BufferReader(新FileReader(帧)); }字符串行; 在((= fil.ReadLine行())! = null) {
processLine(线); }良好的代码示例简单地添加一个显式的调用关闭()函数使用文件系统完成后。在这样的一个简单的例子很容易看到并修复问题。在实际系统中,这个问题可能更为模糊。
(好的代码)
例如语言:Java
私人空间processFile(字符串帧)
{
BufferReader费尔= new BufferReader(新FileReader(帧)); }字符串行; 在((= fil.ReadLine行())! = null) {
processLine(线); }fil.Close (); 示例2 下面的代码试图打开一个新连接到一个数据库,数据库返回的处理结果,并关闭SqlConnection对象分配。
(坏的代码)
例如语言:c#
SqlConnection康涅狄格州= new SqlConnection (connString);
SqlCommand cmd = new SqlCommand(参数); cmd。Connection = conn; conn.Open (); SqlDataReader rdr = cmd.ExecuteReader (); HarvestResults (rdr); conn.Connection.Close (); 上面的代码的问题是,如果发生异常时执行的SQL或处理结果,SqlConnection对象不是封闭的。如果经常出现这种情况,数据库将耗尽可用的游标和无法执行任何更多的SQL查询。 示例3 这段代码试图打开一个连接到一个数据库并抓住任何可能发生的异常。
(坏的代码)
例如语言:Java
尝试{
连接= DriverManager.getConnection监狱(some_connection_string); }捕获(异常e) {
日志(e); }如果发生异常后建立数据库连接在同一连接关闭之前,数据库连接池可能会变得疲惫。如果超出可用连接的数量,其他用户不能访问这个资源,有效地拒绝访问应用程序。 示例4 在正常情况下以下c#代码执行一个数据库查询,处理数据库返回的结果,并关闭SqlConnection对象分配。但如果发生异常时执行的SQL或处理结果,SqlConnection对象不是封闭的。如果经常出现这种情况,数据库将耗尽可用的游标和无法执行任何更多的SQL查询。
(坏的代码)
例如语言:c#
…
SqlConnection康涅狄格州= new SqlConnection (connString); SqlCommand cmd = new SqlCommand(参数); cmd。Connection = conn; conn.Open (); SqlDataReader rdr = cmd.ExecuteReader (); HarvestResults (rdr); conn.Connection.Close (); … 示例5 下面的C函数不关闭文件句柄打开如果出现错误。如果长期存在的过程,这个过程可以运行文件句柄。
(坏的代码)
例如语言:C
int decodeFile (char *帧){
字符缓冲区(BUF_SZ);
文件* f = fopen(帧,“r”); 如果(f) {
printf(“不能打开% s \ n”、帧); }返回DECODE_FAIL; 其他{
而(fgets (buf BUF_SZ f)) {
如果(! checkChecksum (buf)) { }
返回DECODE_FAIL; }其他{
decodeBlock (buf); }文件关闭(f); 返回DECODE_SUCCESS;
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 672:过期或释放后操作资源
视图定制的信息:
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的代码显示了一个简单的例子,一个用自由后错误:
(坏的代码)
例如语言:C
char * ptr = (char *) malloc(大小);
如果(err) {
abrt = 1; }免费(ptr); … 如果(abrt) {
logError(“操作中止之前提交”,ptr); }当一个错误发生时,立即释放的指针。然而,这个指针是后来logError函数中使用不正确。 示例2 下面的代码显示了一个简单的双自由错误的例子:
(坏的代码)
例如语言:C
char * ptr = (char *) malloc(大小);
… 如果(abrt) {
免费(ptr); }… 免费(ptr); 双自由漏洞有两个共同的(有时是重叠的)原因:
虽然有些双自由漏洞并不比前面的例子复杂得多,大多数分布在数百行代码,甚至不同的文件。程序员似乎特别容易释放全局变量不止一次。 示例3 在接下来的C / c++例子processMessage方法用于处理消息收到输入数组的字符数组。输入消息包含两个字符数组:数组的长度是第一个消息,第二身体的消息。信息检索和使用的长度为当地一个char数组分配足够的内存,messageBody,创建消息体。processMessageBody messageBody处理的方法将返回一个错误,如果一个错误发生在处理。如果发生错误,那么返回的结果变量设置为显示一个错误和messageBody char数组内存使用免费的方法释放一个错误消息被发送到logError方法。
(坏的代码)
例如语言:C
#定义失败0
#定义成功1 #定义错误1 #定义MAX_MESSAGE_SIZE 32 int processMessage (char * *消息) {
int结果=成功;
int长度= getMessageLength(消息[0]); char * messageBody; 如果(长度(长度> 0)& & (< MAX_MESSAGE_SIZE)) {
messageBody = (char *) malloc(长度* sizeof (char));
messageBody =消息[1][0]; int成功= processMessageBody (messageBody); 如果成功= =错误){
结果=错误; }免费(messageBody); 其他{
printf("无法处理消息;无效的消息长度”); }结果=失败; 如果结果= =错误){
logError(“错误处理消息”,messageBody); }返回结果; 然而,调用方法logError包括内存后的messageBody messageBody使用免费的方法已被释放。这可能会导致意想不到的结果,可能导致系统崩溃。一个变量后不应该使用它的内存资源被释放。
(好的代码)
例如语言:C
…
messageBody = (char *) malloc(长度* sizeof (char)); messageBody =消息[1][0]; int成功= processMessageBody (messageBody); 如果成功= =错误){
结果=错误; }logError(“错误处理消息”,messageBody); 免费(messageBody); …
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 921:存储的敏感数据没有访问控制机制
视图定制的信息:
虽然许多现代文件系统或设备使用某种形式的访问控制来限制访问数据,不是所有的存储机制都有这种功能。例如,记忆卡、软盘、cd, USB设备通常是由系统内的任何用户访问。这可以成为一个问题,当敏感数据存储在这些机制在多用户环境中,因为任何人在系统上可以读或写数据。 在Android设备上,外部存储通常是在全球范围内可由其他应用程序在设备上读和写。外部存储器也可以方便的通过移动设备的USB连接或身体通过设备的记忆卡端口来访问。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
cwe - 798:使用硬编码的凭证
视图定制的信息:
硬编码的证书通常创建一个巨大的洞,允许攻击者绕过身份验证配置的软件管理员。这个洞可能是系统管理员很难检测到。即使发现,很难解决,所以管理员可能会被迫完全禁用产品。主要有两个变化:
入站:软件包含身份验证机制,检查输入凭证对一套硬编码的凭证。
出站:软件连接到另一个系统或组件,它包含硬编码连接到该组件的凭证。
在入站变体,一个默认的政府创建账户,和一个简单的密码是硬编码到产品和与该账户关联。这个硬编码的密码是相同的对于每一个产品的安装,它通常由系统管理员无法改变或禁用没有手动修改程序,或修补软件。如果密码是发现或发表(一个在互联网上常见),然后有人用这个密码就可以访问产品的知识。最后,因为所有安装的软件将有相同的密码,甚至在不同的组织中,这使得大规模攻击如蠕虫。 出站变体适用于前端与后端服务系统进行身份验证。后端服务可能需要一个固定的密码,可以很容易地发现。程序员可能只是硬编码这些后端凭证到前端的软件。任何用户的程序可以提取密码。客户端使用硬编码的密码系统构成更大的威胁,因为密码的提取从一个二进制通常是非常简单的。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关观点“软件开发”(cwe - 699)
简化映射的相关视图”缺点漏洞发布”(cwe - 1003)
相关视图”架构概念”(cwe - 1008)
相关的视图”方案及质量的措施(2020)”(CWE-1305)
相关的视图”方案及数据保护措施”(cwe - 1340)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定) 类:ICS /不(通常是普遍的)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的代码使用一个硬编码的密码连接到一个数据库:
(坏的代码)
例如语言:Java
…
DriverManager。getConnection (url,”斯科特”、“老虎”); … 这是一个例子的外部硬编码的密码的客户端连接。这段代码将成功运行,但访问的人都将获得密码。项目已经运送,没有从数据库返回的用户与密码“斯科特”“老虎”,除非程序打补丁。狡猾的员工访问此信息可以使用它来进入系统。更糟糕的是,如果攻击者可以访问应用程序的字节码,他们可以使用javap - c命令访问反汇编代码,它将包含的值所使用的密码。这个操作的结果可能类似于上面的示例如下:
(攻击代码)
javap - c ConnMngr.class
22:ldc # 36;/ /字符串jdbc: mysql / /ixne.com/rxsql
24:ldc # 38;/ /字符串斯科特 26日:ldc # 17;/ /字符串老虎 示例2 下面的代码的一个例子是一个内部后端中硬编码的密码:
(坏的代码)
例如语言:C
int VerifyAdmin (char *密码){
如果(strcmp(密码,“海鸥!”)){
printf("口令不正确! \ n ");
返回(0) printf("进入诊断模式…\ n”); 返回(1);
(坏的代码)
例如语言:Java
int VerifyAdmin(字符串密码){
如果(! password.equals(新!)){ }
返回(0) }/ /诊断模式 返回(1); 这个项目的每个实例可以放入诊断模式使用相同的密码。更糟的是,如果这个项目分布的二进制只读分布符合,很难改变密码或禁用这个功能。” 示例3 下面的代码示例尝试使用硬编码的加密密钥来验证密码。
(坏的代码)
例如语言:C
int VerifyAdmin (char *密码){
如果比较字符串(密码“68”af404b513073584c4b6f22b6c63e6b)) {
printf("口令不正确! \ n "); 返回(0); printf("进入诊断模式…\ n”); 返回(1);
(坏的代码)
例如语言:Java
公共布尔VerifyAdmin(字符串密码){
如果(password.equals (“68”af404b513073584c4b6f22b6c63e6b)) {
system . out。println(“进入诊断模式…”); }返回true; system . out。println(“不正确的密码!”); 返回错误;
(坏的代码)
例如语言:c#
int VerifyAdmin(字符串密码){
如果(password.Equals (“68”af404b513073584c4b6f22b6c63e6b)) { }
控制台。WriteLine("Entering Diagnostic Mode..."); }返回(1); 控制台。WriteLine("Incorrect Password!"); 返回(0); 加密密钥是在一个硬编码的字符串值相比密码。很可能攻击者将能够阅读的关键系统和妥协。 示例4 下面的例子展示的部分属性和配置文件为Java和ASP。网络应用程序。文件包含用户名和密码信息,但他们在明文存储。 这个Java示例显示了一个属性文件明文用户名/密码对。
(坏的代码)
例如语言:Java
# Java Web应用程序ResourceBundle属性文件 … webapp.ldap.username = secretUsername webapp.ldap.password = secretPassword … 下面的例子展示了一个配置文件的一部分ASP。网络应用程序。这个配置文件包含连接到数据库的用户名和密码信息,但对存储在明文。
(坏的代码)
例如语言:ASP.NET
…
< connectionStrings >
<添加名称= connectionString =“ud_DEV connectDB = uDB;uid = db2admin;pwd =密码;dbalias = uDB; System.Data providerName =。Odbc " / > < / connectionStrings >… 用户名和密码信息不应包括在一个配置文件或一个属性文件明文这将允许任何人可以读取文件访问资源。如果可能的话,这个信息加密。 示例5 2022年,OT:冰崩研究调查了10个不同的操作技术(OT)供应商的产品。研究人员报道,56个漏洞,说产品是“不安全的设计”(ref - 1283]。如果这些漏洞利用,往往让对手改变产品运营,从拒绝服务改变产品执行的代码。因为这些产品经常被应用于行业,如电力、电气、水,和其他人,甚至会出现安全问题。 多个供应商使用硬编码的证书在他们的产品。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
cwe - 927:为敏感通信使用隐式意图
视图定制的信息:
因为一个隐式意图不指定一个特定的应用程序来接收数据,任何应用程序可以通过使用一个意图过滤器处理的意图,意图。这可以允许不受信任的应用程序获得敏感数据。有两种不同的标准广播意图,命令和粘性。 命令广播意图传递的一系列注册接收器的顺序优先宣布的接收器。恶意接收方可以给自己一个高优先级,造成拒绝服务进一步通过阻止广播传播链。还有恶意数据修改的可能性,作为一个接收器也可能改变数据在意图传递给下一个接收方之前。下游组件无法断言早些时候没有改变的数据链。 粘性广播意图保持在最初的广播。老粘性意图将再次播放任何新的接收器注册它在未来,大大增加信息的机会接触。同时,粘性广播不能保护权限,可能适用于其他类型的意图。 此外,任何广播意图可能包括一个URI引用数据接收组件通常没有权限访问。发送方的意图可以包括特权授予接收方读或写访问特定的URI中包含的意图。恶意接收方拦截这个意图也将获得这些特权,可以读或写的资源在指定的URI。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定) 技术 类:移动患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 这个应用程序想要创建一个用户帐户在几个受信任应用程序使用一个广播意图:
(坏的代码)
例如语言:Java
目的意图= new意图();
intent.setAction (“com.example.CreateUser”); 意图。putExtra(“用户名”,uname_string); 意图。putExtra(“密码”,pw_string); sendBroadcast(意图); 这个应用程序假定只有受信任应用程序将监听行动。恶意应用程序可以注册这个动作,拦截用户的登录信息,如下:
(攻击代码)
例如语言:Java
IntentFilter过滤器= new IntentFilter (“com.example.CreateUser”);
MyReceiver接收机= new MyReceiver (); registerReceiver(接收机、过滤); 当广播包含敏感信息,创建一个allowlist的应用程序可以使用应用程序的清单文件接收行动,或通过编程的方式将每个目的意图接收器。 示例2 这个应用程序与web服务接口,需要一个单独的用户登录。它创建一个粘稠的意图,所以未来还受信任的应用程序使用web服务将知道当前用户是谁:
(坏的代码)
例如语言:Java
目的意图= new意图();
intent.setAction (“com.example.service.UserExists”); 意图。putExtra(“用户名”,uname_string); sendStickyBroadcast(意图);
(攻击代码)
例如语言:Java
IntentFilter过滤器= new IntentFilter (“com.example.service.UserExists”);
MyReceiver接收机= new MyReceiver (); registerReceiver(接收机、过滤); 粘性的广播可以读任何应用程序在任何时候,所以不应该包含敏感信息,比如用户名。 示例3 此应用程序发送一个有序广播,让其他应用程序打开一个网址:
(坏的代码)
例如语言:Java
目的意图= new意图();
intent.setAction (“com.example.OpenURL”); 意图。putExtra (“URL_TO_OPEN”, url_string); sendOrderedBroadcastAsUser(意图); 广播链可能改变数据的任何应用程序内的意图。这个恶意应用程序改变URL指向一个攻击网站:
(攻击代码)
例如语言:Java
公开课CallReceiver BroadcastReceiver{延伸
@Override }公共空间onReceive(上下文语境,意图意图){
字符串Url = intent.getStringExtra (Intent.URL_TO_OPEN); }attackURL = "www.example.com/attack?”+Url; setResultData (attackURL); 最后接收应用程序将打开攻击URL。在可能的情况下,意图发送给特定的受信任应用程序而不是使用广播链。 示例4 这个应用程序发送一个特殊目的的国旗允许接收应用程序读取数据文件进行备份。
(坏的代码)
例如语言:Java
目的意图= new意图();
intent.setAction (“com.example.BackupUserData”); intent.setData (file_uri); intent.addFlags (FLAG_GRANT_READ_URI_PERMISSION); sendBroadcast(意图);
(攻击代码)
例如语言:Java
公开课CallReceiver BroadcastReceiver{延伸
@Override }公共空间onReceive(上下文语境,意图意图){
用户数据Uri = intent.getData (); }stealUserData(用户数据); 任何恶意应用程序可以注册以接收此意图。因为FLAG_GRANT_READ_URI_PERMISSION包括目的,恶意接收方代码可以读取用户的数据。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
更多的信息是可用的,请选择一个不同的过滤器。
|
使用常见的弱点枚举(CWE)和相关的引用从这个网站的使用条款。CWE赞助的美国国土安全部(DHS)网络和基础设施安全机构(CISA)和管理的国土安全系统工程和发展研究所这是由(HSSEDI)manbetx客户端首页(斜方)。版权©2006 - 2023,斜方公司。manbetx客户端首页CWE、水煤浆、CWRAF, CWE标志是斜方公司的商标。manbetx客户端首页 |