Qualis 团队发现我们的 glassfish 端口号 3920 存在漏洞。
glassfish 版本:glassfish-3.1.2.2
端口号:3920,3820
以下是 Qualis 的详细信息
使用低强度加密算法加密的消息很容易被解密。商业 SSL 服务器应仅支持中强度或高强度加密算法,以保证交易安全。
影响:- 攻击者可以利用此漏洞在未经授权的情况下解密安全通信。
请告诉我们如何修复 Glassfish-3.1.2.2 中端口 3920 和 3820 的漏洞。
答案1
SSL/TLS 标准不要求单一特定的加密密码,而是允许客户端和服务器协商选择他们都支持的密码。
为了提高互操作性,大多数服务器实现默认支持最大范围的密码,包括一些现在被认为是弱的密码(例如 RC4)。这就是触发 Qualis 的原因。
在您的 Glassfish 服务器中,您可以覆盖默认值并限制配置中支持的加密密码列表。检查创建 SSL指令并设置例如:
create-ssl --ssl2enabled=false --ssl3enabled=true --tlsenabled=true ....
答案2
如果其他人尝试执行此任务,则可以在域的 DTD(glassfish/lib/dtds/sun-domain_1_3.dtd)中找到以下信息:
ssl3-tls-ciphers
A comma-separated list of the SSL3 ciphers used, with the
prefix + to enable or - to disable, for example
+SSL_RSA_WITH_RC4_128_MD5. Allowed SSL3/TLS values are those
that are supported by the JVM for the given security provider
and security service configuration. If no value is specified,
all supported ciphers are assumed to be enabled.
然后可以使用以下命令行来设置密码: 警告,所使用的密码只是示例,请确保将其设置为适合您的环境的密码。
asadmin set 'configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.ssl3-tls-ciphers=+SSL_RSA_WITH_RC4_128_MD5,-SSL_RSA_WITH_NULL_MD5'
Enter admin user name> admin
Enter admin password for user "appservd">
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.ssl3-tls-ciphers= SSL_RSA_WITH_RC4_128_MD5,-SSL_RSA_WITH_NULL_MD5
Command set executed successfully.
笔记:回显的输出不正确,grepping domain.xml 显示其设置正确:
grep SSL_RSA ~/domains/domain1/config/domain.xml
<ssl key-store="keystore.jks" ssl3-tls-ciphers="+SSL_RSA_WITH_RC4_128_MD5,-SSL_RSA_WITH_NULL_MD5" classname="com.sun.enterprise.security.ssl.GlassfishSSLImpl" trust-store="cacerts.jks" cert-nickname="s1as"></ssl>
或者,使用 asadmin get 来检索配置:
asadmin get 'configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.*' Enter admin user name> admin
Enter admin password for user "appservd">
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.allow-lazy-init=true
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.cert-nickname=s1as
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.classname=com.sun.enterprise.security.ssl.GlassfishSSLImpl
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.client-auth=
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.client-auth-enabled=false
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.key-store=keystore.jks
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.key-store-password-provider=plain
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.ssl-inactivity-timeout=30
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.ssl2-enabled=false
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.ssl3-enabled=false
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.ssl3-tls-ciphers= SSL_RSA_WITH_RC4_128_MD5,-SSL_RSA_WITH_NULL_MD5
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.tls-enabled=true
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.tls-rollback-enabled=true
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.tls11-enabled=true
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.tls12-enabled=true
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.trust-max-cert-length=5
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.trust-store=cacerts.jks
configs.config.server-config.network-config.protocols.protocol.http-listener-2.ssl.trust-store-password-provider=plain
Command get executed successfully.