万博のチケットID漏洩による脆弱性 (疑い) について
概要
2025/10/13に閉幕した大阪・関西万博の予約サイトにおける、不適切な情報漏洩についての解説記事です。
用語解説等
公式表現とは一部違うところがあるかもしれない。
- 万博ID: 予約サイトにログイン、入場予約に必要なアカウント。個人名や顔を登録する
- チケットID: 一日入場や通期パスなど、各入場権利を示すIDであり、ランダムな英数字10桁で表現。
- QRコード: ゲート入場やパビリオン入場時に提示するQRコード。チケットIDと1:1だがデータは別の数値列
- ゲート入場: 東ゲートもしくは西ゲート入場時の予約・認証。複数回利用できる券ではQR+顔認証の二要素が必要だが、一日券などはQRコード認証のみ。
- パビリオン入場: パビリオン入場時にQRコード認証一点が必要。ゲート入場予約が有効な時間帯のみパビリオンの予約が可能であり、ゲート入場が取消されると一緒に無効となる。
- 代理予約: 予約時に自アカウント外のチケットIDを指定して予約できる機能。予約のみで取消等はできない。代理予約された側のマイチケット画面には「代理予約」の表示が出る
通常の利用の流れ
- チケットを購入するとチケットIDが付与される。ここではただの10桁の英数字のみ。
- 万博IDを作成し、「チケット追加登録」画面よりチケットIDを入力すると紐付けが行われる。
- 通期パスであれば顔認証を登録する (一日券では不要)
- ゲート入場予約を行う。自身のチケットIDと同時であれば代理予約も可能。
- パビリオン予約を行う。同様に自身のチケットIDと同時であれば代理予約も可能。
※公式サイトから購入すると万博IDとチケットIDが自動紐付けされるため、1.と2.が一気に実行される
「チケット追加登録」脆弱性について
チケット追加登録で既にアカウント登録されているチケットIDを入力すると「追加登録できない状態のチケットです」とエラー表示されるが、この際にAPI応答結果にはチケットの詳細データが含まれており、不必要な情報公開となっていた。
任意の万博IDにログインしている必要はあったが、万博IDによって応答結果に変動はなく、あくまでチケットIDに紐付く詳細情報を応答しており、他人のものであっても取得可能であった。
本来(通常利用で)公開されないデータであるうち、本漏洩で確認できるデータは以下のとおり
- ticket_qr_binary: base64エンコードされたQRコードpng画像
- ticket_type: 通期パス/一日券など
- ticket_simple_state: 0=未使用,1=使用開始済,2=取消/無効
- program_ticket_info_list: ゲート/パビリオン予約履歴 (取消/変更を含む)
- program_code: A0E0(東ゲート),A0W0(西ゲート),その他パビリオンevent_code
- busi_date: 予約登録日
- entrance_date: 予約日
- schedule_name: 予約時刻枠
- admission_date,admission_time: 実際の入場時刻
- program_ticket_state: 0=未使用,1=使用開始済,2=取消/無効
要するに、予約したパビリオンや入場ゲートを取得することが可能である
実データは私の通期パス例で参照して欲しい。 https://gist.github.com/j416dy/7bc5137842bc8f8ea79579e9de16fd8b
チケットIDとQRコードの取扱について
QRコードは入場時に提示して認証することから、ある程度秘匿して運用する想定であると思われる。
一方で、チケットIDは同行者を想定した代理予約機能があり、ある程度教えても問題ない運用と考えられる。

これは脆弱性なのか?どう悪用できたか
チケットIDは、チケットを表示する各画面で表示していることや、代理予約時に伝えるものであることから、ある程度公開されている情報であると考える。
もちろん原則は友人関係など信頼されている相手にしか伝える用事はないが、仮に悪意を持っても代理予約を勝手に投入できる程度で、勝手に予約されたとしても自身で取消を行えば問題なく、ここまでは運用上想定していたものと思われる。
しかし、チケット追加登録のエラー応答にて予約情報とQRコードを漏洩したことで、以下の悪用が可能となる。
- チケットIDを入手する。
- 追加登録APIで監視しておき、ゲート予約とパビリオン予約を確認する。
- 当日、追加登録APIで入手したQRで本人より先に入場、中のパビリオンもなりすまし入場できる。
- 通期パスであれば顔認証が突破できないことから別途自身で入場する必要があるが、パビリオンには勝手に入れる
- 本人はゲートやパビリオンにて「既に入場済みです」と言われて入場できなくなる
チケットIDは他人が入手可能か
一覧を取得する方法は現時点で把握できておらず、サイトからは総当りくらいしかないと思われる。
サイト側でRateLimitは一切ないので総当り耐性はないと思われるが、現実的ではない。
現実的には本来の運用である友人関係の他、予約を助ける等と言って聞き出す、後は道端に落ちている、首からかけている入場券から取得するくらいだろう。
なお、以下のような用紙を印刷することを公式にて推奨しており、現地では落とした本用紙が散見された。つじさんの万博の地図の次くらいに見かけた気がする。

もちろん落とした用紙から手に入る内容が悪用されるのは当然なのでそこは脆弱性ではないが、
通期パスで後日分含めて覗かれて使われうる、という想定ではなかったと思われる。
また、SNS等でもチケットID単体ではイタズラ代理予約くらいしかできないと考え、公開してしまっている人も多少おり、私自身SNS上のスクショから数人程度の通期チケットIDは見かけたと思う。
その人が人気パビリオン予約成功した、と話せば勝手に入ることもできた状態であった。
これは脆弱性か?
運営本来の想定である「チケットIDは教えて問題ない」を超えて悪用が可能なことから、会期中はCVSSスコア4台程度の脆弱性であると考える。
会期を終えた今は予約訪問履歴を見れるだけであり、機微ではない情報を取得できるだけであることからCVSSスコアは最低レベルだが、一応脆弱性とはいえると思います。
余談
BANされた通期パスも本方法でデータ取得可能です。BANされて見れなくなった思い出を確保するなら今のうちにどうぞ。自身のチケットIDを利用するなら問題ないでしょう。
Discussion