【漏洞預警】Redis 4.x/5.x 遠程命令執行高危漏洞修復

漏洞背景

2019年7月09日,阿里雲應急響應中心監測到有安全研究人員披露Redis 4.x/5.x 遠程命令執行高危漏洞利用代碼工具。針對未授權或弱口令的Redis服務,攻擊者通過構造特定請求,成功利用漏洞可在目標服務器上執行任意命令,風險極大。

漏洞描述

在Reids 4.x之後,Redis新增了模塊功能特性,通過外部拓展,可以實現新的Redis命令,通過寫c語言並編譯出.so文件,可實現代碼執行漏洞。阿里雲應急響應中心提醒Redis用戶儘快採取安全措施阻止漏洞攻擊。

影響版本(Redis 4.x、Redis 5.x)

安全建議

一、通過阿里雲安全組禁止Redis端口對外或只允許特定安全ip地址訪問,如下:


阿里雲安全組

二、加固Redis,增加權限控制和密碼策略等:

一.背景描述

1.漏洞描述
Redis 因配置不當存在未授權訪問漏洞,可以被攻擊者惡意利用。

在特定條件下,如果 Redis 以 root 身份運行,黑客可以給 root 賬號寫入 SSH 公鑰文件,直接通過 SSH 登錄受害服務器,從而獲取服務器權限和數據。一旦入侵成功,攻擊者可直接添加賬號用於 SSH 遠程登錄控制服務器,給用戶的 Redis 運行環境以及 Linux 主機帶來安全風險,如刪除、泄露或加密重要數據,引發勒索事件等。

2.受影響範圍
在 Redis 客戶端,嘗試無賬號登錄 Redis:

root@kali:~# redis-cli -h 10.16.10.2
redis 10.16.10.2:6379> keys *
1) "1"`

從登錄結果可以看出,該 Redis 服務對公網開放,且未啓用認證。

二.修復方案

1.網絡層加固

  • 指定 Redis 服務使用的網卡
    默認情況下,Redis 監聽 127.0.0.1。如果僅僅是本地通信,請確保監聽在本地。
    這種方式可以在一定程度上緩解 Redis 未授權訪問的風險(例外情況下,如果 Redis 以 root 用戶運行,攻擊者藉助已有的 webshell,就可以利用該 Redis 來反彈 shell 以實現提權)。

    redis.conf 文件中找到 # bind 127.0.0.1,將前面的 # 去掉,然後保存。

注意:

  • 該操作需要重啓 Redis 才能生效。
  • 修改後只有本機才能訪問 Redis,也可以指定訪問源 IP 來訪問 Redis。
bind 192.168.1.100 10.0.0.1

2.設置防火牆策略

如果正常業務中 Redis 服務需要被其他服務器來訪問,可以通過 iptables 策略,僅允許指定的 IP 來訪問 Redis 服務。

iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT

3.賬號與認證

  • 設置訪問密碼
    redis.conf 中找到 requirepass 字段,去掉其註釋,並在後面填上需要的密碼。Redis 客戶端也需要使用此密碼來訪問 Redis 服務。
    打開 /etc/redis/redis.conf 配置文件:
requirepass !QE%^E3323BDWEwwwe1839
確保密碼的複雜度,配置完畢後重啓服務即可生效。

4.服務運行權限最小化

  • 修改 Redis 服務運行賬號
    請以較低權限賬號運行 Redis 服務,並禁用該賬號的登錄權限。以下操作創建了一個無 home 目錄權限,且無法登錄的普通賬號:
useradd -M -s /sbin/nologin [username]

注意: 該操作需要重啓 Redis 才能生效。

5.服務精細化授權

  • 隱藏重要命令
    Redis 無權限分離,其管理員賬號和普通賬號無明顯區分。攻擊者登錄後可執行任意操作,因此需要隱藏以下重要命令:FLUSHDB, FLUSHALL, KEYS,PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, EVAL

    另外,在 Redis 2.8.1 及 Redis 3.x (低於 3.0.2) 版本下存在 EVAL 沙箱逃逸漏洞,攻擊者可通過該漏洞執行任意 Lua 代碼。

下述配置將 config/flushdb/flushall 設置爲空,即禁用該命令;也可設置爲一些複雜的、難以猜測的名字。

rename-command CONFIG ""
rename-command flushall ""
rename-command flushdb ""
rename-command shutdown shotdown_test

保存後,執行 /etc/init.d/redis-server restart 重啓生效。

6.安全補丁
定期關注最新軟件版本,並及時升級 Redis 到最新版,防止新漏洞被惡意利用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章