 描述
产品由一个服务器,它依赖于客户端实现一个机制,旨在保护服务器。
 扩展描述
当服务器依赖保护机制放在客户端,攻击者可以修改客户端行为绕过保护机制,导致潜在的意想不到的客户端和服务器之间的交互。结果会有所不同,这取决于正试图保护的机制。
 的关系
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
 相关的视图”研究概念”(cwe - 1000)
自然 |
类型 |
ID |
的名字 |
ChildOf |
支柱——一个弱点是最抽象类型的弱点和代表一个主题类/基地/变体相关弱点。支柱是不同于一个类别作为支柱技术上仍然是一种弱点,描述了一个错误,而一个类别代表一个共同特征用于组相关的东西。 |
693年 |
保护机制失败 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
565年 |
依赖饼干没有验证和完整性检查 |
ParentOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
603年 |
使用客户端身份验证 |
PeerOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
290年 |
认证绕过被欺骗 |
PeerOf |
类——一个弱点,描述的是一个非常抽象的时尚,通常独立于任何特定的语言或技术。更具体的比一个支柱的弱点,但更普遍的基本的弱点。类级别的弱点通常描述问题的1或2以下维度:行为、财产和资源。 |
300年 |
通道由Non-Endpoint访问 |
PeerOf |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
836年 |
使用密码散列,而不是密码进行身份验证 |
CanPrecede |
Base -一个弱点,仍主要是独立的资源或技术,但有足够的细节来提供特定的检测和预防方法。基础水平的弱点通常描述问题的2或3以下维度:行为、财产、技术、语言,和资源。 |
471年 |
修改Assumed-Immutable数据(服务员) |
此表显示了弱点和高水平类别相关的这一弱点。这些关系被定义为ChildOf、ParentOf MemberOf,并洞察类似项目可能存在的在较高和较低的抽象级别。此外,关系如PeerOf和CanAlsoBe定义显示类似的弱点,用户可能想要探索。
 相关视图”架构概念”(cwe - 1008)
自然 |
类型 |
ID |
的名字 |
MemberOf |
类别——CWE条目包含一组其他条目,共享一个共同的特点。 |
1012年 |
交叉剪接 |
 模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
架构和设计 |
委员会:这个弱点是指一个不正确的设计与架构相关的安全策略。 |
架构和设计 |
考虑一个产品,由两个或两个以上的进程或节点必须密切互动,比如一个客户机/服务器模型。如果产品使用保护方案在客户端为了保卫攻击服务器,服务器不使用相同的方案,那么攻击者可以修改客户的方式绕过了这些计划。这是一个基本的设计缺陷,主要是许多弱点。 |
 常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
访问控制 可用性
|
技术的影响:旁路保护机制;DoS:崩溃,退出或重新启动
客户端验证检查很容易绕过,允许畸形或意想不到的输入传递到应用程序中,可能作为可信的数据。这可能会导致意想不到的状态、行为和可能导致崩溃。 |
|
访问控制
|
客户端检查认证很容易绕过,允许客户升级他们的访问级别和执行意外操作。 |
|
 利用的可能性
 示范例子
示例1
这个例子包含客户端代码,检查如果用户身份验证成功之前发送一个命令。服务器端代码执行身份验证在一个步骤,并执行命令在一个单独的步骤。
客户端(client.pl)
美元服务器= " 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]。如果这些漏洞利用,往往让对手改变产品运营,从拒绝服务改变产品执行的代码。因为这些产品经常被应用于行业,如电力、电气、水,和其他人,甚至会出现安全问题。
多个供应商使用客户端身份验证的产品。
 观察到的例子
参考 |
描述 |
|
SCADA系统只使用客户端身份验证,让对手模仿其他用户。 |
|
ASP程序允许上传的ASP文件绕过客户端检查。 |
|
隐写术产品嵌入载体文件中的密码信息,可以从修改后的客户。 |
|
隐写术产品嵌入载体文件中的密码信息,可以从修改后的客户。 |
|
客户端允许服务器修改客户端配置和覆盖任意文件。 |
 潜在的缓解措施
阶段:体系结构和设计
对于任何一个在客户端执行安全检查,确保这些检查重复的在服务器端。攻击者可以绕过客户端检查通过修改值后,检查执行,或通过改变客户端完全删除客户端检查。然后,这些修改的值将被提交到服务器。
即使客户端对服务器端安全检查提供最小的好处,他们仍然有用。首先,他们可以支持入侵检测。如果服务器接收输入,应该已经被客户拒绝,那么它可能是一个攻击的迹象。第二,客户端错误检查可以提供有用的反馈给用户预期的有效输入。第三,可能会有意外的服务器端处理时间的减少输入错误,虽然这通常是一个小的储蓄。
|
阶段:体系结构和设计
如果需要某种程度的信任在两个实体之间,然后使用完整性检查和强大的身份验证以确保输入来自可信来源。设计产品,使这种信任在一个集中的管理时尚,特别是如果有复杂或多种沟通渠道,为了减少风险,实现者将错误地忽略检查在一个代码路径。 |
测试阶段:
使用动态交互的工具和技术的软件使用大型测试套件和许多不同的输入,如模糊测试(起毛)健壮性测试和故障注入。软件的操作可能慢下来,但它不应该成为不稳定,崩溃,或者产生不正确的结果。 |
测试阶段:
使用工具和技术,需要手动(人类)的分析,如渗透测试、威胁建模和交互工具,允许测试人员记录和修改一个活跃的会话。这些可能是更有效的比严格的自动化技术。尤其如此弱点设计和相关的业务规则。 |
 弱点Ordinalities
Ordinality |
描述 |
主 |
(其他弱点的弱点存在独立的) |
 会员资格
这MemberOf关系表显示额外CWE类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
 分类法映射
映射分类名称 |
节点ID |
适合 |
映射节点名 |
OWASP十大2004 |
A1 |
CWE更具体 |
用户输入 |
 引用
|