1つの会社で、2か月のうちに3つの異なる扉が開けられました。 ログインせずに誰でも見られた予約ページ。業務システムの脆弱性。そして最大の件では、管理機能を使って他のサーバーやクラウド上のデータにまで到達されました。アドベンチャーが3件を公表した4日後、情報通信研究機構(NICT)は、この秋の漏えいの多くを説明する手口に名前を付けました。攻撃者は企業のアプリを解析し、その裏側にあるサーバーを狙うというものです。
アドベンチャーが公表した内容
アドベンチャーは、航空券、ホテル、バスを予約できるサイトとアプリ「skyticket」を運営しています。2026年10月9日、経路の異なる3件の不正アクセスを公表しました。アドベンチャー/skyticket
| 経路 | 時期 | 判明 | 件数 | 流出した情報 |
|---|---|---|---|---|
| 1. 管理機能が悪用され、他のサーバーやクラウド上のデータにアクセス | 10月2〜4日 | 10月5日 | 約1,464万件 | 氏名(パスポート表記を含む)、生年月日、メールアドレス、電話番号、郵便番号・住所、振込時の依頼人名義。約413万件はハッシュ化されたログインパスワードを含む |
| 2. 業務管理システムの脆弱性 | 9月20日 | 9月28日 | 1万7,780件(重複を含む)。ほかに調査中のものあり | 返金先の口座情報を含む顧客情報 |
| 3. ログインせずに表示できたバス予約完了ページが機械的に閲覧された | 8月3日〜10月1日 | 10月1日に修正 | 約1万2,000件の予約 | 予約情報 |
- 流出していないとされるもの: パスポート番号。クレジットカード番号とパスポート画像は保存していません。
- 対応: 侵入経路を遮断し、脆弱性を修正しました。10月7日18時ごろから、保存済みカードでの支払いとカード情報の保存を停止しています。個人情報保護委員会に報告し、対象の顧客にメールで知らせています。
- 悪用の状況: 会員1人のアカウントへの不正ログインを除き、二次被害は確認されていないとしています。
- 顧客への注意: 同社、金融機関、航空会社、バス会社を装うメール、SMS、電話、郵便物に注意すること。skyticketのパスワードと、同じパスワードを使い回したサービスのパスワードを変更すること。
合計件数は報道で少し異なります。最大の経路で約1,464万件、3経路の合計で約1,467万件です。ITmedia NEWS · @IT
規模: 1,464万件は、当サイトの過去12か月の一覧に入れれば、EPARKリラク&エステ(3,300万件)、Gyazo(2,362万件)に次ぐ3番目の規模です。公表は一覧を締めた翌日でした。

