---
title: "アットコスメ不正アクセスで会員約300万人：肌質・髪質と退会者の情報を守る会員DB設計"
url: "https://www.issoh.co.jp/tech/details/19217/"
published: 2026-11-02
updated: 2026-11-02
categories: ["セキュリティ"]
publisher: "株式会社一創"
---

# アットコスメ不正アクセスで会員約300万人：肌質・髪質と退会者の情報を守る会員DB設計

アイスタイルは2026年11月2日、コスメ・美容の総合サイト「@cosme」への第三者による不正アクセスで、@cosme共通IDに登録された会員情報の一部、約300万人分が外部に漏えいしたと公表しました。対象は氏名・住所・電話番号・生年月日だけでなく、肌質と髪質も含む会員情報です。本記事では、会員と退会済みの人が知りたい「自分は対象か」「届いた案内メールは本物か」に公式発表の文言で先に答えます。後半では会員サービスを運営する側に向けて、肌質のような嗜好属性を氏名と分けて保管し、退会時に段階的に消す会員DBの設計を、実行できるPythonのコードで示します。

## まとめ：アットコスメ不正アクセスで公表された事実と会員・運営事業者が今やること

確定しているのは次の事実です。アイスタイルは10月28日に漏えいを確認し、第三者のセキュリティ専門会社と原因・影響範囲を調べています。個人情報保護委員会へは報告済みです。侵入の経路や手口は公表されていません。

会員と退会済みの人が今日やることは、cosme.netドメインから届く個別連絡を受け取れるようにし、パスワードやカード番号の入力を求めるメール・SMSに応じないことです。会員サービスの運営事業者は、嗜好属性と氏名・住所を同じ場所に持っていないか、退会者のデータをいつ消しているかを確かめてください。

| 項目      | 公表されている内容（11月2日時点）    |
| ------- | --------------------- |
| 漏えいの確認日 | 2026年10月28日（水）        |
| 対象人数    | 約300万人（退会済みの会員を含む）    |
| 漏えいした項目 | 氏名・住所・電話番号・肌質など11項目   |
| 含まれない情報 | ログインパスワード・クレジットカード情報  |
| 原因・手口   | 調査中（第三者のセキュリティ専門会社）   |
| 個別連絡    | 11月6日完了予定・cosme.netから |
| 専用窓口    | メール窓口・平日10時〜18時       |

専用窓口のメールアドレスはsecurity-support@cosme.netです。問い合わせ状況により返信まで時間がかかる場合があると案内されています。

## 自分が対象か確かめる手順｜退会済み会員も含む約300万人と11月6日までの個別連絡

### 不正アクセス時点の会員なら退会済みでも対象になるプライバシーポリシー上の理由

