株式会社ウィルズは2026年11月2日、同社の広告事業で運営するポイント交換サービス「ネットマイル」のシステム環境に第三者の不正アクセスがあり、会員の個人情報が漏えいした可能性があると開示しました。対象は最大約549万人で、この数には退会した会員の情報も含まれます。本記事は、会員が知りたい「自分は対象か」「どんな連絡に気を付けるか」に開示資料の文言で先に答える構成です。後半では、退会者まで漏えいの対象に入った構造を手がかりに、退会会員の個人データを保持期間で消す処理をPythonとsqlite3のコードで示します。
まとめ:ネットマイル不正アクセスで開示された事実と会員・運営事業者が今日やること
確定しているのは次の事実です。ウィルズは11月2日にTDnetで開示し、ネットマイルと「すぐたま」のサイトを停止しています。インターネット上での公開・拡散や、情報を悪用した被害は確認されていないとしています。侵入の経路・手口・発覚日は書かれていません。
会員が今日やることは2つです。ウィルズやポイント交換先、金融機関を名乗るメール・SMS・電話のURLを開かず、パスワードや暗証番号を入力しないこと。ネットマイルと同じパスワードをほかのサービスで使っていれば、念のため変えておくことです。ポイントサイトや会員制サービスを運営する事業者は、退会した会員の氏名やメールアドレスがいつまでデータベースに残っているかを確かめてください。
| 項目 | 開示されている内容(11月3日時点) |
|---|---|
| 開示日(ウィルズ・東証グロース4482) | 2026年11月2日 |
| 対象サービス | ネットマイル(ウィルズの広告事業) |
| 対象人数 | 最大約549万人(退会会員を含む最大数) |
| 対象の情報 | 氏名・メールアドレス・特典交換に関する情報 |
| 保有していない情報 | クレジットカード情報・マイナンバーカード情報 |
| 停止中のサイト | ネットマイル・すぐたま |
| 主力サービスへの影響(確認せず) | プレミアム優待倶楽部 |
| 主力サービスへの影響(確認せず) | IR-navi・IR-port |
11月3日時点で、原因や件数を確定させる第2報は出ていません。
自分が対象か確かめる手順|退会済み会員も含む最大約549万人とすぐたまの停止
ネットマイルの会員が対象で退会済みの人も含まれる最大約549万人の意味
ウィルズの11月2日の開示によると、対象となる可能性がある人数は「最大約549万人(退会された会員情報を含む最大数)」です。過去にネットマイルへ会員登録したことがあれば、すでに退会していても対象に入る前提で動いてください。
「最大数」とあるとおり、549万人全員の情報が持ち出されたと確定したわけではありません。原因と影響範囲は調査中で、対象の会員への通知は調査状況に応じて進めるとしています。個別に対象かどうかを確かめる方法や、会員向けの専用窓口は、11月3日時点の開示に載っていません。
ウィルズやポイント交換先を名乗るメール・SMS・電話への対応手順
開示は会員に向けて、ウィルズや金融機関、ポイント交換先などを装った不審なメール・SMS・電話への注意を呼びかけています。特に「不審な連絡に記載されたURLへのアクセスや、パスワード・暗証番号等の入力を避け」るよう求めています。
対象の情報に氏名とメールアドレスがそろっているため、宛名に本名が入ったメールが届いても、それだけで本物とは判断できません。ネットマイルとすぐたまのサイトは停止中で、11月3日に当社が確認した時点では両サイトとも応答しませんでした。「ポイントが失効する」「交換手続きの再開」をうたう連絡は、サイトが再開するまで疑ってかかるのが安全です。偽サイトへ誘導する手口はフィッシング詐欺とはで解説しています。
パスワードは対象項目に無いが同じパスワードを使うサービスを先に変える理由
開示が挙げる項目は、氏名・メールアドレス・特典交換に関する情報で、パスワードは明記されていません。ただし、会員ごとに保存されている情報の種類は異なるとされ、項目の全体像は調査中です。
ネットマイルと同じメールアドレスと同じパスワードをほかのサービスで使っている人は、先にそちらを変えておくと、続報で項目が増えた場合にも備えられます。メールアドレスだけが漏れた場合でも、ほかのサイトで漏れたパスワードと組み合わせて試される攻撃があります。この攻撃の仕組みと検知はパスワードリスト攻撃とはで扱いました。
漏えい項目と2020年の事案から読む、退会会員まで対象に入ったポイント交換の構造
氏名・メールアドレスと特典交換に関する情報が同じ名簿にそろった意味
開示は対象の情報を「会員情報及びポイント交換に関連して登録された以下の情報」とし、氏名、メールアドレス、その他特典交換に関する情報を挙げています。特典交換に関する情報の中身は書かれていません。ポイント交換サービスでは、一般に交換先の電子マネーやポイントの会員番号、交換の履歴などがこれに当たります。
攻撃者にとって、氏名とメールアドレスに「どの交換先を使っているか」が付いた名簿は、偽の連絡の文面を作りやすくします。交換先の名前をかたった「ポイントの交換に失敗しました」というメールは、実際にその交換先を使っている会員ほど信じやすくなります。開示が交換先を名乗る連絡を名指しで注意喚起しているのは、この構造に沿った案内です。
2020年8月のネットマイル不正アクセスと電子マネーへの即時交換の停止
ネットマイルは2020年にも不正アクセスを受けています。ScanNetSecurityの2020年8月13日の報道によると、当時の運営会社だった株式会社ネットマイルは8月11日に第三者からの不正アクセスを確認したと発表しました。他社サービスと同じアカウント情報を使う会員にパスワードの変更を求め、電子マネーWAON、ドコモ口座、Kyashへの即時交換を一時停止しています。
2020年の事案はログインを奪ってポイントを換金する手口への対処で、今回は会員情報そのものの漏えいの可能性です。種類は違いますが、換金できる交換先を持つサイトが繰り返し狙われる点は共通しています。即時交換を機能単位で止める設計と1日の上限の実装は、infoQの不正アクセスの解説でPythonのコードとともに示しました。
退会から2か月で9,068件を消していたinfoQと退会者を含むネットマイルの差
同じポイントサイトの事案でも、退会者の扱いは分かれます。2026年10月に不正アクセスを受けたinfoQでは、退会から2か月で会員情報を削除する運用があり、そのおかげで9,068件が漏えいの対象から外れました(詳細は上記のinfoQの解説記事)。
ネットマイルの549万人は、退会した会員を含む最大数です。退会者の情報がどれだけ残っていたか、何年分だったかは開示されていません。それでも「退会者を含む」と明記されたことで、退会後も個人データを持ち続けていた構成だったことは読み取れます。退会した会員のデータは、サービスにとって使い道がほぼ無いのに、漏えいしたときの対象人数だけを押し上げます。
主力事業と別のシステム基盤・管理権限体系だったことが示す分離の効果
開示は、ネットマイル事業を「当社の旧子会社を起源とする」事業とし、株主管理プラットフォーム事業とは「異なるシステム基盤、及び管理権限体系」で運営していると説明しています。そのため、プレミアム優待倶楽部、IR-navi、IR-portには影響を確認していないとしています。
基盤と管理者権限を分けていたことで、被害が主力サービスへ広がらなかった形です。反対に言えば、子会社から引き継いだ基盤は、統合後も元の作りのまま動き続けやすい部分でもあります。退会者データの保持期間のような運用ルールが、統合時の見直しから漏れやすいのはこのためです。
退会会員の個人データを保持期間で消すPythonとsqlite3の実装と期間の決め方
個人情報保護法22条の消去の努力義務とガイドライン通則編が求める範囲
個人情報保護法の22条は、個人情報取扱事業者に対し、利用する必要がなくなった個人データを「遅滞なく消去するよう努めなければならない」と定めています。罰則のある義務ではなく努力義務です。個人情報保護委員会のガイドライン(通則編)は、法令で保存期間が決まっている場合はその期間の保存を妨げないとしています。
実務に置き換えると、退会した会員のデータは「残す理由と期間を決め、期間を過ぎたら消す」が原則になります。残す理由として成り立つのは、問い合わせへの対応、不正利用の調査、会計記録の3つが中心です。顧客データ全体の保存期間の設計は顧客情報管理システムの要件で整理しています。
退会から180日を過ぎた会員の氏名・メールと交換先IDだけを消すコード
会員表と交換履歴表を持つポイントサイトを想定した例です。退会日から180日を過ぎた会員について、氏名・メールアドレスと交換先のアカウントIDを消し、交換の記録はポイント数と日付だけ残します。行を削除せず項目を空にするのは、ポイントの付与と交換の件数・合計を会計上で突き合わせられるようにするためです。使うのはPython標準のsqlite3モジュールだけで、purge_withdrawn.pyとして保存します。
import sqlite3
from datetime import date, timedelta
# 退会から保持期間を過ぎた会員の氏名・メールと交換先IDを消し、交換の記録はポイント数と日付だけ残す
RETENTION = timedelta(days=180)
TODAY = date(2026, 11, 3)
db = sqlite3.connect(":memory:")
db.executescript("""
CREATE TABLE members (
id TEXT PRIMARY KEY, name TEXT, email TEXT, withdrawn_on TEXT);
CREATE TABLE exchanges (
id INTEGER PRIMARY KEY, member_id TEXT, dest TEXT,
dest_account TEXT, points INTEGER, done_on TEXT);
""")
db.executemany("INSERT INTO members VALUES (?, ?, ?, ?)", [
("M001", "山田 太郎", "mail-M001", None), # 利用中
("M002", "佐藤 花子", "mail-M002", "2026-09-30"), # 退会から34日
("M003", "鈴木 一郎", "mail-M003", "2024-03-15"), # 退会から2年半
("M004", "高橋 美咲", "mail-M004", "2019-12-01"), # 退会から7年
])
db.executemany("INSERT INTO exchanges VALUES (?, ?, ?, ?, ?, ?)", [
(1, "M001", "電子マネーA", "EM-1001", 500, "2026-10-20"),
(2, "M002", "ギフト券B", "GC-2002", 1000, "2026-08-02"),
(3, "M003", "電子マネーA", "EM-3003", 3000, "2023-11-11"),
(4, "M004", "銀行振込C", "BK-4004", 5000, "2019-06-30"),
])
def exposed():
# 今この瞬間に表が持ち出されたら氏名かメールが出る会員の数
sql = "SELECT COUNT(*) FROM members WHERE name IS NOT NULL OR email IS NOT NULL"
return db.execute(sql).fetchone()[0]
def purge(today):
cutoff = (today - RETENTION).isoformat()
targets = [r[0] for r in db.execute(
"SELECT id FROM members WHERE withdrawn_on IS NOT NULL"
" AND withdrawn_on <= ? AND name IS NOT NULL", (cutoff,))]
with db: # 2つの表を同じトランザクションで更新する
for mid in targets:
db.execute("UPDATE members SET name = NULL, email = NULL WHERE id = ?", (mid,))
db.execute("UPDATE exchanges SET dest_account = NULL WHERE member_id = ?", (mid,))
return cutoff, targets
print("削除前に氏名かメールが残る会員:", exposed())
cutoff, targets = purge(TODAY)
print("基準日", cutoff, "以前の退会者を消去:", ",".join(targets))
print("削除後に氏名かメールが残る会員:", exposed())
for row in db.execute("SELECT m.id, m.name, e.dest, e.dest_account, e.points, e.done_on"
" FROM members m JOIN exchanges e ON e.member_id = m.id ORDER BY m.id"):
print(row)
2026年11月3日に、Python 3.14.7で実行した結果です。会員と交換のデータは架空で、ネットマイルの実際の仕組みではありません。
$ python purge_withdrawn.py
削除前に氏名かメールが残る会員: 4
基準日 2026-05-07 以前の退会者を消去: M003,M004
削除後に氏名かメールが残る会員: 2
('M001', '山田 太郎', '電子マネーA', 'EM-1001', 500, '2026-10-20')
('M002', '佐藤 花子', 'ギフト券B', 'GC-2002', 1000, '2026-08-02')
('M003', None, '電子マネーA', None, 3000, '2023-11-11')
('M004', None, '銀行振込C', None, 5000, '2019-06-30')
実行結果の読み方と保持期間を問い合わせ・不正調査・会計の根拠で決める手順
消去の前は、4人全員の氏名かメールアドレスが残っていました。この時点で表が持ち出されれば、退会から7年たったM004まで漏えいの対象に数えられます。基準日2026年5月7日より前に退会したM003とM004を消すと、残るのは利用中のM001と、退会から34日のM002だけです。交換の記録は4件とも残り、ポイント数と日付で集計できます。
180日はあくまで例です。保持期間は次の順で決めます。
- 退会後に来る問い合わせ(交換の未着・ポイントの残高)が、退会から何日以内に集中しているかを過去の記録で数える
- 不正な交換が発覚するまでの日数を、過去の不正事案から拾い、最も遅いものに余裕を足す
- 会計や税務で残す必要がある記録を洗い出し、個人を特定する項目を外しても残せるかを経理と確認する
- 3つのうち最も長い期間を保持期間とし、利用規約とプライバシーポリシーに書く
本番では、このバッチを毎日動かし、消した件数をログに残します。見落としやすいのはバックアップと分析用の複製で、本体の表だけ消しても、複製に退会者の情報が残っていれば漏えいの対象人数は減りません。ポイントの付与と失効の仕組み全体はポイント管理システムとはで解説しています。
個人情報保護委員会への報告と旧子会社から引き継いだ会員基盤の点検順
不正アクセスの漏えいは件数を問わず報告対象、速報3〜5日と確報60日
不正の目的で行われたおそれがある漏えいは、おそれの段階であっても件数にかかわらず、個人情報保護委員会への報告と本人への通知の対象です。速報はおおむね3〜5日以内、不正アクセスによるものの確報は60日以内に出します。様式と手順は個人情報保護委員会の「漏えい等の対応とお役立ち資料」、判断の流れは個人情報保護委員会への報告義務にまとめました。
ウィルズは、対象の会員への通知と個人情報保護委員会への報告を関係法令に従って行うとしています。業績への影響は2026年12月期で軽微と見込み、開示すべき事項が判明したら速やかに知らせる方針です。原因や確定した件数は、確報の期限に沿って続報で出る可能性があります。
統合で引き継いだ会員基盤を今月点検すべき事業者と次の改修でよい事業者
子会社の統合や事業譲受で会員基盤を引き継ぎ、統合後も元の基盤のまま動かしている事業者は、今月中に点検してください。見る順番は、退会者の個人データが何年分残っているか、管理画面とAPIが外から到達できるか、元の会社の管理者アカウントが残っていないか、の3点です。API側の認可とレート制限の点検項目はAPI不正アクセス対策の実装手順で整理しました。
引き継いだ基盤の中身を自社の担当者が把握しきれていないときは、外から到達できる画面とAPIを第三者の目で洗い出す方が早く済みます。脆弱性診断・セキュリティ診断で、引き継いだ会員基盤を含めて点検できます。
一方、会員基盤を自社で一から作り、退会時に個人データを消す処理がすでに動いている事業者は、この点検を次の改修のときに回して構いません。その場合も、バックアップと分析用の複製に退会者の情報が残っていないかだけは、今月確かめておきます。
よくある質問
ネットマイルの不正アクセスについて、会員と、ポイントサイトや会員制サービスを運営する事業者から出やすい質問をまとめました。
ネットマイルを退会していても情報漏えいの対象になりますか?
対象になる可能性があります。ウィルズの11月2日の開示は、対象人数を「最大約549万人(退会された会員情報を含む最大数)」としています。退会した時期によって情報が残っていたかどうかは開示されていません。過去に会員登録したことがあれば、対象に入る前提で、ウィルズや交換先を名乗る不審なメール・SMS・電話に注意してください。
ネットマイルのパスワードも漏えいしましたか?
開示が挙げる対象の情報は、氏名、メールアドレス、その他特典交換に関する情報で、パスワードは明記されていません。ただし、会員ごとに保存されている情報の種類は異なり、影響範囲は調査中とされています。ネットマイルと同じパスワードをほかのサービスで使っている場合は、念のためそちらを変えておくと安心です。
クレジットカードやマイナンバーカードの情報は漏えいしましたか?
ウィルズは、ネットマイルでクレジットカード情報とマイナンバーカード情報等の個人情報は保有していないと開示しています。これらが漏えいしたという発表ではありません。カードの明細に心当たりのない請求があればカード会社に連絡し、カード番号や暗証番号を聞き出す電話やメールには応じないでください。
ネットマイルとすぐたまはいつ再開しますか?
11月3日時点で再開の時期は開示されていません。ウィルズは二次被害の防止とセキュリティ対策を目的に、ネットマイルとすぐたまのサイトを停止しています。再開をうたうメールやSMSのリンクは開かず、続報はウィルズのTDnet開示や公式サイトで確かめてください。
ネットマイルの不正アクセスの原因は分かっていますか?
11月3日時点では開示されていません。開示資料に書かれているのは、ネットマイルのシステム環境に第三者の不正アクセスがあったことと、原因と影響範囲の調査を進めていることです。情報の公開・拡散や悪用の被害は確認されていないとしています。主力のプレミアム優待倶楽部、IR-navi、IR-portは別の基盤で運営され、影響は確認されていません。
関連記事
- infoQの不正アクセスで89万件持ち出し|ログインできない理由・退会・補填とポイント交換を止める設計:同じポイントサイトの事案と交換機能の緊急停止
- パスワードリスト攻撃とは?検知の指標と漏えい照合・レート制限の実装:漏えいしたメールアドレスを使うログイン試行の検知
- API不正アクセス対策の実装手順:JPCERT注意喚起に沿うレート制限・認可・トークン失効とアプリ解析・SSRF対策:会員基盤のAPIの点検項目
- 顧客情報管理システムの要件|個人情報保護法の安全管理措置・保存期間・削除を設計に落とす【2026年版】:保存期間と削除の設計の総論
- 個人情報保護委員会への報告義務|対象4類型・速報3〜5日と確報30日の実務:漏えい時の報告の判断