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(“进入诊断模式…”); }返回(1); 控制台。WriteLine(“不正确的密码!”); 返回(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类别和视图引用这个弱点作为成员。这些信息通常是有用的在理解一个弱点符合外部信息源的上下文中。
维护
Taxonomy_Mappings ISA / IEC 62443 CWE 4.10中加入了,但他们仍在审查和将来可能会改变CWE版本。这些映射草案是由“CWE映射到62443”小组的成员CWE -CAPEC ICS / OT特殊利益集团(团体),CWE 4.10的和他们的工作是不完整的。映射是包括促进讨论和审查由更广泛的ICS / OT的社区,他们可能会改变在未来CWE版本。
更多的信息是可用的,请选择一个不同的过滤器。
|
使用常见的弱点枚举(CWE)和相关的引用从这个网站的使用条款。CWE赞助的美国国土安全部(DHS)网络和基础设施安全机构(CISA)和管理的国土安全系统工程和发展研究所这是由(HSSEDI)manbetx客户端首页(斜方)。版权©2006 - 2023,斜方公司。manbetx客户端首页CWE、水煤浆、CWRAF, CWE标志是斜方公司的商标。manbetx客户端首页 |