dnsmasqが抱える脆弱性「DNSpooq」がもたらすセキュリティリスクとは?

この記事をシェア

オープンソースのDNSサーバーとして広く知られているdnsmasq。しかし、その脆弱性「DNSpooq」の発覚により、改めてDNSサーバーのセキュリティリスクが認識されるようになった。この記事では、DNSの仕組みをはじめ、DNSに関連するセキュリティインシデントを紹介した上で、DNSサーバーを保護する設定・管理の方法について解説していく。

dnsmasqが抱える脆弱性「DNSpooq」がもたらすセキュリティリスクとは?

DNS(Domain Name System)とは

DNS(Domain Name System)は、インターネット上のIPアドレスとドメイン名を紐づける役割を担う仕組みである。インターネット基盤を構成する技術の1つとして知られている。

あるWebページにアクセスする際、Webブラウザーのアドレス欄にドメイン名を入力することになる。ドメイン名は人間が記憶しやすい文字列で構成されている。そして、そのドメイン名にはサーバーを一意に特定するIPアドレスが紐づいている。そこで、Webブラウザーがドメイン名を送信し、IPアドレスを問い合わせる先の仕組みがDNSである。こうした問い合わせに応じて、ドメイン名からIPアドレスを導き出す処理は「名前解決」と呼ばれ、この処理を担うコンピューターはDNSサーバーと呼ばれる。

1つのサーバーに名前解決の問い合わせが集中すると、アクセス頻度が多いWebページの場合、DNSサーバーの負荷が高まってしまうという問題が生じる。そのため、ドメイン名のピリオドで区切られたドメインレベルに応じて、階層的にDNSサーバーを割り当てるといった方法で負荷分散を図っている。

また、DNSの問い合わせ結果を一時保存するDNSキャッシュサーバーと連携して負荷分散する仕組みもある。DNSが分散ネットワークの構造をとっているため、ユーザーは円滑にインターネット接続ができるようになっているのだ。

DNSサーバーを構築できるオープンソースソフトウェアdnsmasq

先述したインターネット接続で利用されるDNSの仕組みは、組織・企業内部のローカルネットワークでも利用される。企業内部で設置したサーバーに対し、IPアドレスとドメイン名の組み合わせをDNSサーバーに設定することで、名前解決の機能を実装する。

また、ローカルネットワーク内では一般的に、サーバーと同様、ノートパソコンやスマートフォンといったデバイスにも個別にIPアドレスが割り当てられる。この割り当てを動的に行うのがDHCP(Dynamic Host Configuration Protocol)サーバーだ。

規模の大きい企業や複数拠点を有する企業の場合、社内にDNSサーバーやDHCPサーバーを設置し、一元的にデータを管理して作業の効率化を図るケースがある。このような場合に利用されるソフトウェアがdnsmasq(DNSマスカレード)だ。

dnsmasqは、DNSサーバー・DHCPサーバーの機能を設定できるオープンソースのソフトウェアとして知られている。小規模のネットワーク向けに設計されているのが特長だ。dnsmasqを利用するメリットとして、主に次の2つが挙げられる。

  • ローカルネットワーク内のサーバーへ、動的かつ一元的に名前解決のサービスを提供する
  • 問い合わせを受けたIPアドレスがキャッシュされるため、外部DNSサーバーとの通信を効率化できる

dnsmasqはサーバーやルーター、アクセスポイントなど、多くのネットワーク機器に導入されている。また、大手企業のネットワーク機器にも一部採用されており、世界各国で利用されている。

DNSキャッシュポイズニングの危険性をもたらす脆弱性DNSpooq

外部に公開され、インターネットからアクセスできるDNSサーバーは、サイバー攻撃の標的とされるケースが多い。中でも、dnsmasqが抱える脆弱性「DNSpooq」は、大きな被害につながる脆弱性として注目を集めた。DNSpooqは大きく分けて、以下2つの問題をもたらす。

1)DNSキャッシュポイズニング

DNSサーバーは問い合わせ内容を一時的にキャッシュとして保存している。DNSキャッシュポイズニング攻撃では、そのキャッシュを書き換えることで、問い合わせたユーザーを不正なサーバーへ誘導する。ユーザーが正しいドメイン名を指定した場合でも、DNS情報が改ざんされているため、フィッシングサイトやマルウェアに感染させるWebサイトへ転送されてしまい、被害につながるリスクがある。