[アイスタイルの11月2日の公表](https://www.istyle.co.jp/news/info/2026/11/1102.html)は、すでに@cosmeを退会した人でも、不正アクセスの時点で会員だった人は対象になると明記しています。退会後も一定期間保管している情報をもとに連絡するとしており、「今はログインできないから関係ない」とは判断できません。

根拠は[@cosmeプライバシーポリシー](https://www.cosme.net/html/prv/)の10章です。退会した利用者のパーソナルデータは「一定期間保管の後削除」し、本人確認などに必要な一部の情報は引き続き保管すると定めています。保管期間の日数は書かれていません。登録時に使っていたメールアドレスの迷惑メールフォルダも見てください。

### cosme.netドメインから届く案内メールとパスワード入力を求める偽メールの見分け方

個別連絡のメールは「cosme.net」ドメインから送られ、パスワードやクレジットカード情報の入力を求めることはないと公表されています。判断の基準はこの2点です。

- 差出人の表示名ではなく、山かっこの中のアドレスの@の後ろがcosme.netか
- 本文のリンク先でパスワード・カード番号・認証コードを入力させようとしていないか

どちらかに当てはまらないメールは、正規の連絡ではありません。同社はメールに加えてSMSや電話によるなりすましにも注意を呼びかけています。送信元の認証結果を確かめる手順は[SpeeCAN RAIDEN不正アクセスの偽メールの見分け方](https://www.issoh.co.jp/tech/details/18363/)、偽サイトに誘導する手口は[フィッシング詐欺とは](https://www.issoh.co.jp/tech/details/13548/)で解説しています。

### 10月23日のCuenote FCの件と9月2日のファイル転送の設定不備は別の事案

アイスタイルは[10月23日](https://www.istyle.co.jp/news/info/2026/10/20261023.html)にも、メール配信に使う外部システム「Cuenote FC」への不正アクセスについてお知らせを出しています。こちらは運営会社ユミルリンクのシステムが侵入された件で、同社の利用環境で不審な外部アクセスの形跡が検知されたという内容です。11月2日の公表は「@cosmeへの」不正アクセスで、Cuenote FCの件との関係には触れていません。

さらに9月2日には、従業員がファイル転送サービスで会員ファイルを受け渡した際の公開設定の不備で、会員1万997人分のメールアドレスなどが約20分間閲覧できる状態だったと[ITmedia NEWSが報じています](https://www.itmedia.co.jp/news/article/2609/17/2000001572/)。3件は、発生日・対象・人数のいずれも異なる別々の事案です。Cuenote FC側の経緯は[ユミルリンク不正アクセスの第二報](https://www.issoh.co.jp/tech/details/18689/)で追っています。

## 漏えいした11項目の重み｜肌質・髪質が氏名・住所と同じ名簿で出た意味

### パスワードとカード番号を含まない一方で住所・電話番号・生年月日がそろった名簿

漏えいした項目は、ユーザーID、ニックネーム、氏名（漢字・カナ）、郵便番号、住所、電話番号、メールアドレス、性別、生年月日、肌質、髪質です。ユーザーIDは登録時に自動で発番されるもので、ログインには使われません。

ログインパスワードとカード番号が無いため、アカウントの乗っ取りやカードの不正利用に直結する項目ではありません。それでも、氏名・住所・電話番号・生年月日がそろうと、郵送物・SMS・電話のすべての経路で本人に届く名簿になります。11月2日時点で、同社は不正利用や二次被害を確認していないとしています。

### 肌質・髪質の嗜好属性が偽の当選通知や勧誘の文面を本物らしく見せる理由

肌質と髪質は、それ単独では個人を特定しません。危険なのは、氏名と住所に結び付いた状態で出たことです。「乾燥肌の○○様へ、保湿サンプルの当選のお知らせ」のように、本人しか知らないはずの属性を文面に入れると、偽の連絡でも信じやすくなります。

美容サービスの会員は、サンプルやプレゼントの当選通知を普段から受け取っています。肌質に合わせた商品の案内が届いても不自然に感じにくい点が、この名簿の厄介さです。当選や返金を口実に住所の確認や送料の支払いを求められたら、公式アプリから自分で開いて確かめてください。

### 同社が匿名加工情報で氏名と切り離して扱う肌質・髪質が識別情報と一緒に出た点

@cosmeプライバシーポリシーの12章は、匿名加工情報として第三者に提供する項目に「肌質、髪質、嗜好性」を挙げています。匿名加工情報は、特定の個人を識別できず復元もできないように加工した情報です。つまり同社自身、肌質・髪質を氏名から切り離した形で扱う運用を持っています。

今回漏えいした集合では、肌質・髪質が氏名・住所と同じ行に並んでいました。会員DBの中で両者がどう保管されていたかは公表されていません。ただ、外に出た時点で結び付いていたことは、運営側が設計で防げる余地を示しています。加工の基準は[匿名加工情報とは](https://www.issoh.co.jp/column/details/17446/)、社内分析向けの[仮名加工情報とは](https://www.issoh.co.jp/column/details/17443/)で整理しました。

## 嗜好属性を氏名と分けて保管する実装｜仮名IDと退会時の段階削除をPythonで書く

### identityとprofileを分離し結合キーを鍵付きハッシュの仮名IDにする設計

1つのテーブルを読まれただけで氏名と肌質が結び付かないように、識別情報（identity）と嗜好属性（profile）を分けます。profile側には会員IDを置かず、会員IDを秘密鍵でハッシュした仮名IDだけを置きます。鍵はDBとは別の鍵管理サービスに置くので、profileだけを持ち出されても誰の肌質かは分かりません。

次のコードは、Python標準の[hmacモジュール](https://docs.python.org/3/library/hmac.html)と[sqlite3モジュール](https://docs.python.org/3/library/sqlite3.html)だけで動く最小の例です。member\_retention.pyとして保存します。

```
import hashlib, hmac, sqlite3
from datetime import date, timedelta

# 肌質・髪質は氏名・住所と別テーブルに置き、結合キーは鍵付きハッシュの仮名IDにする
PEPPER = b"replace-with-kms-secret"   # 本番はDBとは別の鍵管理サービスに置く
RETENTION = timedelta(days=90)        # 退会後に最小限の情報を残す日数

def pid(value):
    return hmac.new(PEPPER, str(value).encode(), hashlib.sha256).hexdigest()[:16]

db = sqlite3.connect(":memory:")
db.executescript("""
CREATE TABLE identity(member_id INTEGER PRIMARY KEY, name TEXT, address TEXT, tel TEXT);
CREATE TABLE profile(pid TEXT PRIMARY KEY, skin TEXT, hair TEXT);
CREATE TABLE withdrawn(tel_hash TEXT, withdrawn_on TEXT);
""")

def register(mid, name, address, tel, skin, hair):
    db.execute("INSERT INTO identity VALUES (?,?,?,?)", (mid, name, address, tel))
    db.execute("INSERT INTO profile VALUES (?,?,?)", (pid(mid), skin, hair))

def withdraw(mid, on):
    (tel,) = db.execute("SELECT tel FROM identity WHERE member_id=?", (mid,)).fetchone()
    db.execute("INSERT INTO withdrawn VALUES (?,?)", (pid(tel), on.isoformat()))
    db.execute("DELETE FROM profile WHERE pid=?", (pid(mid),))
    db.execute("DELETE FROM identity WHERE member_id=?", (mid,))

def purge(today):
    cur = db.execute("DELETE FROM withdrawn WHERE withdrawn_on < ?", ((today - RETENTION).isoformat(),))
    return cur.rowcount

register(1, "山田花子", "東京都港区", "090-0000-0001", "乾燥肌", "くせ毛")
register(2, "佐藤由美", "大阪府北区", "090-0000-0002", "脂性肌", "直毛")
register(3, "鈴木愛", "福岡県中央区", "090-0000-0003", "敏感肌", "細毛")
withdraw(2, date(2026, 7, 1))
withdraw(3, date(2026, 10, 20))
print("期限切れで削除:", purge(date(2026, 11, 2)), "件")

for table in ("identity", "profile", "withdrawn"):
    print(f"[{table}]")
    for row in db.execute(f"SELECT * FROM {table}"):
        print("  ", row)
```

2026年11月2日に、Python 3.14.7で実行した結果です。会員データは架空で、@cosmeの実際の構造ではありません。

```
$ python member_retention.py
期限切れで削除: 1 件
[identity]
   (1, '山田花子', '東京都港区', '090-0000-0001')
[profile]
   ('adbacf7650725fc4', '乾燥肌', 'くせ毛')
[withdrawn]
   ('c2b429db40651928', '2026-10-20')
```

### 退会時に嗜好属性と住所を即時削除し電話番号のハッシュだけを90日残す処理

withdraw関数は、退会の時点でprofileとidentityの行を物理削除し、電話番号のハッシュと退会日だけをwithdrawnに残します。ハッシュは、退会直後の再登録による特典の重複受け取りを見分ける照合に使え、氏名や住所には戻せません。purge関数は、保管期間の90日を過ぎた行を消します。

実行結果では、7月1日に退会した会員2のハッシュが期限切れで消え、10月20日に退会した会員3のハッシュだけが残りました。どちらの肌質・髪質も、退会日にはもう残っていません。プライバシーポリシーの「一定期間保管」を、この表のように「何を・何日」残すかに分解して書いておくと、漏えい時に退会者のどの項目が対象かを即答できます。退会フラグだけを立てて行を残す方式との違いは[論理削除とは](https://www.issoh.co.jp/tech/details/18653/)、残っている退会者の件数を数えるSQLは[大起水産の不正アクセス](https://www.issoh.co.jp/tech/details/18172/)で扱いました。

### この設計で防げない攻撃と鍵管理・アクセス経路の分離を本番で組み合わせる理由

このコードは考え方を示す最小の例です。アプリケーションの権限を奪われ、identityとprofileを結合する処理そのものを動かされた場合は防げません。本番では次の3つを組み合わせます。

1. 仮名IDの鍵（PEPPER）をDBと別の鍵管理サービスに置き、アプリのサーバーからだけ呼べるようにする
2. 識別情報と嗜好属性を読むAPIを分け、一括で取得できる件数に上限を設ける
3. 1回の操作で通常より多い会員行を読んだときに検知し、担当者へ通知する

1つ目が抜けると、鍵がDBと一緒に持ち出された時点で分離の意味がなくなります。APIの件数上限とトークンの失効は[API不正アクセス対策の実装手順](https://www.issoh.co.jp/tech/details/18346/)で解説しています。

## 個人情報保護法22条の消去と26条の報告｜会員サービス運営者の点検項目

### 22条の「利用する必要がなくなったときは遅滞なく消去」を退会後の保管日数に落とす手順

[個人情報保護法](https://laws.e-gov.go.jp/law/415AC0000000057)22条は、個人データを「利用する必要がなくなったときは、当該個人データを遅滞なく消去するよう努めなければならない」と定めています。努力義務ですが、退会後に何を残すかを決める根拠になる条文です。

点検は、退会者の項目ごとに「残す理由」と「日数」を書き出すことから始めます。問い合わせ対応や不正な再登録の照合で残す理由があるのは、電話番号やメールアドレスのハッシュ程度です。肌質・髪質・住所に、退会後も残す理由はほとんどありません。理由を書けない項目は、退会日に消す処理へ切り替えます。

### 速報3〜5日・確報60日の報告と本人通知の範囲を退会者まで広げる準備

不正アクセスによる漏えいやそのおそれは、件数にかかわらず個人情報保護法26条の報告対象です。速報はおおむね3〜5日以内、確報は不正の目的によるものなので60日以内に出します。様式は[個人情報保護委員会の「漏えい等の対応とお役立ち資料」](https://www.ppc.go.jp/personalinfo/legal/leakAction/)、判断の流れは[個人情報保護委員会への報告義務](https://www.issoh.co.jp/column/details/17840/)で整理しています。

本人への通知では、退会者の連絡先が残っていないと個別に送れず、公表で代える判断が必要になります。連絡先をハッシュだけにする方式では、ハッシュから宛先に戻せません。退会者へ個別に通知できる状態を保つか、消して漏えいの範囲を小さくするかを、保管期間を決める時点で選んでおきます。

## 会員DBの設計を今月見直す事業者と次の改修でよい事業者の判断基準

### 美容・健康などの嗜好属性を会員IDと同じテーブルに持っている事業者

肌質・体質・持病・嗜好などの属性を、氏名や住所と同じテーブルに持っている会員サービスは、今月中に2点を確かめてください。1点目は、その属性を退会後も残していないか。2点目は、1つのAPIや管理画面で識別情報と属性をまとめて大量に取得できないかです。どちらかに当てはまれば、今回と同じ形の名簿が出る構造です。

会員DBの構造に加え、外から到達できる画面とAPI、管理者アカウントの権限まで第三者の目で洗い出したいときは、[脆弱性診断・セキュリティ診断](https://www.issoh.co.jp/service/system/vulnerability/)で点検できます。

### 氏名とメールアドレスだけを持ち退会時に物理削除している事業者

会員情報が氏名とメールアドレス程度で、退会時に物理削除している事業者は、テーブル分割の改修は次の機能追加のときで足ります。先に済ませるべきは、自社を名乗る偽メールへの備えです。送信ドメインのDMARCを強い設定に上げ、正規の連絡に使うドメインを会員に周知しておきます。メール配信の委託先が侵入された事例は[アララの不正アクセス](https://www.issoh.co.jp/tech/details/19213/)で扱いました。

## よくある質問

アットコスメの不正アクセスについて、会員・退会済みの人と、会員サービスの運営者から出やすい質問をまとめました。

### @cosmeを退会していても自分の情報は漏えいの対象になりますか？

不正アクセスの時点で会員だった場合は、退会済みでも対象です。アイスタイルは、プライバシーポリシーに基づき退会後一定期間保管している情報をもとに連絡するとしています。退会がいつだったかで対象かどうかが分かれますが、保管期間の日数は公表されていません。11月6日までに届く個別連絡を待ち、不安なら専用窓口へ問い合わせてください。

### @cosmeのパスワードやクレジットカード番号は変えたほうがよいですか？

ログインパスワードとクレジットカード情報は、11月2日時点で漏えいに含まれていないと確認されています。公表された事実からは変更が必須とは読み取れません。ただ、同じパスワードをほかのサービスでも使っているなら、別々のものに変えておくと安全です。カードの明細に心当たりのない請求があれば、カード会社に連絡してください。

### cosme.netから届いたお詫びのメールは本物ですか？

アイスタイルは、個別連絡のメールを「cosme.net」ドメインから送ると公表しています。差出人のアドレスの@の後ろがcosme.netで、パスワードやカード情報の入力を求めていなければ、正規の連絡と考えられます。入力を求める内容なら偽物です。リンクを開かず、公式サイトやアプリを自分で開いて確かめてください。

### 10月23日に公表されたCuenote FCの不正アクセスと同じ事件ですか？

別の公表です。10月23日の件は、メール配信の外部システム「Cuenote FC」を運営するユミルリンク側への不正アクセスでした。11月2日の件は「@cosmeへの」不正アクセスとされ、Cuenote FCとの関係は公式発表に書かれていません。9月2日のファイル転送サービスの設定不備も、対象と人数が違う別の事案です。

### 不正アクセスの原因や侵入経路は公表されていますか？

11月2日時点では公表されていません。アイスタイルは第三者のセキュリティ専門会社と原因と影響範囲を調べており、調査結果を踏まえて再発防止策を検討・実施するとしています。新しい事実が分かれば同社サイトで案内するとしているため、続報は同社のお知らせ欄で確かめてください。

## 関連記事

- [大起水産の不正アクセスと17万4,933人の個人情報｜任意項目と退会者データを減らす点検](https://www.issoh.co.jp/tech/details/18172/)：退会者の残存件数と任意項目の登録率を数えるSQL
- [ユミルリンク不正アクセス第二報で延べ5,162万件：DCM・さとふる等の利用企業と受信者の確認点](https://www.issoh.co.jp/tech/details/18689/)：アイスタイルも利用していたCuenote FCの事案
- [論理削除とは：物理削除との使い分けと一意制約・集計が壊れる問題の実装対策](https://www.issoh.co.jp/tech/details/18653/)：退会者の行を残すか消すかの実装判断
- [匿名加工情報とは？加工基準と第三者提供の義務をデータ提供の設計要件に翻訳](https://www.issoh.co.jp/column/details/17446/)：肌質・髪質を氏名から切り離して扱う基準
- [フィッシング詐欺とは？成立の仕組みと実装者向けの技術的対策を解説](https://www.issoh.co.jp/tech/details/13548/)：漏えいした名簿を使う偽メールの手口と対策

---

出典: [アットコスメ不正アクセスで会員約300万人：肌質・髪質と退会者の情報を守る会員DB設計](<https://www.issoh.co.jp/tech/details/19217/>)（株式会社一創）
