RFC 7252、またの名をConstrained Application Protocol(CoAP)というプロトコルが、DDoS攻撃に最も悪用されるプロトコルの1つになろうとしていると、複数のセキュリティ研究者が米ZDNetに警告した。
読者がこのプロトコルの名称を知らないとすれば、これが新しい規格だからだ。CoAPは2014年に正式に承認されたばかりで、2018年に入るまではほとんど利用されていなかった。
CoAPとは何か?
CoAPは、軽量なM2M(Machine to Machine)プロトコルとして設計され、メモリや演算リソースに乏しいスマート機器でも使用できる。
ごく簡単に説明すると、CoAPはHTTPにとてもよく似ているが、TCPパケット上ではなく、TCPの代替として開発された、より軽量なデータ転送フォーマットであるUDP上で機能するプロトコルだ。
HTTPがクライアントとサーバ間のデータやコマンド(GET、POST、CONNECTなど)転送に利用されるのと同様に、CoAPも、同じようなマルチキャストおよびコマンド転送機能を持つが、HTTPほど多くのリソースを必要としない。そのため、現在台頭しているモノのインターネット(IoT)機器には理想的なプロトコルだ。
だが、UDPベースの他のプロトコルと同じく、CoAPはその性質上、DDoS攻撃の威力を高める2大要因とされるIPスプーフィングやパケット増幅に対して脆弱性がある。
攻撃者がCoAPクライアント(IoT機器)に小さなUDPパケットを送ると、クライアント側はこれよりもはるかに大きなパケットを返す。DDoS攻撃の世界では、このような応答時のパケットサイズは増幅計数として知られている。CoAPの場合、この増幅計数は10~50に達する可能性がある。どれほど増幅されるかは、最初のパケットと、これに呼応して生じた応答パケット(および読み込まれるプロトコル分析)によって異なる。
さらに、CoAPはIPスプーフィングに対して脆弱なため、攻撃者は「送信者IPアドレス」を、DDoS攻撃を仕掛けたい相手のIPアドレスに差し替えることができる。その場合、被害者は、増幅されたCoAPトラフィックの容赦ない物量による攻撃を受けることになる。
CoAPの設計者は、このタイプの問題を防ぐためにセキュリティ機能を追加したが、Cloudflareが2017年にブログで指摘したように、デバイスメーカーがこうしたセキュリティ機能を実装すれば、CoAPははもはや軽量ではなくなり、軽量プロトコルのメリットがすべて失われる。
そのため、現在のCoAP実装のほとんどは、セキュリティが強化されたモードではなく、軽量だがDDoS攻撃に対して脆弱な「NoSec」セキュリティモードを採用している。
CoAP搭載機器の急増
だが、CoAPは新しいプロトコルだったので、たとえすべてNoSecモードで稼働していたとしても、以前のように数百台レベルの脆弱な機器が散在する程度であれば、問題にならなかったはずだ。
だがあいにく、事情が変わり始めた。eCrimeLabsの創設者であるDennis Rand氏が2018年5月にセキュリティ関連のカンファレンス「RVAsec」で行った講演(動画の19分40秒以降)によると、CoAPを搭載する機器の台数は2017年11月以降、急増しているようだ。
Rand氏によれば、CoAP搭載機器の台数は、2017年11月の6500台から翌12月には2万6000台以上に急増したという。2018年に入ると、状況はさらに悪化した。インターネット接続機器の検索エンジン「Shodan」によると、5月までにその数は27万8000台に増え、現時点では58万~60万台で推移しているからだ。