2)バッファオーバーフロー

コンピューターのメモリーに設けられたバッファ(一時記憶領域)に想定以上のデータが入力され、不具合が引き起こされるのがバッファオーバーフロー攻撃だ。メモリーが破壊されたり、デバイスが乗っ取られて意図しない挙動をしたりする恐れがある。

DNSに関連したセキュリティインシデント

DNSpooqの脆弱性に限らず、DNSサーバーに関連した脅威はいくつか報告されている。以下、その例を3つ紹介する。

1)ランダムサブドメイン攻撃(DNS水責め攻撃)

第三者のDNSサーバーを踏み台にして、標的のDNSサーバーに対してDDoS攻撃を仕掛ける。ランダムな文字列をサブドメインに付加した名前解決を依頼するため、キャッシュが無効化される仕組みだ。最終的に標的となったDNSサーバーにアクセスが集中し、サービス停止に陥る。

2)DNSリフレクション攻撃

DNSサーバーの特性を悪用し、標的のサーバーをサービス停止に追い込むDDoS攻撃の一種として知られる。この攻撃では、標的のサーバーを送信元に偽装したDNSリクエストが一斉に送られる。DNSサーバーは即座に応答するため、標的のサーバーへ大量にパケットが送られ、システムダウンにつながる。

3)ドメインハイジャック

DNSサーバーには2つの機能があり、それぞれDNSキャッシュサーバーと、ドメイン名を管理するDNSコンテンツサーバーとして構成されている。DNSコンテンツサーバーに登録された情報が不正に改ざんされると、キャッシュポイズニングと同様、問い合わせを行ったユーザーが不正なWebサイトへ誘導されてしまう。

DNSサーバーの適切な管理と設定

DNSサーバーが攻撃に遭うと、名前解決の対象となるWebサーバーからメールサーバーまで影響が及ぶため、被害が広範囲に至るリスクがある。DNSサーバーを保護するために検討するべきポイントについて、以下に解説していく。

1)送信ポートのランダム化

DNSキャッシュサーバーが使う通信ポート番号を、問い合わせの度にランダムな値に変更する。「ソースポートランダマイゼーション」とも呼ばれる対処方法だ。キャッシュポイズニング攻撃は、攻撃に際してポート番号に問い合わせをかける。そのポートを固定化せずランダムに変更することで、攻撃の成功確率を抑えることが期待される。多くのDNSキャッシュサーバーで実装されている機能であるため、設定を有効化しておくとよい。

2)DNSサーバーの隠ぺい

社内向けDNSサーバーの場合、ファイアウォール内に設置すれば外部からの不正なアクセスを遮断できるため、攻撃から保護できる可能性が高まる。また、外部向けであってもIPアドレスを詐称したデータが届かないよう、ファイアウォールを設定して、不正な通信をフィルタリングする必要がある。

3)レートリミットの設定

一定の基準を超えて大量のアクセスを送ってくる送信元や送信先をブロックする。この対策により、DNSリフレクション攻撃のようなDDoS攻撃を防ぐ。

4)通信の保護・監視

DNSサーバーへの問い合わせや、コンテンツサーバーの書き換え要求などに対し、アクセス制御を行う。通信の状態を監視することで、ファイアウォールだけでは対処しにくいDDoS攻撃やマルウェアの不正な通信を検知できるため、迅速な遮断が可能となる。

DNSサーバーは、攻撃を受けた際の影響が大きくなりやすいにも関わらず、十分な対策が講じられていない事例がしばしば見受けられる。サイバー攻撃者は新たに発覚する脆弱性を常に探しているという前提に立ち、DNSサーバーを管理する際には、最新の脆弱性情報を収集するべきだ。また、自社の機器の脆弱性情報を定期的に収集し、仮に脆弱性が発覚した場合は、速やかにパッチを適用するなど、適切な対策を講じるようにしたい。

この記事をシェア

サーバーのセキュリティ対策に

サイバーセキュリティ
情報局の最新情報を
チェック!