Trend Micro的安全研究人员发现了大约8000个不安全的Redis实例,这些实例暴露在任何有互联网连接的人面前。
在世界各地,不安全的实例被发现缺乏传输层安全(TLS)加密,并且没有任何密码保护。其中一些实例甚至部署在公共云中。
一个开源的内存数据结构存储,Redis(远程字典服务器)是为在可信环境中使用而设计的。因此,如果不加保护且可以访问Internet,Redis实例很容易受到各种滥用,包括SQL注入、跨站点脚本攻击,甚至远程代码执行。
此外,能够连接到不安全部署的网络罪犯可以查看、访问和修改存储的数据,并上载恶意文件。几年前,FairWare勒索软件瞄准了18000多个不安全的Redis实例。
自2017年7月发布的Redis 4.0以来,就已经存在了一个保护模式配置,并且还被移植到了Redis 3.2.0。在默认配置下执行Redis时,如果没有密码保护,则会自动启用此保护。
在此模式下,Redis只回复来自环回接口的查询,并向尝试连接的其他客户端发送错误消息。但是,管理员可能仍然会忽略该消息并手动绑定所有接口,甚至完全禁用受保护模式。
Trend Micro的安全研究人员指出,Redis非常受欢迎,其官方的Docker Hub图片迄今已注册超过10亿次下载。
在互联网连接设备搜索引擎Shodan的帮助下,研究人员在全球范围内发现了8000多个不安全的Redis实例,其中一些在AWS、Azure和Google云等公共云中。
默认情况下,Redis在基于明文的TCP端口6379上侦听,而不提供使用TLS加密数据的选项。另一方面,Redis用户有可能启用TLS和安全通信,但这只能确保数据在传输过程中是安全的,不会保护部署不受未经授权的访问。
在公开的Redis服务器上,恶意参与者可以滥用命令来崩溃安装(拒绝服务)、在服务器上下文中执行LUA脚本、检索或修改数据、清空或删除所有密钥以及嗅探用户流量。
为了保证Redis实例的安全,管理员应该确保部署的安全性是正确的,并且只有经过授权的用户才能访问它们,使用TLS和密码身份验证,注意命令的执行,在使用容器时应用网络分段,避免在前端开发中使用Redis。