Salesloft Drift 2025年 盗まれた OAuth トークンで多くの Salesforce へ
会話の窓のサービス Drift は、顧客の Salesforce に入るための OAuth トークンを自分の AWS に預かっていた。攻撃者は Salesloft の GitHub から入り、Drift の AWS でそのトークンを取り、顧客ごとの Salesforce から大量のデータを持ち出した。狙いは、データの中に書かれた別のサービスの鍵だった。
要点
- 入口は Salesloft の GitHub のアカウントだった。3月から6月に、リポジトリを取り、客の利用者を足し、ワークフローを置かれた。どう入られたかは公表されていない。
- 攻撃者は Drift の AWS で、顧客が Drift に許した連携の OAuth トークンを取った。トークンは顧客の Salesforce に Drift として入れる。
- 攻撃者は顧客の Salesforce から問い合わせや取引先のデータを大量に書き出し、その中から AWS の鍵、パスワード、Snowflake のトークンを探した。
- 攻撃者は問い合わせの実行の記録を消したが、ログは残っていた。顧客は自分のログで何を取られたかを調べられた。
- 止める所は、預ける側の鍵の守り、連携の権限と送り元の制限、業務のデータに鍵を書かないこと、APIの記録を見ること。
何が起きたか
| 日付 | 出来事 |
|---|---|
| 2025年3月22日 | Mandiant の調査が示す侵入の期間の始まり。TOR や匿名化の中継からのAPIの呼び出し、Salesloft の GitHub の個人アクセストークンを使った偵察と秘密の洗い出し、環境変数の秘密とリポジトリの持ち出しがあった[1] |
| 3月から6月 | 攻撃者が Salesloft の GitHub のアカウントに入り、複数のリポジトリの中身を取り、客の利用者を足し、ワークフローを置く。Salesloft と Drift の環境で偵察をする[1] |
| 時期は非公表 | 攻撃者が Drift の AWS の環境に入り、Drift の顧客の連携の OAuth トークンを取る[1] |
| 8月8日から18日 | 盗んだトークンで、顧客の Salesforce からデータを持ち出す[1][2] |
| 8月9日 | Drift Email の連携のトークンで、Drift と結んでいた少数の Google Workspace のアカウントのメールが読まれる[2] |
| 8月20日 | Salesloft が Salesforce と共に、Drift の有効なアクセストークンと更新トークンを全部失効させる。Salesforce は AppExchange から Drift を外す[2][3] |
| 8月26日 | Salesloft が Mandiant に調査を依頼する。9月6日の更新は依頼の日を8月28日と書き、調査の要約は8月26日と書く[1] |
| 8月27日、28日 | Google が攻撃の広がりと調べ方を公表する。28日の追記で、Salesforce の連携に限らず、Drift に預けた全部の認証の鍵を漏れたものとして扱うよう勧める[2] |
| 9月5日 6時 米国東部 | Salesloft が Drift の提供を止める[1] |
| 9月6日 | Salesloft が、GitHub から Drift の AWS へ至った調査の結果を公表する[1] |
| 9月12日 | FBI が FLASH で、UNC6395 の手口と送り元の IP アドレスを公表する[3] |
| 9月16日 | Drift を再開する[1] |
| 9月30日 | Mandiant の調査と手当てが終わる[1] |
- Salesloft は、Drift と Salesforce の連携を使っていない顧客は持ち出しの影響を受けていないとし、影響を受けた顧客には全員知らせたと書く[1]。
- Salesforce は用心のため、Salesloft の本体と Salesforce の連携も止めた。Salesloft は本体の連携に悪用の形跡は無いとし、後に連携を戻した[1]。
- Google は、Salesforce の基盤の弱点によるものではないとする[2]。
公表に無いこと
報道には、影響を受けた組織の数を数百とする物がある。Salesloft、Google、FBI の公表は数を出しておらず、Google は多数の会社の Salesforce と書くだけである[2]。GitHub のアカウントにどう入られたか、GitHub から Drift の AWS へどう移ったかも公表されていない。
通った道筋
| 段 | 何があったか |
|---|---|
| GitHub | Salesloft の GitHub のアカウントに入られ、リポジトリの中身を取られ、客の利用者とワークフローを足された[1]。調査の要約は、個人アクセストークンを使った秘密の洗い出しと、環境変数の秘密の持ち出しを挙げる[1]。 |
| Drift の AWS | 攻撃者は Drift の AWS の環境に入り、顧客が連携のために Drift へ許した OAuth トークンを取った[1]。トークンは更新トークンを含み、Salesloft と Salesforce は8月20日にアクセストークンと更新トークンの両方を失効させた[2]。 |
| 顧客の Salesforce | 盗んだトークンで顧客の Salesforce に入り、問い合わせ、取引先、利用者、商談のデータを問い合わせで取った[1][2]。正規の連携と同じトークンなので、Salesforce から見れば Drift の連携が動いているのと同じ形になる。FBI は、連携に許したアプリの OAuth トークンは Salesforce 自身が出すため、信頼する連携の動きに見えると書く[3]。 |
| 次の鍵 | 持ち出したデータから、AWS のアクセスキー、パスワード、Snowflake のトークンを探した。Google は、主な狙いを資格情報の収穫と見る[2]。 |
| 跡を消す | 問い合わせの実行の記録を消したが、ログは消えていなかった[2]。 |
1つの預け先がまとめて開く
連携のサービスは、顧客ごとの鍵を自分の所にまとめて持つ。そこが破られると、顧客の会社の守りを1つも破らずに、全部の顧客の中へ同時に入られる。顧客が多要素認証を強くしても、OAuth の連携はその外を通る。
どこで止められたか
| 止める所 | この件で | 限り |
|---|---|---|
| 開発の基盤への入口を絞る | 個人アクセストークンが偵察に使われた[1]。手当てで、個人アクセストークンと外の協力者を入る手段から外した[1] | どう入られたかが公表されていないので、どの守りで足りたかは言えない |
| GitHub の変化に気付く | 客の利用者とワークフローが足された[1]。その後8月まで見つかっていない | 組織の監査のログを見る人と仕組みが要る |
| 預かった鍵を分ける | 顧客の連携のトークンが Drift の AWS で取られた[1] | サービスは動くために鍵を使う。分けても、動く所が破られれば使われる |
| 連携の送り元を限る | Salesloft は、Drift の連携の通信は決まった IP アドレスから来るはずで、それ以外から認証に通った接続は疑うよう顧客に求めた[1]。FBI は IP アドレスによる制限とAPIの利用の監視を勧める[3] | 顧客の側で事前に限っていれば、盗んだトークンでも外からは通らない |
| 業務のデータに鍵を書かない | 問い合わせの記録などに書かれた鍵が狙われた[2] | 持ち出しは止めない。被害を次の入口に広げないための守り |
| ログを見る | 問い合わせの実行の記録は消されたが、ログは残った[2] | 見つけたのは持ち出しの後。止めるより、取られた範囲を知る手段 |
守り方
根本の直し方 連携を受け入れる側
- 連携のアプリに与える権限を、使う機能に要る物だけにする。API を使う権限を全部の利用者に配らず、要る利用者にだけ付ける。Google は、プロファイルから API Enabled を外し、権限セットで要る人にだけ付けるよう勧める[2]。
- 連携の利用者が入れる送り元を、連携先が公表する IP アドレスに限る[1][3]。トークンを盗まれても、別の所からは使えない。
- 業務のデータに鍵を書かない。問い合わせの記録に、顧客や社員が鍵やパスワードを貼ることがある。見つけたら消し、鍵は失効させて作り直す[2]。鍵の置き場所は秘密の鍵の扱いにある。
- 連携の一覧を持ち、使っていない連携を外す。1つの連携が漏れたら、その連携に許した全部の鍵を漏れたものとして扱う[2]。
根本の直し方 鍵を預かる側
連携の利用者の送り元を確かめる 架空のAPIの記録
# 連携先が公表している送り元は 198.51.100.0/24
time user src query
2025-08-11T02:14:09Z integration@example.com 198.51.100.24 SELECT Id, Subject FROM Case WHERE ... LIMIT 200
2025-08-11T03:40:51Z integration@example.com 203.0.113.77 SELECT Id, Description, Subject FROM Case ... LIMIT 2000
2025-08-11T03:41:05Z integration@example.com 203.0.113.77 SELECT Id, Name FROM Account ... LIMIT 2000
# 同じ連携の利用者が、公表の外の送り元から、ふだんの10倍の行を読んでいる
- Salesloft は、Drift の連携の通信が公表の IP アドレス以外から認証に通っていれば悪用を疑うよう求めた[1]。Google は、実行された問い合わせを記録する事象を見るよう勧める[2]。
- 見る物は、送り元、量、時間帯、ふだん読まない項目。連携の利用者は人より動きが決まっているので、外れた動きが目立つ。
緩和の策
記録しておくべき出来事と警告の置き方は A09 セキュリティログとアラートの不備、クラウドの鍵を長く置く危険は A02 セキュリティ設定の不備 の型3にある。委託先の資格情報から中へ入られた件は Target 2013年 でも扱う。
参照
- Clari/Salesloft Trust Center Salesloft。Drift/Salesforce Security Update、Update on Mandiant Drift and Salesloft Application Investigations 2025年9月6日時点、Notice: Drift Temporarily Offline、Drift Is Now Back Online、Summary of the Mandiant Investigation of Drift Applications 2025年9月30日時点
- Widespread Data Theft Targets Salesforce Instances via Salesloft Drift Google Threat Intelligence Group、2025年8月27日、28日追記
- Cyber Criminal Groups UNC6040 and UNC6395 Compromising Salesforce Instances for Data Theft and Extortion FLASH-20250912-001 FBI、2025年9月12日