図1:3つの経路と2か月の流れ。この記事のために作成した図です。
4日後にNICTが名付けた手口
10月13日、NICTの脅威分析チーム「LETTICE」は、「A2B攻撃」(App-to-Backend Attack)と名付けた手口について注意喚起を公表しました。総務省も同じ日に事業者向けの注意喚起を出しています。NICT · 注意喚起(PDF)
- 手口: 攻撃者は公開されたAndroidアプリを解析し、どのサーバーとどう通信しているか、APIがどう使われているかを把握したうえで、そのサーバーを直接攻撃します。アプリ自体に脆弱性がなくても成り立ち、弱点はサーバー側にあります。
- 挙げられた弱点: サーバーサイドリクエストフォージェリ(SSRF)、リモートコード実行(RCE)、SQLインジェクション、そして指定されたIDのデータを誰にでも返してしまう認可の不備(IDOR、BOLAとも呼ばれます)です。
- Androidに限らない: NICTは、iOSアプリやWebサービスでも同じ攻撃が起こりうること、AIによってアプリの解析や脆弱性の発見が効率化され、攻撃がより多くのシステムに広がるおそれがあることを指摘しています。
- アプリ提供事業者への要請: サブドメイン、旧API、検証環境、クラウド上の公開サービスまで含めて侵害の有無を確認し、2026年8月以降のログを公開された痕跡情報と照合すること。4つの弱点に加え、認証情報の露出やセッション管理の不備を点検すること。暫定策として、不要なAPI・管理機能・検証環境の停止、アクセス制限、レート制限、漏えいのおそれがある認証情報の再発行を行うことです。
NICTは、特定の企業の被害をこの手口によるものとはしていません。 アドベンチャーも、経路がどう見つけられたかを明らかにしていません。ただ、経路3は4つ目の弱点の典型例です。要求した人が予約の持ち主かを確かめずに、誰にでも予約を返すページが、2か月にわたってプログラムで読まれました。当サイトのローソンIDの分析も10月8日に、利用者本人に情報を表示するための仕組みからデータが出ていった、同じ種類の欠陥を取り上げています。
3つの経路から防御側が読み取れること
- 経路ごとに必要な対策が違い、3つが同時に存在していた。 ログイン確認の欠落、修正されていない業務システム、届くべきでない人が届いた管理機能です。主要サイトへの1回のペネトレーションテストでは、見つかっても1つだったでしょう。
- 最も小さな漏えいが最も長く続いた。 経路3は10月1日に修正されるまで2か月近く続きました。1つの送信元が数千の異なる予約を読むという兆候は、安く検知できます(下のクエリ1)。
- 最大の漏えいは横展開だった。 管理機能から「他のサーバーやクラウド上のデータ」へ。1,464万件があったのは、Webアプリの中ではなく、アプリやその管理者が到達できる先でした。
- ハッシュ化されたパスワードで終わりではない。 アドベンチャーはハッシュ方式を明らかにしていません。高速でソルトのないハッシュは大規模に解読でき、低速でソルト付きなら耐えられます。いずれにしても、413万件のメールアドレスとハッシュの組は、パスワードリスト型攻撃の出発点になります。同社が使い回したパスワードの変更を求めているのはこのためです。
- 旅行のデータは、だましに使いやすい。 パスポート表記の氏名、生年月日、電話番号、予約の文脈があれば、電話の相手は航空会社やバス会社らしく聞こえます。出張者もこのデータに含まれます。
攻撃者の視点
レッドチームが3つの経路を組み合わせるなら、次のように動きます。MITRE ATT&CKに対応づけたモデルで、今回の攻撃の再現ではありません。
| 段階 | 考えられること | ATT&CK |
|---|---|---|
| 裏側を地図にする | Androidアプリを逆コンパイルし、APIのホスト、パス、パラメーター、管理用・検証用ホスト、アプリが持つ鍵を洗い出す | T1594 Search Victim-Owned Websites; T1592 Gather Victim Host Information |
| ログイン不要の情報を読む | 持ち主を確認しないページで、予約番号を順に読む | T1190 Exploit Public-Facing Application; T1119 Automated Collection |
| 脇の扉を破る | 監視の薄い業務システムの脆弱性を突く | T1190 Exploit Public-Facing Application |
| 管理機能を使う | 盗んだ・初期設定の・保護されていないアクセスで管理機能に入り、他のサーバーを照会する | T1078 Valid Accounts; T1021 Remote Services |
| データストアを取る | クラウドストレージやデータベースから顧客テーブルを抜き取る | T1530 Data from Cloud Storage |
| ハッシュをログインに変える | 弱いハッシュを解読し、メールとパスワードの組を他のサービスで試す | T1110.002 Password Cracking; T1110.004 Credential Stuffing |
| 換金する | 航空会社、バス会社、銀行を装う電話やSMS | T1566 Phishing; T1656 Impersonation |
防御側の視点
1. アプリを公開しているなら:今週、NICTの3つの手順を実施する
- アプリが到達できる先をすべて洗い出す。 自社のリリース版を逆コンパイルし、すべてのホストとパスを一覧にします。旧APIバージョン、検証用ホスト、クラウドのエンドポイントも含め、不要なものは止めます。
- エンドポイントごとに4つの弱点を試す。 IDORについては、顧客Aとしてログインして顧客Bのデータを要求し、さらにログインせずに要求します。予約確認、領収書、チケットのようなページが、よくある抜け穴です。
- 管理機能をインターネットに出さない。 管理用のパスは、多要素認証の内側で、管理用ネットワークからだけ応答するようにします。現在誰が到達しているかは、クエリ2で分かります。
- 8月以降のログを確認する。 NICTが示した期間です。JPCERT/CCが公表した痕跡情報を使ってください。当サイトの60日間のまとめでクエリにしています。
2. 従業員がskyticketで出張を手配しているなら
- パスワード: skyticketのパスワードと、使い回した他のパスワード、特に業務用アカウントのものを変更します。
- 電話やメッセージ: 航空会社、バス会社、銀行が、電話やSMSでカード番号やワンタイムコードを尋ねることはありません。公式サイトに載っている番号にかけ直してください。
- 返金: 銀行振込で返金を受けた人は、その口座を見守り、「返金」をかたる連絡に注意します。
3. 自社の環境で3つの経路を検知する
- 列挙: ログイン不要のページで、1つの送信元が多数の異なる番号を読む(クエリ1と4)。
- 想定外の場所からの管理アクセス: 管理用ネットワークの外から管理用パスへ到達(クエリ2)。
- 誘い文句: 他のドメインからskyticketを名乗るメール(クエリ3)。
4. 対応すべきチーム
| チーム | 確認する範囲 | 次の一手 | 必要な証跡 |
|---|---|---|---|
| アプリ担当・IT運用 | アプリの裏側のAPIとページ | IDORとログインなしのテストを実施し、不要なホストと管理用パスを閉じる | エンドポイント一覧、テスト結果、日付 |
| SIEM / SOC | 8月以降のWebとAPIのログ | クエリ1、2、4を定期実行し、JPCERT/CCの痕跡情報を照合 | クエリの実行計画、結果 |
| メールセキュリティ | skyticketを名乗るメール | クエリ3を実行し、確認できたなりすましを遮断 | メッセージの一覧、遮断の記録 |
| 法務 / プライバシー | 出張予約に含まれる従業員・顧客のデータ | 従業員に知らせるかを判断し、旅行会社との契約を確認 | 判断の記録 |
| 委託先管理 | 旅行・予約の委託先 | アプリと管理機能の保護方法を尋ねる | 書面の回答 |
ハンティング
アドベンチャーの事案に固有の痕跡情報は公表されていません。 以下のクエリは、同社の経路の背後にある振る舞いを自社のログで探します。一連の攻撃に関するJPCERT/CCの痕跡情報は、60日間のまとめにあります。
いずれも例示であり、実データでは実行していません。 テーブル名とフィールド名は、2026年10月14日(日本時間)に各社のドキュメントで確認しました。自分のページを再読み込みする顧客、監視ツール、リモートで作業する管理者もノイズになります。
1. ログイン不要のページで、多数の異なる予約が読まれる。 Microsoft Sentinelで、IISのログ(W3CIISLog)が前提です。
// Illustrative; not run against live data. Microsoft Sentinel, W3CIISLog (IIS). Adapt the column names for other web, API gateway or WAF logs.
// Pages that show a booking without a login: one client reading many different booking references.
// A customer opens their own confirmation page a few times. A script walks through thousands.
let Since = ago(30d);
let ConfirmationPath = @"(?i)REPLACE_WITH_CONFIRMATION_PAGE_PATH";
let ReferenceInQuery = @"(?i)(?:id|booking|reservation|ref)=([A-Za-z0-9-]{4,})";
W3CIISLog
| where TimeGenerated > Since
| where csUriStem matches regex ConfirmationPath
| where csUserName == "-"
| extend Reference = coalesce(extract(ReferenceInQuery, 1, csUriQuery), extract(@"/([A-Za-z0-9-]{6,})/?$", 1, csUriStem))
| summarize Requests = count(), DistinctReferences = dcount(Reference), Agents = make_set(csUserAgent, 5),
FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by cIP, bin(TimeGenerated, 1h)
| where DistinctReferences > 20
| order by DistinctReferences desc
| take 500
2. 管理用ネットワークの外から管理機能に到達。 Microsoft Sentinel、W3CIISLog。
// Illustrative; not run against live data. Microsoft Sentinel, W3CIISLog (IIS). Adapt the column names for other web, API gateway or WAF logs.
// Admin functions reached from outside the networks your administrators use.
// List your admin paths and the address ranges allowed to use them; every other source in the result needs an explanation.
let Since = ago(30d);
let AdminPaths = @"(?i)REPLACE_WITH_ADMIN_PATH_PATTERN";
let AdminRanges = dynamic(["REPLACE_WITH_ADMIN_CIDR_1", "REPLACE_WITH_ADMIN_CIDR_2"]);
W3CIISLog
| where TimeGenerated > Since
| where csUriStem matches regex AdminPaths
| where not(ipv4_is_in_any_range(cIP, AdminRanges))
| summarize Requests = count(), Succeeded = countif(toint(scStatus) between (200 .. 299)), Paths = make_set(csUriStem, 20),
Users = make_set(csUserName, 10), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by cIP
| order by Succeeded desc, Requests desc
| take 500
3. 他のドメインからskyticketを名乗る受信メール。 Microsoft Defender XDRの高度なハンティング。Defender for Office 365が必要です。
// Illustrative; not run against live data. Microsoft Defender XDR advanced hunting.
// Inbound mail since 9 Oct 2026 that names skyticket but was not sent from its domain.
// Adventure says it is emailing affected customers and warns of fakes posing as the company, banks, airlines and bus operators.
let Since = datetime(2026-10-09T00:00:00Z);
let LurePattern = @"(?i)skyticket|スカイチケット";
let OfficialDomains = @"(?i)(^|\.)(skyticket\.jp|REPLACE_WITH_OTHER_VERIFIED_SENDER_DOMAIN)$";
EmailEvents
| where Timestamp > Since
| where EmailDirection == "Inbound"
| where Subject matches regex LurePattern or SenderDisplayName matches regex LurePattern
| where not(SenderFromDomain matches regex OfficialDomains)
| join kind=leftouter (
EmailUrlInfo
| where Timestamp > Since
| project NetworkMessageId, UrlDomain
) on NetworkMessageId
| summarize Recipients = dcount(RecipientEmailAddress), UrlDomains = make_set(UrlDomain, 10),
FirstSeen = min(Timestamp), LastSeen = max(Timestamp)
by SenderFromAddress, SenderFromDomain, Subject, DeliveryAction
| order by FirstSeen asc
| take 500
4. 列挙の確認をSplunkで。 CIM形式のフィールド(src、uri_path、uri_query、user)を持つWebのログが前提です。
index="REPLACE_WITH_WEB_INDEX" sourcetype="REPLACE_WITH_WEB_SOURCETYPE" uri_path="REPLACE_WITH_CONFIRMATION_PAGE_PATH*" earliest=-30d
| where isnull(user) OR user="-"
| rex field=uri_query "(?i)(?:id|booking|reservation|ref)=(?<reference>[A-Za-z0-9-]{4,})"
| bin _time span=1h
| stats count AS requests dc(reference) AS distinct_references values(http_user_agent) AS agents BY _time src
| where distinct_references > 20
| sort 0 - distinct_references
ダウンロード:列挙のKQL · 管理アクセスのKQL · メールのKQL · 列挙のSPL
その他のプラットフォーム。 Sumo Logicで、ApacheまたはNginxのcombined形式でログを書くWebサーバーを対象に、公開アドレスから管理用パスへのアクセスを探します。管理者が使う公開アドレスは例外にしてください。
_sourceCategory="REPLACE_WITH_WEB_SOURCE_CATEGORY" "REPLACE_WITH_ADMIN_PATH"
| parse regex "^(?<src_ip>\S+) \S+ \S+ \[[^\]]+\] \"\S+ (?<path>\S+) [^\"]*\" (?<status>\d{3})"
| where !isPrivateIP(src_ip)
| count as requests by src_ip, path, status
| sort by requests
結果がなくても、何も起きていない証明にはなりません。Webのログにクエリ文字列やログイン中のユーザーが記録されていなければ、列挙や管理機能の悪用は通常の通信に見えます。W3CIISLogテーブル(英語) · EmailEvents(英語)
コピーして使えるテンプレート
[ ]内をすべて置き換えてください。社外に出すものは、法務またはプライバシー担当の確認を受けてください。
アプリを運営するチーム・委託先へのA2B自己点検
件名:[会社名]―NICTのA2B攻撃に関する注意喚起(2026年10月13日)を受けたアプリのサーバー側の確認
NICTは、攻撃者が公開アプリを解析して裏側のサーバーを攻撃している(A2B攻撃)と注意を呼び掛けています。以下について[期日]までに書面でご回答ください。
1. 当社のAndroidとiOSのアプリが通信するホスト、APIのパス、クラウドのエンドポイントをすべて挙げてください。旧APIバージョンや検証用ホストも含みます。不要になったものはどれで、いつ停止しますか。
2. 個人データを返すエンドポイントごとに、別の顧客のデータを要求するテストと、ログインせずに要求するテストを行いましたか。日付と結果。
3. ログインせずに予約、注文、領収書の内容を表示するページはどれですか。その番号はどう生成され、推測や列挙ができますか。
4. エンドポイントに対し、SSRF、SQL・NoSQLインジェクション、リモートコード実行のテストを行いましたか。最後のテストの日付と未対応の指摘。
5. アプリにAPIキー、シークレット、認証情報は含まれていますか。顧客がログインしなくても、それで何ができますか。
6. 管理機能はどこにあり、どのネットワークから到達できますか。多要素認証は必須ですか。
7. 2026年8月以降のログを、JPCERT/CCが公表した痕跡情報と照合しましたか。結果は。
8. プロフィール、予約、管理のエンドポイントに、どんな回数制限と警報がありますか。
9. パスワードはどう保存していますか(方式、ソルト、計算コスト)。
10. 不正アクセスの疑いがある場合、何時間以内に、どの確認済みの経路で当社に連絡しますか。
よろしくお願いいたします。
[氏名、役職、部署]
出張する従業員への案内
件名:skyticketの情報漏えい―パスワードの変更と偽の電話にご注意ください
旅行予約サイトskyticketを運営するアドベンチャーは2026年10月9日、経路の異なる3件の不正アクセスにより顧客情報が流出したと公表しました。約1,464万件に、氏名、生年月日、電話番号、住所、一部の会員ではハッシュ化されたパスワードが含まれます。
・skyticketのアカウントをお持ちの方は、パスワードを変更してください。同じパスワードを他で、特に業務で使っている場合は、そちらも変更してください。
・skyticket、航空会社、バス会社、銀行を装う電話、SMS、メールが予想されます。カード番号、ワンタイムコード、パスワードを伝えないでください。公式サイトに載っている番号にかけ直してください。
・skyticketから銀行振込で返金を受けた方は、その口座を見守り、不審な点は銀行に連絡してください。
・会社のメールボックスに届いた不審なメッセージは、[報告ボタンまたは報告先]で報告してください。
問い合わせ先:[セキュリティ担当]
経営層向け5行報告
1. 何が起きたか:旅行予約サイトskyticket(アドベンチャー)が2026年10月9日、経路の異なる3件の不正アクセスを公表。約1,464万件が流出し、うち413万件はハッシュ化パスワードを含む。別の2経路で返金口座情報1万7,780件、バス予約約1万2,000件。
2. 当社にとっての意味:NICTは10月13日、攻撃者が公開アプリを解析して裏側のサーバーを攻撃していると注意喚起。skyticketの経路の1つ、ログイン不要の予約ページはこの手口に当たる。[当社/委託先]のアプリにも同じ種類のページとAPIがある。
3. 当社の状況:エンドポイントの洗い出し[完了/期日]、ログインなし・別顧客のテスト[実施済み/期日]、管理機能の管理用ネットワークへの限定[済/未]、8月以降のログ確認[済/期日]。
4. 実施中の対応:委託先への質問送付[日付]、列挙と管理アクセスのクエリの定期実行、従業員への使い回しパスワードの変更依頼[日付]。
5. 判断が必要な事項:[例:旧APIバージョンの停止、アプリのリリース前にサーバー側のセキュリティテストを必須にする]。次回報告:[日付]。
まだ分かっていないこと
- 管理機能にどう到達されたか。 盗まれた認証情報か、アクセス制御の欠落か、脆弱性か。
- 業務管理システムの脆弱性の内容と、 経路2でさらに増える件数。
- パスワードのハッシュ方式と、 それによる解読の速さ。
- 3つの経路に関連があるか。 1人の攻撃者が他の経路も見つけたのか。
- いずれかの経路がskyticketのアプリの解析から始まったのか。 NICTもアドベンチャーも、そうは述べていません。
出典と更新履歴
- アドベンチャー/skyticket:不正アクセスによるお客様情報の流出に関するお詫びとお知らせ、2026年10月9日
- ITmedia NEWS:スカイチケットに不正アクセス、計1467万件、2026年10月9日
- @IT:skyticketの3経路、2026年10月13日
- 朝日新聞(Yahoo!ニュース)、2026年10月9日
- NICT:A2B攻撃の注意喚起、2026年10月13日
- NICT LETTICE:注意喚起 Rev 1.1(PDF)
- ITmedia NEWS:NICTが「A2B攻撃」を公表、2026年10月13日
- INTERNET Watch:A2B攻撃の注意喚起、2026年10月13日
- OWASP API Security Top 10 2023:API1 オブジェクトレベルの認可の不備(英語)
当サイトの関連記事:ローソンID · 国内の漏えい公表60日間のまとめ · 「サイバー空間の非常事態」
2026年10月15日: 初版を公開しました。アドベンチャーのお知らせとNICTの注意喚起は、10月14日(日本時間)に報道と検索結果を通じて確認しました。調査環境から元のページを直接開くことはできませんでした。
