memcachedを用いたUDP Amplification攻撃

2月下旬より、memcachedを用いたUDPのAmplificationによるDDoS攻撃が、インターネット上の複数個所で観測されています。本稿ではその概要を取り上げると共に、IIJにおける観測状況を記載します。

概要

memcached[1]はメモリ管理の効率化を目的としたツールで、データベースを使用するWebアプリケーションサーバなど、高パフォーマンスを求められる環境で使用されます。memcachedはサーバ・クライアントモデルで動作し、アプリケーションはソケット通信を用いてmemcachedと通信します。

memcachedは初期設定では、ホスト上の全てのネットワークインタフェースにおいて、TCP及びUDPのポート11211に対する着信を受け付けます[2]。そのため、ファイアウォールなどで適切にフィルタされていない場合、インターネット上の不特定多数のホストからの通信を受け付けてしまう可能性があります。memcachedのコマンドはUDPで送受信することが可能であり、またリクエストよりもレスポンスの方がメッセージサイズが大きいことから、通信量を増幅させるAmplification攻撃に使用される恐れがあります。

既に本件を用いたDoS攻撃も発生しており、例えば2月28日にはGitHub宛に最大で1.35Tbpsの通信が発生し、サービスが一時的に停止される事態がありました[3]。本件については2018年2月末頃に、JPCERT/CCなど複数の組織から注意喚起が公開されています[4]。また、本件が公表されてから開発元であるDormandoは、UDPが標準で無効となるようmemcachedの仕様を変更しています[5]

IIJにおける探索通信の観測

IIJでも、memcachedを探索しているものと推測される通信を多く観測しています。図-1はIIJマネージドファイアウォールサービスをご利用のお客様に対する、11211/udpを宛先とする通信の件数を宛先IPアドレス単位で正規化したものです。JPCERT/CCからの注意喚起にも記載されている、2月21日頃から件数が増加していることが確認出来ており、本攻撃に利用可能なホストを探索しているものと考えられます。

図-1 IIJマネージドファイアウォール機器に対する11211/udpの宛先IPアドレス毎の通信件数

図-2は11211/udpを宛先とする通信の送信元IPアドレス数を示したものです。IPアドレス数も通信件数と同様に、2月下旬に増加していることが確認出来ます。

図-2 IIJマネージドファイアウォール機器に対する11211/udp通信の送信元IPアドレス数

上記のグラフは2018年2月中旬からを対象としていますが、IIJバックボーン内に設置しているハニーポットでは、2017年8月頃から11211/udp及び11211/tcpを宛先とした通信を観測しています。ハニーポットにおける検出でも、2月下旬以降の件数が多く観測されています。

対策

IIJではCentOS 7にて、本事象を用いた攻撃が成立することを確認しました。また、CentOS 7及びUbuntu 16.04.2にて、対策が有効であることを確認しました。

図-3はUbuntuにおける初期状態の設定ファイルです。Ubuntuでは初期設定でループバックアドレスからのみ着信を受け付ける”-l 127.0.0.1″オプションが指定されていることから、明示的に開放しない限りは外部からのリクエストに応答しません。

図-3 Ubuntu 16.04.2におけるmemcached初期設定

一方でCentOS 7では現時点では当該オプションが設定されていない(図-4)ため、”-l”オプションを使用して着信を受け付けるインタフェースを限定したり、”-U 0″オプションを使用してUDPによる着信を無効化したりする必要があります(図-5)。

図-4 CentOS 7におけるmemcached初期設定
図-5 CentOS 7におけるmemcached設定変更例

memcachedの設定変更による対策が出来ない場合は、上流のネットワーク機器やホストのファイアウォールにて、当該通信を遮断することでも対策可能です。また、実行しておく必要がない場合は、memcachedを停止しておくことも対策となります。

今回はmemcachedが用いられていますが、ネットワークを用いるプログラムの多くは初期設定では複数のネットワークインタフェースにて着信を許可するため、適切な設定または通信のフィルタが必要となります。使用されているソフトウェアの設定やネットワーク構成をご確認頂き、不適切な状態が発見された場合には適切に対処するようにしてください。

1. Dormando,‘memcached’https://memcached.org/
2. memcached Wiki,‘Configuring Server’(2016/5/20)https://github.com/memcached/memcached/wiki/ConfiguringServer#networking
3. GitHub Engineering,‘February 28th DDoS Incident Report’(2018/3/1)https://githubengineering.com/ddos-incident-report/
4. JPCERTコーディネーションセンター, ‘memcached のアクセス制御に関する注意喚起’(2018/2/27)https://www.jpcert.or.jp/at/2018/at180009.html
5. memcached Wiki, ‘Memcached 1.5.6 Release Notes’(2018/2/27)https://github.com/memcached/memcached/wiki/ReleaseNotes156

トップにもどる