CVE-2016-2183-SSL/TLS协议信息泄露漏洞
漏洞描述
TLS, SSH, IPSec 协商及其他产品中使用的DES及Triple DES密码存在大约四十亿块的生日界,这可使远程攻击者通过Sweet32攻击,获取纯文本数据。
该漏洞又称为 SWEET32,是对较旧的分组密码算法的攻击,使用 64 位的块大小,缓解 SWEET32 攻击 OpenSSL 1.0.1 和 OpenSSL 1.0.2 中基于 DES 密码套件从“高”密码字符串组移至“中”;但 OpenSSL 1.1.0 发布时自带这些,默认情况下禁用密码套件。该问题在新的 openssl 版本中已解决
远程主机支持使用提供中等强度加密的 SSL 密码。Nessus 将中等强度视为使用密钥长度至少为 64 位且小于 112 位的任何加密,或使用 3DES 加密套件的任何加密。请注意,如果攻击者位于同一物理网络上,那么绕过中等强度加密就容易得多。对于 windows,该漏洞影响了很多的服务,包括常见的3389,80,443,25等。
受影响版本
OpenSSL 1.1.0 前版本,也有高版本存在此漏洞
需查看 web 中间件 conf 配置判断
或使用 nmap 协商密码进行搜集
复现
此漏洞复现困难 耗费时间资源较多
SWEET32 攻击需要 30-38 个小时不断发送服务器请求,收集约 785 GB 流量,发现碰撞攻击,这将允许恢复 Cookie 文件内容,包含验证和用户会话详情。
对 OpenVPN 的攻击需要 18 小时收集 750G 的数据,复原 16 位的认证令牌。
详细复现过程可查阅相关资料
升级到不存在此漏洞版本
官方地址:https://www.openssl.org/source/
openssl version -a //确认当前版本,备份证书文件和秘钥文件
mv /usr/bin/openssl /usr/bin/openssl.old /备份执行文件
mv /usr/include/openssl /usr/include/openssl.old
cd /usr/local/src/
wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz
tar zxvf openssl-1.1.1h.tar.gz
cd ./openssl-1.1.1h/
./config --prefix=/opt/openssl --openssldir=/usr/local/ssl //预编译,指定安装路径,生成 Makefile 文件,-t 参数可测试编译情况,--prefix:指定安装目录;--openssldir:指定 openssl 配置文件路径;加 shared 可指定创建动态链接库
make //编译,如编译失败,可执行 ./make clean ,或者编译前用 ./make test 测试编译情况而不直接编译
make install //编译成功后安装编译失败需更新 zlib 和 gcc
gcc -v //确定gcc版本,按需升级
cat /usr/lib64/pkgconfig/zlib.pc //确定zlib版本,按需升级
或尝试yum upgrade zlib zlib-devel gcc* -y //update
升级包保留旧版本,upgrade 升级后删除旧版本,如果不跟具体包名,update 所有包同时升级软件和系统内核(升级环境可能会导致生成事故),upgrade 升级后,只升级所有包,不升级软件和系统内核。这不同于 ubuntu 环境,update 是同步 /etc/apt/sources.list 和 /etc/apt/
sources.list.d 中列出的源的索引,以便 upgrade 时获取最新的软件包进行安装,在执行 upgrade 之前要执行 update才能从最新软件包更新。
替换旧 openssl 文件1)/usr/local/bin:
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
2)配置文件/usr/local/ssl:备份
3)库文件检查:/usr/local/lib64 //根据实际环境库文件位置配置,部分存放usr/local/ssl/lib,也可整个库文件夹备份。
4)验证:ldconfig -v|grep ssl //确定链接库
5)版本验证:openssl version
如果出现 openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory ,缺少相关库依赖,检查库文件ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ln -s /usr/local/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ldconfig -v|grep ssl //确定链接库正常
echo "/usr/local/lib64" >> /etc/ld.so.conf //将新库文件地址写入记录 so 配置文件,更新动态链接库数据
验证:openssl version
禁用 DES 算法修复
避免使用 DES 算法
配置 conf 的设置 ssl_ciphers HIGH:!aNULL:!MD5:!3DES; 重启中间件服务
Windows 远程桌面漏洞修复
使用 Windows FIPS 代替 SSL 加密
1)启用 FIPS
操作步骤:管理工具 -> 本地安全策略 -> 安全设置 -> 本地策略 -> 安全选项 -> 找到”系统加密:将 FIPS 兼容算法用于加密、哈希和签名”选项 -> 右键”属性” -> 在”本地安全设置”下,选择”已启用(E)”,点击”应用”、”确定”2)禁用 SSL 密码套件
操作步骤:’Win + R’,键入”gpedit.msc”,打开”本地组策略编辑器” -> 计算机配置 -> 网络 -> SSL 配置设置 -> 在”SSL密码套件顺序”选项上,右键”编辑” -> 在”SSL 密码套件顺序”选在”已禁用(D)” ,点击”应用”、”确定”3)删除默认CA认证书
操作步骤:’Win + R’,键入”mmc”,打开”管理控制台” -> ”文件” -> ”添加/删除管理单元(M)” -> 在”可用的管理单元”下选择”证书” -> 单击”添加” -> 在”证书管理单元”中选择”计算机用户(C)”,点击”下一步” -> 在”选择计算机”中选择”本地计算机(运行此控制台的计算机)(L)”,单击”完成” -> 回到”添加/删除管理单元”,单击”确定” -> 回到”控制台” -> ”证书(本地计算机)” -> ”远程桌面” -> ”证书”->在默认证书上右键”删除”
修复后存在问题
服务端将不使用 DES/3DES 加密方式,IE6、IE7、Windows XP 操作系统将无法访问站点,需业务方自行判断是否进行修复。