Redis CSRF漏洞分析
近日有网友暴漏了Redis的CSRF漏洞,同时Redis作者在最新发布的3.2.7也进行了修复,本文将对CSRF攻击及如何安全使用Redis进行介绍。阿里云云数据库Redis版强制需要密码访问,不受该漏洞影响,而对于自建Redis用户可以根据后续的一个建议措施进行修复。
CSRF介绍
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
上图为CSRF攻击的一个简单模型用户访问恶意网站B,恶意网站B返回给用户的HTTP信息中要求用户访问网站A,而由于用户和网站A之间可能已经有信任关系导致这个请求就像用户真实发送的一样会被执行。
Redis CSRF攻击模型
根据上面CSRF的原理恶意网站可以让用户发送一个HTTP请求给Redis,由于Redis支持文本协议,而在解析协议过程中如果碰到非法的协议并不会断开链接,这个时候攻击者可以通过在正常的HTTP请求之后携带Redis命令从而在Redis上执行命令,而如果用户和Redis之间是没有密码验证的则可以正常执行Redis命令并对数据进行加密勒索,就像之前Mongodb赎金事件一样。
内核修复
Redis作者在3.2.7版本对该问题进行了一个修复,解决方案是对于POST和Host:的关键字进行特殊处理记录日志并断开该链接避免后续Redis合法请求的执行。
Redis安全风险
更早之前Redis暴露了一个安全漏洞,黑客在一条条件下可以拿到Redis服务的root权限,这些安全漏洞发生的原因主要是因为用户对于Redis的安全机制了解比较少,还有用户缺少Redis相关的运维经验,同时由于Redis也没有提供更丰富的安全防护机制。阿里云云数据库Redis版提供了更安全的Redis服务,对于云上的Redis服务建议使用云数据库Redis服务,接下去我们将对云数据Redis安全的要点进行介绍。
阿里云Redis安全规范
内网访问,避免公网访问
阿里云Redis只提供可信任的内网访问,用户不能通过公网访问到阿里云Redis
物理网络隔离
阿里云Redis物理机网络和用户网络物理隔离,用户虚拟机无法直接访问后端物理机网络
VPC网络隔离
对于阿里云用户如果使用专有云VPC网络,则能够保证只有同一个VPC网络下的服务可以互相访问
白名单
阿里云Redis支持白名单设置,目前未在控制台开放,后续用户可以在控制台设置可以访问的用户白名单
密码访问
阿里云Redis对于经典网络的实例强制开启密码鉴权,用户可以通过设置复杂的密码避免密码被攻破
访问权限隔离
阿里云Redis后端每个实例进行权限和访问目录的隔离,每个实例都只能访问自己实例的路径,避免实例之间的互相影响
禁用危险命令
阿里云Redis禁用了一些危险的系统管理命令config,save等,用户如果需要进行参数修改需要通过控制台二次验证之后才能修改,同时也避免了直接操作后端的配置文件及管理命令
安全监控
阿里云Redis具有完善的物理机安全监控,定期扫描和更新安全监控策略,提早发现安全风险
Redis集群密码
原生Redis 3.0的cluster版本不支持密码验证,阿里云Redis集群版本支持密码验证,提高了安全性
结束
Redis的安全问题需要社区共同宣传和优化,希望大家在Redis使用过程中碰到问题可以及时分享,让社区来共同解决问题,新的一年到来也希望Redis社区有更大的进步同时阿里云Redis也希望给大家提供更安全、性能更优、性价比更高的云数据库Redis服务。在此代表阿里云Redis同学恭祝大家新年快乐,工作顺利。最后广告时间到了,阿里云Redis致力于提供最好的云数据库Redis服务,我们正在寻找有一样志向的同学加入我们,有兴趣的同学请猛击链接。