ソニーネットワークコミュニケーションズは2026年10月27日、So-netの会員データベースが不正アクセスを受け、会員情報が漏えいしたと公表しました。対象はSo-net会員の2,141,986件と、ドコモ光「plala(Sコース)」会員の443,495件で、合わせて約258万件です。氏名・電話番号・メールアドレス・生年月日などに加え、4つのメールサービスでは54,401件のメールのパスワードも漏れました。前半では、自分が対象かの確かめ方、メールのパスワードの再設定、本物の問い合わせ番号を公式発表から整理します。後半は、会員のパスワードは無事なのにメールのパスワードだけが漏れた構造と、退会者の情報を残しすぎない処理をPythonで再現します。
まとめ:So-net情報漏洩で漏れた258万件の項目と、会員が今日やること
So-netのお知らせによると、10月19日に外部から不正アクセスを受け、23日に確認して対象サーバを止め、24日に漏えいした項目と件数を把握しました。So-net会員の内訳は現会員1,869,771件と、2026年3月以降に退会した元会員272,215件です。So-netのマイページに入るときのパスワードとクレジットカード情報は漏れていないとしています。
会員が今日やることは2つに絞れます。メールサービス(G)・A-Box・ソネットVAIOメール・PostPetメールのどれかを使っているなら、初期化されたメールのパスワードを再設定してください。もう1つは、So-netやドコモを名乗るメール・SMS・電話に応じないことです。氏名と電話番号と生年月日がそろって漏れているため、本人確認を装った連絡が来やすい状態にあります。
| 項目 | 公表内容(2026年10月29日時点) |
|---|---|
| So-net会員 | 2,141,986件(3月以降の退会者を含む) |
| plala(Sコース)会員 | 443,495件(6か月以内の解約者を含む) |
| 漏えいした項目 | 氏名・電話番号・メールアドレス・生年月日など |
| メールのパスワード | 4サービス計54,401件(10月27日に初期化) |
| 銀行口座情報 | 16件(暗証番号は保有なし) |
| 漏れていない情報 | マイページのパスワード・カード情報 |
| 未公表 | 侵入経路・原因・補償の有無 |
So-net・plala会員が最初に確かめること:対象の範囲、メールの再設定、電話窓口
自分が対象かの線引き、So-net214万件とplala(Sコース)44万件の退会者
So-netの現会員は全員が対象に入る規模です。退会した人は、2026年3月以降に退会したかどうかで分かれます。2026年2月末までに退会した人の情報は漏れていないとSo-netは説明しています。So-netのご質問と回答によると、退会後も最終月の料金の請求や問い合わせ対応のために、一定期間は情報を持っていました。
ドコモ光でplala(Sコース)を使っている人は、ドコモ側の発表も確かめてください。ドコモのお知らせは、対象を利用中の人と過去6か月以内に解約した人とし、漏れたメールアドレスは「so-net.ne.jp」のドメインのものに限るとしています。同じplalaでも「plala(ドコモ光)」や「ぷらら光メイト with フレッツ」の情報は流出していません。対象者には個別に連絡するとしていますが、10月29日時点で、IDを入れて対象かを調べるページはありません。
初期化された4つのメールサービスと、パスワード再設定の2段階の手順
メールのパスワードが漏れたのは、次の4サービスです。So-netは10月27日の10時頃から順次パスワードを初期化しました。事前の連絡がなかったのは、第三者がメールを読んだり送ったりできる状態だったためと説明しています。
| サービス | アドレスの形 | 件数 |
|---|---|---|
| メールサービス(G) | gyao.ne.jp・gate01.com など | 24,655 |
| A-Box(追加メールボックス) | abox〜.so-net.ne.jp | 17,672 |
| ソネットVAIOメール | 〜.vaio.ne.jp | 7,005 |
| PostPetメールアカウント | postpet〜.so-net.ne.jp | 5,069 |
再設定は2段階です。まず各サービスのパスワード変更ページで新しいパスワードを決め、次にOutlookなどのメールソフトの設定画面のパスワードも同じものに書き換えます。反映に30分ほどかかる場合があるとFAQは書いています。無料の基本メールボックスのパスワードは漏れていないので、今回の初期化の対象外です。漏れたパスワードを他のサービスでも使っていたなら、そちらも変えてください。メールアドレスとパスワードの組を別サービスで試す攻撃の仕組みはパスワードリスト攻撃の検知の指標と漏えい照合で解説しています。
So-netとドコモの正規窓口:0120-36-8887と0120-035-700
So-netやドコモを名乗る連絡を受けた場合は、本物の窓口を確認してください。窓口は会員の種類で分かれます。So-net会員はSo-net特設ダイヤル(0120-36-8887、平日と土曜の10時〜18時、11月1日と3日も受付)、plala(Sコース)の会員はplala(Sコース)特設ダイヤル(0120-035-700、10時〜19時、土日祝も受付)です。So-netは番号の掛け間違いに気を付けるよう呼びかけています。
この2つ以外の番号から「So-netの調査で」「ドコモのセキュリティ担当です」とかかってきた電話は疑ってください。漏れた生年月日を言い当てて信用させる手口が考えられます。両社とも、メール・SMS・電話に応答しない、本文のリンクや添付ファイルを開かないよう求めています。偽の連絡が成り立つ仕組みはフィッシング詐欺の成立の仕組みと技術的対策で取り上げました。
公式発表で追う経過:10月19日の不正アクセスから27日の公表まで8日間
両社の発表の日付を並べると、次のとおりです。
- 10月19日(月):So-net会員データベースのサーバが外部から不正アクセスを受ける
- 10月23日(金):不正アクセスを確認し、対象サーバを停止、通信元を遮断
- 10月24日(土):調査で漏えいした項目と件数を把握
- 10月26日(月):ドコモがソニーネットワークコミュニケーションズから報告を受ける
- 10月27日(火):メールのパスワードを初期化し、両社が公表
原因は調査中です。NUROを含むほかのサービスでは漏えいを確認しておらず、10月27日時点で二次被害も確認されていません。So-netの設備はドコモがplala(Sコース)の運用で委託している先でもあり、ドコモは委託元として自社の顧客向けに別の窓口を設けました。
個人情報保護委員会への報告と、確報の期限から見た続報公表の時期
So-netは個人情報保護委員会に報告したとしています。個人情報保護委員会の漏えい等の対応ページは、速報を発覚日から3〜5日以内、確報を30日以内とし、不正な目的のおそれがある場合の確報は60日以内としています。不正アクセスによる漏えいは人数にかかわらず報告の対象です。発覚を10月23日と置くと、確報の期限は12月下旬になります。原因や侵入経路はそのころまでに続報として出る可能性があります。速報と確報に何を書くかは個人情報保護委員会への報告義務の実務で整理しました。
開発側の教訓:会員のパスワードは無事でもメールのパスワードが漏れた構造
公表文が分けた2種類のパスワードと、メール認証の保存形式が弱点になる理由
今回の公表で目を引くのは、マイページのパスワードは漏れていないのに、4つのメールサービスのパスワードは漏れた点です。FAQは、漏えいで第三者がメールを読み書きできる状態だったと説明しています。持ち出された値が、そのままログインに使える形だったと読めます。保存形式は公表されていないので、ここからは一般論です。
メールサーバの認証は、Webのログインより古い方式を引きずりがちです。Dovecot 2.4.2のパスワードスキームの説明は、ARGON2IDやBLF-CRYPTなど強い方式を選ぶよう勧めつつ、CRAM-MD5のような方式を使うには「cleartext」か方式専用の形でパスワードを保存する必要があると書いています。古いメールソフトとの互換のためにこの方式を残すと、会員DBのパスワードは一方向のハッシュで守っていても、メール側だけ元に戻せる形で持つことになります。So-netがどのメールサーバを使っているかは公表されていません。
平文とscryptの保存で、持ち出された後の差をPythonで再現する手順
次のコードは標準ライブラリだけで動きます。メールのパスワードを平文で持つ表とscryptで持つ表を作って中身を取り出し、続けて退会者の個人項目を消す処理も試します。scryptの設定値はOWASPのPassword Storage Cheat Sheetの最小設定(N=2^17・r=8・p=1)に合わせました。
# メールのパスワードを「使える形」で持つ危険と、退会者の個人項目を期限で消す処理を再現する(Python 3.8以上・標準ライブラリのみ)
# 使い方: python sonet_demo.py
import hashlib, hmac, os, sqlite3
con = sqlite3.connect(":memory:")
con.executescript("""
CREATE TABLE members(id INTEGER PRIMARY KEY, user_id TEXT, name TEXT, phone TEXT, birth TEXT,
status TEXT, withdrawn_on TEXT);
INSERT INTO members VALUES
(1, 'u001', 'aoi', '090-0000-0001', '1990-01-01', 'active', NULL),
(2, 'u002', 'hikaru', '090-0000-0002', '1985-05-05', 'withdrawn', '2026-03-31'),
(3, 'u003', 'sora', '090-0000-0003', '1979-09-09', 'withdrawn', '2026-09-30');
CREATE TABLE mail_plain(address TEXT, password TEXT);
CREATE TABLE mail_hashed(address TEXT, salt BLOB, hash BLOB);
""")
# OWASP Password Storage Cheat Sheet の scrypt 最小設定(N=2^17, r=8, p=1)
N, R, P = 2**17, 8, 1
def scrypt(pw, salt):
return hashlib.scrypt(pw.encode(), salt=salt, n=N, r=R, p=P, maxmem=2**28, dklen=32)
for addr, pw in [("mail-aoi", "Tsuki-2026"), ("mail-hikaru", "Hoshi-1985")]:
con.execute("INSERT INTO mail_plain VALUES (?, ?)", (addr, pw))
salt = os.urandom(16)
con.execute("INSERT INTO mail_hashed VALUES (?, ?, ?)", (addr, salt, scrypt(pw, salt)))
# 1) 持ち出されたテーブルの中身。平文はそのままログインに使える
print("[plain ] dump:", con.execute("SELECT * FROM mail_plain").fetchall()[0])
addr, salt, h = con.execute("SELECT * FROM mail_hashed").fetchone()
print("[hashed] dump:", addr, h.hex()[:16] + "...")
# 2) 攻撃者が候補を1つ試すたびに scrypt 1回分の計算が要る
for guess in ["password", "Tsuki-2026"]:
print("[hashed] try", guess, "->", hmac.compare_digest(scrypt(guess, salt), h))
# 3) 退会から90日を過ぎた会員は、請求に要るIDだけ残して個人項目を消す
TODAY = "2026-10-19"
cur = con.execute("""
UPDATE members SET name = NULL, phone = NULL, birth = NULL
WHERE status = 'withdrawn' AND withdrawn_on <= date(?, '-90 days') AND name IS NOT NULL
""", (TODAY,))
print("[purge ] cleared rows:", cur.rowcount)
print("[purge ] left:", con.execute("SELECT user_id, name, phone FROM members ORDER BY id").fetchall())
Python 3.14.7(Windows)で実行した結果です。2行目のハッシュ値はソルトが乱数なので、実行のたびに変わります。
$ python sonet_demo.py
[plain ] dump: ('mail-aoi', 'Tsuki-2026')
[hashed] dump: mail-aoi c0c76f3ff55995bb...
[hashed] try password -> False
[hashed] try Tsuki-2026 -> True
[purge ] cleared rows: 1
[purge ] left: [('u001', 'aoi', '090-0000-0001'), ('u002', None, None), ('u003', 'sora', '090-0000-0003')]
1行目が平文の表から取り出した値で、パスワードがそのまま読めます。scryptの表から出てくるのはソルトとハッシュ値だけです。攻撃者は候補を1つ試すたびにscryptを1回計算し直すことになり、3行目と4行目のように当たりを見つけるまで総当たりを続けるしかありません。OWASPはArgon2id(メモリ19MiB・反復2回・並列度1)を第一に挙げており、scryptはその次の選択肢です。どちらを選んでも、平文や1回だけのMD5で持つ状態とは持ち出された後の時間稼ぎが桁で違います。
互換のためにCRAM-MD5などをやめられないなら、メール側だけでもアプリ固有パスワードを発行し、会員のログイン用パスワードと分けておくべきです。漏れたときに初期化する範囲を、メールの利用者だけに閉じ込められます。ログインそのものを強くする方法は多要素認証の実装方式と耐フィッシングMFAで扱っています。
退会者27万件を残さないための、請求後に個人項目を消す処理の組み方
今回漏れたSo-net会員のうち272,215件は、3月以降に退会した元会員でした。個人情報保護法の第22条は、利用する必要がなくなった個人データを遅滞なく消去するよう努めることを事業者に求めています。最終月の請求や問い合わせのために一定期間持つのは理由がありますが、請求に要るのは会員番号と金額で、電話番号や生年月日までは要りません。
先のコードの5行目と6行目は、退会から90日を過ぎた会員の氏名・電話番号・生年月日を消し、会員IDだけを残した結果です。9月30日に退会したばかりの会員は残り、3月31日に退会した会員だけが消えています。日付の比較はPythonのsqlite3のプレースホルダで渡しています。本番ではこのUPDATEを夜間のジョブで毎日回し、消した件数をログに残してください。90日という値は例で、請求の締めと問い合わせの受付期間から自社で決めます。保存期間と削除を要件に落とす手順は顧客情報管理システムの保存期間と削除の設計にまとめました。
侵入から確認まで4日、会員テーブルの一括読み出しを見る監視の指標
公表文の日付では、不正アクセスが10月19日、確認が23日です。4日の間、会員データベースへの外部からの接続が続いていた可能性があります。258万件を持ち出すには、ふだんの画面操作では起きない大量の読み出しが必要です。
監視するなら、まず1回の問い合わせで返した行数の最大値を1時間ごとに見てください。会員画面が返すのは本人の1行で、千行を超える読み出しはそれだけで異常です。次に、会員テーブルへ接続した送信元の数と、営業時間外の接続の件数を並べます。APIの入口で読み出しの量を絞る方法はAPI不正アクセス対策の実装手順で扱っています。
事業者の判断:会員DBやメール基盤を委託先に預けるサービスで、診断を入れる条件
会員の連絡先と退会者の情報を持つサービスは、保存形式と保存期間を年1回点検
今回のplala(Sコース)のように、自社の顧客の会員情報を外部の設備に預けている事業者は少なくありません。ドコモが報告を受けたのは、So-netが不正アクセスを確認した3日後でした。委託先で起きた漏えいでも、顧客への説明と窓口の用意は委託元が担うことになります。
次の3つのどれかに当てはまるなら、外部の脆弱性診断と、パスワードの保存形式・保存期間の点検を年1回入れるべきです。メールなど古い認証方式を残したサービスを会員に提供していること、退会者の個人項目を消す処理を持っていないこと、会員テーブルの読み出し件数を監視していないことです。逆に、会員情報を持たず、ログインを外部のIDサービスに任せている小さな会員サイトなら、まずは保存期間の棚卸しを先に済ませれば足ります。診断の種類と費用の考え方は脆弱性診断の種類・費用相場と外注の判断基準、企業として点検する範囲は不正アクセス対策の点検手順で解説しています。
会員サイトや管理画面、メール基盤に同じ弱点が残っていないかを第三者に確かめてもらいたいなら、脆弱性診断・セキュリティ診断で相談できます。
よくある質問
So-netの情報漏洩について、会員から出やすい質問をまとめました。
So-netの情報漏洩で自分が対象か確かめる方法はありますか?
10月29日時点で、IDを入れて対象かを調べるページはありません。So-netの現会員と、2026年3月以降に退会した人は対象に含まれる規模です。2026年2月末までに退会した人は対象外とされています。口座情報やパスワード再設定用の通知書情報が漏れた可能性のある人には、So-netが個別に連絡するとしています。
So-netのメールのパスワードはどうやって再設定しますか?
メールサービス(G)・A-Box・ソネットVAIOメール・PostPetメールの利用者が対象です。まず各サービスのパスワード変更ページで新しいパスワードを設定し、次にメールソフトの設定画面のパスワードも書き換えます。反映まで30分ほどかかる場合があります。マイページに入れないときは、FAQの案内に沿ってユーザーIDを確認してください。
マイページのパスワードも変えたほうがいいですか?
So-netは、マイページのユーザーIDとパスワードは漏れていないとしています。ただし、ユーザーIDそのものは漏れた項目に入っているので、推測されやすいパスワードを使っているなら変えておくと安心です。同じパスワードを他のサービスでも使っている場合は、そちらを先に変えてください。
plala(Sコース)の会員はどこに問い合わせればいいですか?
ドコモ光のplala(Sコース)を使っている人の窓口は、plala(Sコース)特設ダイヤル(0120-035-700)です。受付は10時〜19時で、土日祝も受け付けています。So-net会員向けの特設ダイヤル(0120-36-8887)とは番号も受付時間も違うので、掛け間違いに気を付けてください。
So-netの情報漏洩で補償はありますか?
10月29日時点で、So-netとドコモの公表文やFAQに補償の記載はありません。漏れた情報にクレジットカード情報は含まれておらず、銀行口座情報は16件で口座の暗証番号は持っていなかったとしています。補償の有無は今後の発表で確かめてください。
関連記事
- パスワードリスト攻撃とは?検知の指標と漏えい照合・レート制限の実装:漏れたパスワードが別サービスで使われる仕組み
- イエローハット情報漏洩の第二報|179万人の流出確定とSMS・0120-405-092の確認:会員情報の大規模流出で偽のSMSを見分けた事案
- 顧客情報管理システムの要件|個人情報保護法の安全管理措置・保存期間・削除を設計に落とす【2026年版】:退会者の情報を残さない設計
- 個人情報保護委員会への報告義務|対象4類型・速報3〜5日と確報30日の実務:漏えい時に事業者が報告する内容と期限
- フィッシング詐欺とは?成立の仕組みと実装者向けの技術的対策を解説:漏れた個人情報を使った偽の連絡の手口