描述
重要的产品指定权限安全资源的方式允许读取或修改资源意想不到的演员。
扩展描述
当资源权限设置,提供更广泛的演员比要求,可能导致暴露敏感信息,或修改资源通过意想不到的聚会。这是尤其危险的相关项目配置资源时,执行,用户数据或敏感。例如,考虑为云存储账户,允许或者可以覆盖以提供公共(即。匿名)访问。
的关系
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
自然 |
类型 |
ID |
的名字 |
ChildOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
668年 |
曝光资源错误的球体 |
ChildOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
285年 |
不适当的授权 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
276年 |
不正确的默认权限 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
277年 |
不安全的继承权限 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
278年 |
不安全的保存继承权限 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
279年 |
不正确的Execution-Assigned权限 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
281年 |
保存不当的权限 |
ParentOf |
变体——一个弱点与某种类型的产品,通常涉及到一个特定的语言或技术。更具体的比基本的弱点。变异水平弱点通常描述问题的3到5以下维度:行为、财产、技术、语言,和资源。 |
1004年 |
敏感的饼干没有“HttpOnly”标志 |
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关视图”架构概念”(cwe - 1008)
自然 |
类型 |
ID |
的名字 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1011年 |
授权的演员 |
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
架构和设计 |
|
实现 |
实现:造成这一弱点在建筑安全策略的实施。 开发人员可能会使某些假设的环境产品操作——例如,软件是运行在一个单用户系统,或软件可信的管理员才可以访问。当软件运行在一个不同的环境,成为一个问题的权限。 |
安装 |
开发人员可能会释放权限以最小化问题当用户第一次运行程序,然后创建文档说明权限应该收紧。因为系统管理员和用户并不总是阅读文档,这会导致不安全的权限不变。 |
操作 |
|
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
保密
|
攻击者可以读取敏感信息相关的资源,如凭证或配置信息存储在一个文件中。 |
|
访问控制
|
攻击者可能会修改关键属性关联的资源来获得特权,如取代一个人人可写的可执行的特洛伊木马。 |
|
完整性 其他
|
攻击者可能会破坏或腐败的关键数据相关的资源,如从数据库删除记录。 |
|
利用的可能性
示范例子
示例1
下面的代码流程的umask设置为0之前创建一个文件并写“Hello world”文件。
#定义外部档案“hello.out”
umask (0); 文件*;
/ *忽略链接后(CWE-59)简洁* /
= fopen(输出文件,“w”); 如果(){
流(,“hello world ! \ n”); fclose (); }
UNIX系统上运行此程序后,运行“ls - l命令会返回以下输出:
-rw-rw-rw - 1用户名13 11月24 17:58 hello.out
“rw-rw-rw——”字符串表示所有者,集团,世界(所有用户)可以读取文件和写。
示例2
这段代码创建一个新用户的主目录,并使该用户目录的所有者。如果不能由用户新目录,目录被删除。
函数createUserDir(用户名){
路径=“/ home /”。美元的用户名; 如果(! mkdir(路径)美元){
返回错误; } 如果(!乔恩(路径,用户名美元)){
删除目录($路径); 返回错误; } 返回true; }
因为省略可选的“模式”参数调用mkdir(),创建了目录默认权限0777。简单地设置新用户目录的所有者并不显式地改变目录的权限,让它与违约。这个默认允许任何用户读取和写入的目录,允许攻击用户的文件。代码也未能改变目录的所有者组,这可能会导致意想不到的团体访问。
这段代码也可能容易受到路径遍历(CWE-22)攻击,如果攻击者提供一个非字母数字用户名。
示例3
下面的代码片段可能用作监测定期记录一个网站是否还活着。确保文件总是可以修改,代码使用chmod()使人人可写的文件。
$ fileName =“secretFile.out”;
如果(- e文件名美元){
chmod 0777美元文件名; }
我outFH美元; 如果(!open (outFH美元,> > $ fileName)) {
ExitError(“不能添加文件名:美元!”); } 我的$ dateString = FormatCurrentTime (); 我的美元地位= IsHostAlive (“cwe.mitre.org”); 印刷美元outFH " $ dateString cwe状态:美元地位! \ n”; 关闭($ outFH);
程序第一次运行时,它会创建一个新文件继承的权限从它的环境。一个文件清单的样子:
-rw-r - r - 1用户名13 11月24 17:58 secretFile.out
这个清单可能发生当用户默认umask 022,这是一种常见的设置。根据文件的性质,用户可能没有打算让它可读的系统。
下次程序运行,然而——和所有后续执行chmod将设置文件的权限,以便主人,集团和世界(所有用户)可以读和写的文件:
-rw-rw-rw - 1用户名13 11月24 17:58 secretFile.out
也许程序员试图这样做是因为不同的过程使用不同的权限,可能防止文件被更新。
示例4
以下命令递归地设置全局权限的目录和所有的孩子们:
如果这个命令运行的程序,调用程序的人可能不希望所有目录下的文件将被公开。如果目录将包含私有数据,这可能会成为一个安全的问题。
观察到的例子
参考 |
描述 |
|
去申请云管理创建一个人人可写的sudoers文件,允许本地攻击者注入sudo规则和升级特权根夺冠的条件。 |
|
反病毒产品集安全“每个人:完全控制权限“程序文件”文件夹下的文件,允许攻击者可执行文件替换为特洛伊木马。 |
|
产品在安装与0777年创建目录权限,允许用户获得特权和访问一个套接字用于身份验证。 |
|
图片编辑器安装一个服务与一个不安全的安全描述符,允许用户停止或启动服务,或执行命令系统。 |
|
套接字创建安全权限 |
|
库函数将一个文件复制到一个新的目标,并使用源文件的权限为目标,这是不正确的源文件是一个符号链接时,通常有0777个权限。 |
|
设备驱动程序为一个套接字文件使用人人可写的权限,允许攻击者注入任意命令。 |
|
LDAP服务器将明文密码存储在一个全局文件。 |
|
终端模拟器创建TTY设备人人可写的权限,允许攻击者编写其他的终端用户。 |
|
VPN产品用户凭证存储在注册表键”每个人:完全控制权限,允许攻击者窃取的凭证。 |
|
驱动程序安装设备接口的每个人:写权限。 |
|
驱动程序安装文件,人人可写的权限。 |
|
产品更改权限0777删除前备份;不待后续备份的权限。 |
|
产品创建一个与每个人:完全控制权限,允许任意的程序执行。 |
|
产品使用“每个人:完全控制”,对内存映射文件的权限(共享内存)在进程间通信,允许攻击者篡改会话。 |
|
数据库产品对每个人都使用读/写权限的共享内存,允许盗窃的凭证。 |
|
安全产品使用“每个人:完全控制权限的配置文件。 |
|
“每个人:完全控制权限分配给一个互斥对象允许用户禁用网络连接。 |
|
链:数据库产品包含缓冲区溢出,只是可以通过. ini配置文件——“每个人:完全控制权限。 |
潜在的缓解措施
实施阶段:
当使用一个关键资源,如一个配置文件,检查资源是否有不安全的权限(如被任何普通用户可以修改)( ref - 62),并生成一个错误,甚至退出软件如果有可能资源可能被未经授权的修改。 |
阶段:体系结构和设计
将软件划分为匿名的,正常的,特权和行政区域。减少攻击表面通过仔细定义不同的用户组,特权和/或角色。地图这些对数据、功能和相关资源。然后设置相应的权限。这将允许您维护更细粒度的控制你的资源。( ref - 207]
注意:这可以是一个很有效的策略。然而,在实践中,它可能难以或者耗费时间来定义这些领域有很多不同的资源或当用户类型,或者应用程序特性变化迅速。 |
阶段:体系结构和设计;操作
运行代码的“监狱”或类似沙箱环境执行严格的流程和操作系统之间的边界。这可能有效地限制哪些文件可以在一个特定的目录或访问哪些命令可以执行的软件。
操作系统的例子包括Unix chroot监狱,AppArmor对,SELinux。在一般情况下,托管代码可能会提供一些保护。例如,java。在Java SecurityManager FilePermission允许软件指定文件操作的限制。
这可能不是一个可行的解决方案,它只限制对操作系统的影响;应用程序的其余部分可能仍然接受妥协。
注意:这种缓解的有效性取决于特定的沙盒或监狱的预防功能使用,只可能有助于减少攻击的范围,比如限制攻击者对特定文件系统的系统调用或限制部分,可以访问。 |
阶段:实施;安装
在程序启动时,显式地设置默认的权限或umask最为严格的设置。在程序安装设置适当的权限。这将阻止你继承安全权限的任何用户安装或运行程序。
|
阶段:系统配置
所有配置文件、可执行文件和库,确保他们只可读和可写软件的管理员。
|
阶段:文档
不建议不安全配置更改文档,尤其是如果这些配置可以扩展到资源和其他项目范围以外的应用程序。 |
阶段:安装
不要认为系统管理员将手动更改配置设置手册中推荐的软件。 |
阶段:操作;系统配置
确保联邦核心配置桌面下的软件运行正常(FDCC) [ ref - 199或一个等价的硬化配置指南,许多组织使用限制部署软件的攻击表面和潜在风险。 |
检测方法
自动静态分析
自动静态分析可以有效地探测许可问题系统资源(如文件、目录、共享内存,设备接口,等自动化技术可以检测使用的库函数修改权限,然后分析函数调用的参数包含潜在的不安全的值。
目的然而,由于软件的安全策略可能允许松散的某些操作的权限(如发布web服务器上的文件),自动静态分析可能产生一些假阳性,即。警告,没有任何安全后果或需要任何代码更改。
当使用自定义权限模型,如定义谁可以阅读信息在一个特定的论坛在电子布告栏系统——这些可以使用自动静态分析难以检测。可以定义自定义签名识别任何自定义函数实现权限检查和作业。
|
自动动态分析
自动动态分析可以有效地探测许可问题系统资源(如文件、目录、共享内存,设备接口等。
目的然而,由于软件的安全策略可能允许松散的某些操作的权限(如发布web服务器上的文件),自动动态分析可能会产生一些假阳性,即。警告,没有任何安全后果或需要任何代码更改。
当使用自定义权限模型,如定义谁可以阅读信息在一个特定的论坛在电子布告栏系统——这些可能很难检测使用自动化的动态分析。可以定义自定义签名识别任何自定义函数实现权限检查和作业。
|
手动分析
这个弱点可以检测使用的工具和技术,需要手动(人类)的分析,如渗透测试、威胁建模和交互工具,允许测试人员记录和修改一个活跃的会话。
注意:这些可能是更有效的比严格的自动化技术。尤其如此弱点设计和相关的业务规则。 |
人工静态分析
人工静态分析可以有效地检测自定义权限模型的使用和功能。代码可以检查确定使用相关功能。然后人类分析师可以评价作业许可的软件的安全模型。 |
手动动态分析
手动动态分析可以有效地检测自定义权限模型的使用和功能。程序可以执行重点锻炼代码路径相关的自定义权限。然后人类分析师可以评价作业许可的软件的安全模型。 |
起毛
起毛不是有效地检测这一弱点。 |
黑盒
使用监控工具,检查软件的流程与操作系统交互和网络。这种技术的情况很有用的源代码不可用,如果软件并不是由你,或者如果你想验证构建阶段并没有引入任何新的弱点。例子包括调试器直接附加到正在运行的进程;系统调用跟踪实用程序,如桁架(Solaris)和strace (Linux);系统活动监视器如FileMon、RegMon、过程监控、和其他的Sysinternals工具(Windows);嗅探器和协议分析,监控网络流量。
把监控流程和注意库函数和系统调用操作系统资源(如文件、目录和共享内存。检查这些调用的参数来推断哪些权限。
注意:注意,这种技术只用于权限相关问题的系统资源。它不可能检测应用程序级业务规则相关的权限,比如如果一个用户博客系统标志着职务“私人”,但这个博客系统不经意地将它标记为“公开”。 |
自动静态分析——二进制或字节码
根据飙升,以下检测技术可能是有用的:
|
人工静态分析——二进制或字节码
根据飙升,以下检测技术可能是有用的:
|
动态分析与自动化的结果解释
根据飙升,以下检测技术可能是有用的:
|
动态分析与人工解释结果
根据飙升,以下检测技术可能是有用的:
-
模糊测试
-
基于框架Fuzzer
-
自动化监控执行
-
强制执行路径
|
人工静态分析源代码
根据飙升,以下检测技术可能是有用的:
|
自动静态分析源代码
根据飙升,以下检测技术可能是有用的:
|
自动静态分析
根据飙升,以下检测技术可能是有用的:
|
体系结构或设计审查
根据飙升,以下检测技术可能是有用的:
|
会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
自然 |
类型 |
ID |
的名字 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
743年 |
CERT C安全编码标准(2008)第十章-输入输出(FIO) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
753年 |
2009年前25 -多孔防御 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
803年 |
2010年前25 -多孔防御 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
815年 |
OWASP十大2010类别A6 -安全错误配置 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
857年 |
CERT甲骨文安全Java编码标准(2011)第14章-输入输出(FIO) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
859年 |
CERT甲骨文安全Java编码标准(2011)第十六章-平台安全(SEC) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
860年 |
CERT甲骨文安全Java编码标准(2011年)第十七章-运行时环境(ENV) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
866年 |
2011年前25 -多孔防御 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
877年 |
CERT c++安全编码部分09 -输入输出(FIO) |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
884年 |
CWE横截面 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
946年 |
SFP二级集群:不安全的资源权限 |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
1003年 |
弱点简化映射的漏洞发布 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1147年 |
SEI CERT甲骨文Java安全编码标准,指南13。输入输出(FIO) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1149年 |
SEI CERT甲骨文Java安全编码标准,指南15。平台安全(SEC) |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1150年 |
SEI CERT甲骨文Java安全编码标准,指导16。运行时环境(ENV) |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
1200年 |
弱点在2019 CWE最危险的软件错误 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1308年 |
方案及质量措施,安全 |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
1337年 |
2021 CWE最危险软件的弱点的弱点 |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
1340年 |
方案及数据保护措施 |
MemberOf |
视图——CWE条目的一个子集,它提供了一种检查CWE的内容。两个主要视图结构片(列表)和图(包含条目之间的关系)。 |
1350年 |
2020 CWE最危险软件的弱点的弱点 |
笔记
映射
使用映射:Allowed-with-Review (CWE ID可以用来映射到实际的漏洞在有限的情况下需要仔细审查)。
理由:虽然这个名字本身说明资源分配的权限,这是经常被误用漏洞不检查“权限”,这是一个“授权”的弱点(cwe - 285在CWE的模型(或后代)ref - 1287]。
评论:仔细分析具体的错误是允许暴露,资源和执行CWE映射错误。
维护
特权之间的关系、权限和角色(例如,用户和组)中需要进一步细化研究的观点。并发症之一是这些概念适用于两个不同的柱子,相关控制的资源( cwe - 664)和保护机制的失败( cwe - 693)。
分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
CERT甲骨文安全Java编码标准(2011) |
FIO03-J |
|
用适当的访问权限创建文件 |
CERT甲骨文安全Java编码标准(2011) |
SEC01-J |
|
不允许污染特权块中的变量 |
CERT甲骨文安全Java编码标准(2011) |
ENV03-J |
|
不授予权限的危险组合 |
CERT C安全编码 |
FIO06-C |
|
用适当的访问权限创建文件 |
引用
(ref - 62)马克·多德约翰麦克唐纳和贾斯汀Schuh。“软件安全评估的艺术”。第9章,“文件权限”。Page 495. 1st Edition. Addison Wesley. 2006. |
[ref - 207]约翰Viega和Gary McGraw。“构建安全软件:如何避免安全问题的正确方式”。第八章,“访问控制”。Page 194. 1st Edition. Addison-Wesley. 2002. |
|
|
|
|
|