セキュリティHerokuサブドメインWeb 担当者

Heroku のサブドメインテイクオーバー対策|Web 担当者向け実践手順

ドメイン番人3 分で読めます
目次

この記事でわかること

  • Heroku 特有のテイクオーバーパターン
  • 検出する具体手順
  • 是正の 3 ステップ
  • 予防のための運用ルール

Heroku のテイクオーバーが成立する条件

Heroku の dangling 状態

危険な状態

app.example.co.jp  CNAME  myapp.herokuapp.com
                          ↑ Heroku アプリが削除済

Heroku では 同じアプリ名で誰でも新規作成可能な仕様上、過去のアプリ名が解放されると 攻撃者が再取得できます。

攻撃成立のパターン

  1. 御社が myapp.herokuapp.com で社内ツールを試運用
  2. 別ホスティングへ移行して Heroku アプリを削除
  3. しかし app.example.co.jp の CNAME はそのまま残置
  4. 攻撃者が myapp 名のアプリを Heroku で新規作成
  5. カスタムドメイン app.example.co.jp を設定
  6. 御社のドメインで攻撃者のアプリが配信される

自社で確認する手順

1. CNAME が *.herokuapp.com に向いているか確認

dig +short CNAME app.example.co.jp
# → myapp.herokuapp.com. が返れば対象

2. アプリが存在するか確認

ブラウザで https://myapp.herokuapp.com/ を開いて、以下のメッセージが表示されたら dangling 確定:

There's nothing here, yet.
No such app

または heroku-not-found の Heroku エラーページ。

是正の 3 ステップ

Heroku dangling の是正フロー

ステップ 1: 即座に DNS から CNAME を削除

最優先。利用予定がない CNAME はすぐ消します。

ステップ 2: 自社で同名アプリを再取得(攻撃者より先に)

将来また使う可能性がある名前は、自社の Heroku アカウントで heroku apps:create myapp で空アプリを作って占有します。Free / Eco プランでもアプリ名予約は可能。

heroku apps:create myapp --no-remote

ステップ 3: カスタムドメインの所有確認 ACM 設定

Heroku の Automated Certificate Management(ACM)+ カスタムドメイン設定で、そのドメインを設定できるアカウントを限定できます。

heroku domains:add app.example.co.jp --app myapp
heroku certs:auto:enable --app myapp

ACM が有効化されていると、別アカウントで同じカスタムドメインを設定しようとした際にエラーになります(DNS challenge 失敗)。

予防のための運用ルール

ルール 内容
解約フローの整備 Heroku アプリ削除 = DNS 整理 = カスタムドメイン削除をセットで実施
検証用アプリの命名規則 検証用は <会社名>-test-<日付> で識別しやすく
終了期限の DNS メモ 期間限定のアプリは TTL を短くして自動失効させる
棚卸し頻度 半年〜1 年に 1 回、CT log + DoH で全 herokuapp.com への CNAME を点検

検出を自動化する

ドメイン番人の サブドメイン棚卸し 単発チェック では *.herokuapp.com パターンの dangling CNAME を自動検出します。

まずは現状を把握しましょう

棚卸しと是正の支援は サブドメイン棚卸し+テイクオーバーリスク診断(5 万円〜)でご相談ください。

関連記事:

総合点検は 無料のドメイン診断、SSL 単独は SSL 単発チェック をご利用ください。

次の一歩は無料診断から。