SMSポンピング詐欺:電話認証フォームがクラシファイドサイトのメッセージ予算を静かに食いつぶす仕組み

SMSの請求書が届き、いつもの三倍から四倍の金額になっている。ほかには何も変わっていない。新規広告主の数はいつも通りに見え、掲載板もいつも通りに見え、決済口座にも異常な動きは一切ない。最初に自然に浮かぶ疑いは請求ミスであり、運営者はメッセージ配信業者にサポートチケットを開いて回答を待つ。返ってくる答えは請求ミスよりも厄介なものだ。それらのメッセージが一通残らず実際に送信されていたことを意味し、業者は本当に届いたテキストの料金を取り消したりはしないからだ。
起きたことには名前がある。SMSポンピング、別名SMSトール詐欺、あるいは人為的トラフィック増幅と呼ばれるものだ。これはクラシファイドディレクトリが掲載内容の正当性を保つために頼っている、まさにあの種のフォームを狙う。広告主が電話番号を入力し、コード送信と書かれたボタンを押すあのフォームだ。この確認がそもそもなぜ存在するのかについては、本ブログですでに取り上げている。電話とID確認こそが、掲載板が偽アカウントで埋め尽くされるのを実際に防いでいるからだ。ここで説明する詐欺は、掲載内容そのものにはまったく関心がない。関心があるのはボタンだけだ。
この詐欺が実際にどう機能するか
SMSポンピングは、国際レベニューシェア詐欺と呼ばれるはるかに古い通信業界の手口の一種であり、仕組みを解きほぐしてみれば決して巧妙なものではない。詐欺師は、メッセージの終端料金で利益を得ているキャリアと、正式であれ悪用であれ何らかの取り決めを結ぶ。多くの場合、そのキャリアは事業の所在地から遠く離れた国にある。詐欺師はその後、ボットを使ってサイトのコード送信アクションを何度も何度も発火させ、そのキャリアのネットワーク上にある実在の電話番号を狙う。これらの番号はどれも、テキストを受信できる有効なSIMカードなので、メッセージは跳ね返ったり失敗したりしない。実際に届いてしまう。
メッセージが本当に配達される以上、通信側には、キャリアが送信を拒否したり配信業者が課金を拒否したりする根拠となるような詐欺の兆候は一切現れない。キャリアは配達したメッセージ一通ごとに終端料金を受け取り、レベニューシェアの取り決めのもとで、その料金の一部がボットトラフィックを運用している者へと還流する。メッセージ料金を支払っている事業者は、ネットワークの視点から見れば、単に非常に多くのテキスト送信を依頼した一顧客にすぎない。上流の誰にも、自発的にこれを止める理由はない。
事業の上流にいるどの当事者にも、自発的にこれを止めようとする動機がないという点は、立ち止まって考える価値のある細部だ。キャリアは実際に配達しているメッセージに対して支払いを受けているので、その記録上は何もおかしく見えない。メッセージAPIは事業者とキャリアの間に立ち、送信を依頼された分を忠実に課金するだけだ。登録フォームに押し寄せているトラフィックが広告主らしくないと気づく責任は、結局のところ、それに気づくための動機と可視性の両方を持つ唯一の当事者、つまり請求書を支払う事業者のもとに行き着く。
これが詐欺師にとって魅力的で、ディレクトリにとって高くつく理由は、そのどれもが本物のアカウントを必要としない点にある。ボットは認証を完了する必要もなく、掲載を投稿する必要もなく、コードを入力欄に打ち込む必要すらない。必要なのは、サイトのフォームが電話番号を受け付けてメッセージを発送することだけだ。一件の成功した認証も完了させたことのない登録フローでも、丸一か月分の課金対象トラフィックを生み出すことができる。
なぜ請求書はほかの何よりも先に届くのか
TwilioをはじめとするほとんどのSMS・認証APIは、実際に完了した認証に対してではなく、送信済みまたは試行済みのメッセージに対して課金する。この課金モデルは、特定のベンダーに固有の設計上の欠陥ではない。背後にある電話網がメッセージ配達についてすでに事業者へ課金している仕組みそのものであり、APIはそのコストをそのまま通しているだけだ。実務上の影響として、詐欺キャンペーンは最初の一通の時点から運営者に金銭的損失を与え始め、登録フォームの完了率が静かに崩れていることに誰かが気づくまでには、数時間から数日かかる。
この規模がどこまで達しうるかは、机上の話ではない。2022年12月、イーロン・マスクはTwitter Spacesのセッション中に、Twitterがまさにこの手口によって年間およそ6千万ドルを失っていると公に述べ、プラットフォームに向けて不正な二段階認証トラフィックを水増ししていたと彼が主張する約390の通信キャリアの名を挙げた。この数字はマスク本人の主張であり、監査を経た企業開示ではなかったが、対応そのものは現実に行われ、不正対策ベンダーのマーケティング記事を超えて広く報じられた。Twitterはトラフィックが不正らしく見えるキャリアとの関係を断ち、数か月後にはコストを理由に、無料のSMSによる二段階認証を有料サブスクライバーに限定した。Twitterほどの規模と技術陣を持つ企業でさえ、気づいて対応するまでに数か月を要した。毎朝ログを読む不正対策チームを持たず、単一の独立したメッセージアカウントで運営されているディレクトリには、組み込まれた警告ははるかに少ない。
この詐欺を実際に暴く数字は、送信されたメッセージの量ではない。本物のマーケティング施策や、実際に忙しい週もその数字を押し上げうるからだ。真に意味を持つのは、送信されたコードと正常に入力されたコードの比率だ。全体の量が伸びている最中でさえ、完了率がいつもの水準から静かに下がっていくことこそが、フォームに押し寄せているトラフィックが登録を終える気のある人間で構成されていないという合図になる。
なぜオープンな掲載フォームがまさに標的の条件に合うのか
クラシファイドディレクトリには、コード送信ボタンを触れやすくしておく構造的な理由がある。初めて登録する広告主に加わる摩擦は一つひとつがコンバージョンを損なうものであり、本ブログはすでに、決済が絡んでくるよりも前の段階でその摩擦こそ入口で慎重に守る価値がある理由を取り上げている。正当な広告主にとって手早く歓迎的な電話認証のステップは、同じ設計ゆえに、本物のユーザーになるつもりなど微塵もないボットにとっても、まったく同じように手早く歓迎的なものになる。
この露出度は、外から見えるよりも、小規模で独立した運営者にとって鋭いものになる。大手プラットフォームはボリューム価格を交渉し、その関係の一部として何らかの不正監視を含む契約を結んでいることが多い。標準的な従量課金のメッセージAPIを通じて登録フローを流しているディレクトリには、そのような緩衝材はない。不正なメッセージ一通ごとに、正当なメッセージと同じ単価で登録済みのカードへ直接課金され、誰かが請求書に気づくまで急増を吸収するものは何もない。
だからといって、ある国番号をブロックすることが一度設定したら放置してよい決定になるわけではない。新しい都市へ展開したり、旅行する広告主を獲得したりするディレクトリは、一年前に正当な理由でブロックされていた国番号の裏に、正当な登録のかたまりを見つけることがある。制限された国番号のリストを、同じ周期で見直されるほかのあらゆる項目と並べて、数か月おきに見直す対象として扱うことで、その防御策が静かに、登録を失う二つ目の原因へと姿を変えるのを防げる。
これは、本ブログが検証用メールが広告主の受信箱にまったく届かないことがある理由を取り上げたときに説明した障害とは別のものだ。あの記事は、失われた登録一件分以外には何も費用をかけずに静かに失敗するメッセージについてだった。今回は、意図したとおりに正確に届き、届くたびに実際の金銭を確実に奪っていく、騒々しく成功するメッセージについての話だ。
実際に何がこれを止めるのか
第一の層は、コード送信アクションそのものに対するレート制限で、ブラウザに任せるのではなくサーバー側で強制する。単一のIPアドレス、セッション、あるいは電話番号が短い時間枠内に要求できるコードの数に厳格な上限を設ける。これだけでは多数のIPアドレスを使う分散ボットネットワークは止められないが、攻撃のうち最も安価で手抜きなバージョンを排除し、より本気の相手にはより多くの労力を強いることになる。
第二の層は、送信アクションが発火する前に、その後ではなく置かれるボットチェックだ。人間に何か煩わしいことを解かせるのではなく、リクエストを人間が起動したことを確認する仕組み、たとえばバックグラウンドでリクエストを評価する不可視のチャレンジなどを指す。詐欺全体が自動的かつ大量に送信を発火させることに依存している以上、自動化された発火を目に見えて遅らせるものは何であれ、一部のボットを通してしまうとしても、攻撃のコストを直接押し上げる。
第三の層は、ディレクトリの実際の広告主層がほとんど使うことのない電話番号のプレフィックスに対して、必ずしも完全なブロックではなく摩擦を課すことだ。一国内の都市を対象とするサイトには、広告主層がこれまで意味のある存在感を持ったことのない国番号に向けられた検証要求の波を、二次チェックなしに受け入れる理由はほとんどない。
第四の層は、デフォルト設定がすでにカバーしていると決めつけるのではなく、メッセージ配信業者がすでに提供している不正対策をきちんと有効にすることだ。具体例として、TwilioはVerify Fraud Guardという機能を提供しており、トラフィックのパターンを分析して疑わしいポンピング行為を検出し自動的にブロックする。これはVerifyの顧客に対してデフォルトで有効になっており、わずかな誤検知率と引き換えに高いブロック率を得られる、調整可能な保護レベルも備えている。このような機能が実際にオンになっていて、サイトの実際のトラフィックに見合ったレベルに設定されているかを確認するのに費用はかからず、サイト自身のロジックでは見逃してしまうものを捕まえてくれる。
第五の層は、一か月後に請求書で発見するのではなく、業者側に直接設定しておく支出アラートだ。1日あたりのメッセージ支出が通常の説明がつかない水準を超えた時点で通知を発するしきい値を設けることで、放置すれば何週間も静かに続いていたであろう詐欺キャンペーンを、数時間のうちに気づかれるものへと変える。
今週やるべきこと
先月分のメッセージログを取り出し、総量だけでなく、送信されたコードと正常に検証されたコードの実際の比率を計算する。集計値としては問題なさそうに見える数字でも、比率が崩れていた特定の週や特定の国番号が隠れている場合がある。この一つの計算だけで、この詐欺がすでに起きているかどうかについて、本稿の他のどの内容よりも多くのことが運営者にわかるはずだ。
次に、配信業者に直接、三つの設定を確認する。Fraud Guardのような不正対策が有効になっているか、どのレベルか。支出アラートが存在するか、どのしきい値で発動するか。そして、コード送信のエンドポイントに、ブラウザに無視するよう指示できるものに依存しないサーバー側のレート制限があるかどうかだ。これら三つの確認のいずれも、新しいソフトウェアや新しい業者との関係を必要としない。必要なのは、業者に直接尋ね、返ってくる答えを読む時間だけだ。


