当前位置: 首页 > 科技观察

超过8000个不安全的Redis暴露在云端

时间:2023-03-21 14:06:19 科技观察

研究人员在云端发现了大约8000个不安全的Redis,这些Redis没有使用TLS加密,也没有密码保护。Redis最初是为在可信环境中使用而设计的。如果允许在互联网或物联网上使用,攻击者会利用不安全的Redis服务器发起攻击,如SQL注入、跨站攻击、恶意文件上传、远程代码执行等。什么是Redis?Redis全称RemoteDictionaryServer,是一种开源的内存数据存储结构,常用于数据库、数据缓存等。由于Redis驻留在内存中,可以为需要处理高的程序提供毫秒级的响应大量请求,例如实时聊天、金融服务、医疗保健和游戏。据介绍,2018年有9亿个容器运行在Redis上,拥有广泛的用户基础。官方图片已被下载超过10亿次,也被GitHub、Craigslist、Twitter等公司使用。Redis也可以部署在云端,使用缓存来节省云端存储空间。RedisAnalytics利用Shodan在全球范围内发现了8,000多个不安全的Redis部署。其中一些部署在公共云中,例如AWS、Azure和GoogleCloud。下图只列出了50多个不安全的Redis云:全球分布:Redis官方文档指出:Redis被设计为在受信任的环境中被受信任的客户端访问。将Redis直接暴露在互联网上或让不受信任的客户端直接访问会使Redis处于危险之中。默认情况下,Redis监听6379端口。与SMTP协议类似,该协议通信未加密。虽然有TLS加密选项,但它不是Redis的默认设置。用户需要手动启用TLS。在Redis中启用TLS时,攻击者无法嗅探传输的数据。但是启用TLS并不能阻止对Redis服务器的未授权访问。认证可以通过在redis.conf中配置requirepass来开启,也可以通过CONFIGSETrequirepasspassword命令启动。身份验证密码以明文形式存储,任何可以查看配置信息的人都可以使用。但即使设置了身份验证,攻击者仍然可以在未启用TLS时嗅探密码。为了限制用户执行关键命令,Redis使用了两种方法:禁用命令或重命名命令。Redis用户可以通过将命令重命名为空字符来完全禁用命令。当不安全的Redis服务器暴露时,攻击者可能会使用以下命令:DEBUGSEGFAULT该命令可以访问无效内存,导致Redis崩溃。攻击者可以使用该命令进行拒绝服务攻击,关闭正在运行的Redis。EVAL这个命令可以在服务器上执行LUA脚本。Redis使用了LUA沙箱来限制某些功能,不加载关键库以防止远程执行,禁用loadfile和dofile等功能,保证不会读取任意文件。GET/SET攻击者可以使用此命令来检索或修改数据。FLUSHALL该命令可以清除或删除所有数据库中的所有键,从而导致数据丢失。如果Redis上的数据没有做好备份,也可能会导致服务出错。MONITOR此命令显示服务器处理的请求,攻击者可以使用它来嗅探目标上重要文件的流量。安全建议为保证Redis的安全,建议采取以下措施:1、确定Redis的部署位置,确定访问人员的权限设置。2.确保环境安全配置正确,不允许其他部署干扰Redis。3.启用TLS和密码身份验证。4.密切关注DEBUGSEGFAULT、MONITOR等命令的执行情况。5.正确的网络分段。防止Redis暴露在其他不受信任的环境中。6、前端开发不要使用Redis。