2026年3月24日火曜日、Linearはプライベートチームのデータを同じワークスペース内の他のメンバーに露出させるコード変更をデプロイした。UTC午前12時07分から午前1時10分までの約1時間、ゲストユーザーを含むワークスペースのメンバーが、通常のチーム権限の範囲外のデータにアクセスできる状態だった。

Linearの認可レイヤーは「sync group」リゾルバーを使用して、クエリごとに権限フィルターを追加する。パフォーマンス最適化は、ユーザーに決して一致し得ないリゾルバーをスキップするように設計され、単一の内部ワークスペースでのみ実行されるよう制限されていた。しかし、他の場所でこの最適化を無効化するコードパスには変数シャドーイングのバグがあり、元のフィルターにフォールバックする代わりにユーザー固有のリゾルバーをすべて破棄していた。そのため下流の権限チェックが完全にスキップされ、クエリはフィルターされていない結果を黙って返していた。

この変更はピアレビューとテストを受けていたが、カバーされていたのは最適化が有効なパスのみであり、他のワークスペース向けに無効化されたパスをテストした者は誰もいなかった。Linearのチームは特に、このバグがAIによって書かれたものではないと指摘した。これは人間による変数シャドーイングのリグレッションであり、テストカバレッジの隙間を突いたものだった。

露出は通知ダイジェスト(1人のメンバーがワークスペース全体のダイジェストを受け取る可能性があった)、クライアントの同期ブートストラップ、モバイルセッション、および広範なOAuth/APIクエリを通じて発生した。認証情報やAPIキーの漏洩はなく、悪意ある悪用の証拠もなかった。Linearは1時間以内に変更をリバートし、Webおよびデスクトップクライアントを強制リロードし、アクティブなモバイルセッションをログアウトさせ、48時間以内に影響を受けたワークスペースの連絡先に通知した。

2026年3月24日の約1時間、プライベートチームのデータが同じワークスペース内の他のメンバーやゲストからアクセス可能であり、約7,000件の同期およびAPI呼び出しがそれを取得した可能性がある。

最適化の無効化パスには、ユーザー固有のリゾルバーをすべて省略してしまう変数シャドーイングのバグがあった。

テストカバレッジは最適化が有効な場合を検証していたが、無効化されているパスは検証していなかった。

権限チェックはフェイルオープンした。つまりクエリはエラーを発生させる代わりに結果を返した。

通知、同期、モバイル、APIの各レイヤーはすべて、壊れた権限レイヤーを信頼していた。

フィルターをスキップするアクセス制御の「最適化」は、その無効化パスがテストされている場合にのみ安全である。さもなければ、ハッピーパスのレビューが静かな権限の拡大を承認してしまう。

Linearはデプロイ環境、チーム種別、ロール、ゲストアクセス、認証方法にわたる統合テストを拡充し、ダイジェストあたりの通知項目数を上限設定し、デプロイ前のセキュリティレビューの厳格化と認可異常の監視を約束した。影響を受けたワークスペースのオーナーに通知し、希望者にはワークスペースごとの露出概要を提供した。ユーザーはこれを、ちょうどARR1億ドルを超えたばかりの企業による、まれで透明性をもって対応されたセキュリティインシデントとして記事にした。

出典をたどる

出典

  1. Post mortem on Linear security incident on March 24th, 2026 Linear · linear.app ·
  2. User-specific data accessible to the wrong users within the same workspace Linear Status · linearstatus.com ·
  3. Linear discloses a data exposure incident Devbytes · devbytes.co.in ·