cwe - 593:认证绕过:OpenSSL CTX对象修改后SSL创建对象
描述
扩展描述
如果程序修改后SSL_CTX对象创建SSL对象,有可能,老SSL从原始上下文创建的对象都可以受变化的影响。
的关系
模式的介绍
不同模式的引入提供了信息如何以及何时可以纳入这一弱点。生命周期的阶段识别点的介绍可能发生,而相关的报告提供了一个典型的场景介绍在给定的阶段。
阶段 |
请注意 |
架构和设计 |
|
实现 |
实现:造成这一弱点在建筑安全策略的实施。 |
常见的后果
这个表指定不同的个人相关后果的弱点。标识应用程序范围的安全领域侵犯,而影响了负面的技术影响,如果敌人成功利用这个弱点。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能会有高可能性,缺点将被利用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
访问控制
|
没有验证发生在这个过程中,绕过一个假定的加密保护。 |
|
保密
|
加密的用户之间的通信和可信主机可以嗅探攻击。 |
|
示范例子
示例1
下面的例子显示出,需求不足。
#定义CERT“secret.pem” #定义CERT2“secret2.pem”
int main () {
SSL_CTX * ctx; SSL * SSL; init_OpenSSL (); seed_prng ();
ctx = SSL_CTX_new来(SSLv23_method ());
如果(SSL_CTX_use_certificate_chain_file (ctx, CERT) ! = 1)
int_error(“从文件加载证书错误”);
如果(SSL_CTX_use_PrivateKey_file (ctx、CERT SSL_FILETYPE_PEM) ! = 1)
int_error(“错误加载私钥文件”);
如果(!(ssl = SSL_new (ctx)))
int_error(“创建SSL上下文错误”);
如果(SSL_CTX_set_default_passwd_cb (ctx,新的默认密码“! = 1))
int_error(“做一些危险无论如何”);
如果(!(ssl2 = SSL_new (ctx)))
int_error(“创建SSL上下文错误”);
}
潜在的缓解措施
阶段:体系结构和设计
使用一种语言或一个库,它提供了一个加密框架在更高层次的抽象。 |
实施阶段:
多数SSL_CTX功能的SSL同行行动SSL-type对象。 |
实施阶段:
之前,应用程序应该建立SSL_CTX完全创建SSL对象。 |
|