项目介绍
Apache MINA SSHD 是一个 100% 纯 Java 库,支持客户端和服务器端的 SSH 协议。它的目的不是要替代 Unix 操作系统中的 SSH 客户端或 SSH 服务器,而是为需要 SSH 支持的基于 Java 的应用程序提供支持。
该库可以利用多个 I/O 后端:
- 内置默认传输,使用 Java 的AsynchronousSocketChannels.
- Apache MINA 是一种可扩展的高性能异步 I/O 库,可以替代使用,或者
- 还支持 Netty 异步事件驱动网络框架
项目地址
漏洞概述
Apache MINA SSHD <= 2.9.1 中的类 org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider 使用 Java 反序列化加载序列化的 java.security.PrivateKey。该类是使用 Apache MINA SSHD 的实现者可以选择的几种实现之一,用于加载 SSH 服务器的主机密钥。
影响版本
org.apache.sshd:sshd-common@(-∞, 2.9.2)
环境搭建
下载部署即可
漏洞分析
根据漏洞分析可知source点为 SimpleGeneratorHostKeyProvider#doReadKeyPairs
该函数调用readobject对SSH密钥进行反序列化,通过补丁信息可交叉印证。
反序列化后可以通过AbstractGeneratorHostKeyProvider#writeKeyPair 进一步获取ssh秘钥
控制流如下所示
新版本完善对传入 keypair 变量的反序列化方式,使用Collections.singletonList来进行校验,并且
配置允许访问的白名单类
同时增加了对 keypath 是否存在及权限的校验,
由此可明确该漏洞因 writeKeyPair 未对传入keypath 进行校验从而导致不安全的反序列化。
修复方式
对于 Apache MINA SSHD <= 2.9.1,不要使用 org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider 来生成和稍后加载服务器的主机密钥。使用单独生成的主机密钥文件,例如 OpenSSH 格式,并通过 org.apache.sshd.common.keyprovider. File KeyPairProvider 加载它们。或者使用自定义实现而不是使用 OpenSSH 格式存储和加载主机密钥的 SimpleGeneratorHostKeyProvider(通过类 OpenSSHKeyPairResourceWriter 和 OpenSSHKeyPairResourceParser)
参考链接
Awesome information, Cheers.
who can i pay to write a paper for me paper writer cheap
You revealed this superbly!
what to write in about me for dating site write my essay websites
You actually stated it effectively.
cheap essay papers for sale
Kudos. I appreciate this.
hollywood casino online pa online casino real money sign up bonus
Nicely put. With thanks!
life hack essay writer expert essays writers
Good write ups. Many thanks!
what do i write my college essay on write essay for me uk
Nicely put, Appreciate it.
write my college essay writing an opinion essay
This is nicely put. !
essay writer site essay writer hire