cwe - 807:依赖不可信的输入在一个安全的决定
视图定制的信息:
开发人员可能假设输入如饼干、环境变量,隐藏表单字段不能被修改。然而,攻击者可能会改变这些输入使用定制的客户或其他攻击。这种变化可能不会被发现。当身份验证和授权等安全决策基于这些输入的值,攻击者可以绕过安全的软件。 没有足够的加密、完整性检查或其他机制,任何输入,源于一个局外人是不可信的。
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
相关的视图”研究概念”(cwe - 1000)
相关视图”架构概念”(cwe - 1008)
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
该清单显示了给定的弱点可以可能的地区出现。这些可能是为特定命名的语言,操作系统,架构、模式、技术、或一个类这样的平台。列出的平台是随着频率的出现疲态实例。
语言 类:不是特定于语言的患病率(待定)
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
示例1 下面的代码摘录读取从浏览器cookie值来确定用户的角色。
(坏的代码)
例如语言:Java
饼干饼干[]= request.getCookies ();
for (int i = 0;我< cookies.length;我+ +){
饼干c =饼干(我); }如果(c.getName () .equals(“角色”)){
userRole = c.getValue (); }示例2 下面的代码可以为医疗记录应用程序。它执行身份验证检查如果已经设置cookie。
(坏的代码)
例如语言:PHP
auth = _COOKIES美元(“身份验证”);
如果(!auth美元){
如果(AuthenticateUser ($ _POST['用户”),$ _POST['密码'])= =“成功”){ }
/ /保存cookie将来发送响应 }setcookie(“身份验证”、“1”、时间()+ 60 * 60 * 2); 其他{
ShowLoginScreen (); }死亡(“\ n”); DisplayMedicalHistory ($ _POST [' patient_ID ']); 程序员希望AuthenticateUser()总是会检查,和“验证”饼干时只会被设置身份验证成功。程序员甚至努力指定两个小时过期的饼干。 然而,攻击者可以设置“身份验证”饼干等非零值1。因此,身份验证变量是1美元,AuthenticateUser()检查甚至没有执行。攻击者绕过身份验证。 示例3 在接下来的例子中,一个身份验证标记从一个浏览器读取cookie,从而允许外部用户状态数据的控制。
(坏的代码)
例如语言:Java
饼干饼干[]= request.getCookies ();
for (int i = 0;我< cookies.length;我+ +){
饼干c =饼干(我); }如果(c.getName () .equals(“验证”)& & Boolean.TRUE.equals (c.getValue ())) {
验证= true; }示例4 下面的代码示例使用DNS查找,以决定是否入站请求来自受信任的主机。如果攻击者可以毒DNS缓存中,他们可以获得信任的状态。
(坏的代码)
例如语言:C
struct hostent *惠普;struct in_addr myaddr;
char * tHost = " trustme.example.com "; myaddr.s_addr = inet_addr (ip_addr_string); 惠普= gethostbyaddr ((char *) &myaddr sizeof (struct in_addr) AF_INET); 如果惠普& & ! strncmp (hp - > h_name, tHost, sizeof (tHost))) {
信任= true; 其他}{
信任= false; }
(坏的代码)
例如语言:Java
字符串ip = request.getRemoteAddr ();
InetAddress addr = InetAddress.getByName (ip); 如果(addr.getCanonicalHostName () .endsWith (“trustme.com”)) {
信任= true; }
(坏的代码)
例如语言:c#
IPAddress hostIPAddress = IPAddress.Parse (RemoteIpAddress);
IPHostEntry hostInfo = Dns.GetHostByAddress (hostIPAddress); 如果(hostInfo.HostName.EndsWith (“trustme.com”)) {
信任= true; }IP地址比DNS名称更可靠,但他们也可以欺骗。攻击者可以很容易地建立发送的数据包的源IP地址,但响应数据包将返回到伪造IP地址。看到响应数据包,攻击者嗅受害者机器之间的交通和伪造IP地址。为了实现所需的嗅探,攻击者通常试图定位自己在同一子网的受害者的机器。攻击者可以绕过这个需求通过使用源路由,但源路由今天互联网的大部分地区是禁用的。总之,IP地址验证可以是一个有用的身份验证方案的一部分,但不应该把它所需的单因素身份验证。
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
更多的信息是可用的,请选择一个不同的过滤器。
|
使用常见的弱点枚举(CWE)和相关的引用从这个网站的使用条款。CWE赞助的美国国土安全部(DHS)网络和基础设施安全机构(CISA)和管理的国土安全系统工程和发展研究所这是由(HSSEDI)manbetx客户端首页(斜方)。版权©2006 - 2023,斜方公司。manbetx客户端首页CWE、水煤浆、CWRAF, CWE标志是斜方公司的商标。manbetx客户端首页 |