資訊安全

史上最大教育資料外洩:Canvas/Instructure 2.75 億筆記錄遭竊,一張「客服工單」打開了全球 8,809 所學校的大門

2026.05.31 · 24 次瀏覽
史上最大教育資料外洩:Canvas/Instructure 2.75 億筆記錄遭竊,一張「客服工單」打開了全球 8,809 所學校的大門

從這起事件學會的,不是買更貴的防火牆,而是把 API 權限與存取控制當成第一道防線

5 月最受矚目的資安事件,是教育學習平台 Canvas 母公司 Instructure 的大規模資料外洩。攻擊者鎖定的不是什麼高深的零時差漏洞,而是 Free-for-Teacher 環境中一個「與客服工單(support tickets)相關」的弱點,藉此取得初始存取權,最終竊走約 2.75 億筆記錄,內容包含使用者名稱、電子郵件、課程名稱、選課資訊與訊息。受影響範圍橫跨全球 8,809 所大學、教育主管機關與機構,被普遍認定為史上規模最大的教育資安事件。事後 Instructure 與勒索組織 ShinyHunters 達成支付協議,試圖阻止一份高達 3.65TB 的 Canvas 資料外流。


一、攻擊很少從「正門」進來


這起事件的技術教訓,對任何經營網站或資訊系統的團隊都直接適用。攻擊往往不從正門進來,而是從被忽略的次要功能(客服、附件上傳、第三方整合)切入——這正是 SQL Injection、XSS、檔案上傳漏洞最愛藏身的地方。初始存取一旦得手,真正決定災情大小的是「橫向移動能不能被擋住」,這考驗的是 API 權限分層與最小權限原則。一個設計良好的系統,就算客服模組被攻破,也不該讓攻擊者一路撈到 2.75 億筆主資料。


二、這週就能開始的具體動作


在 Laravel 端,確保每一個 API endpoint 都掛上 Policy 與 Gate 做授權,而不是只驗證「有沒有登入」;用 Form Request 嚴格驗證輸入,搭配 Eloquent 參數綁定徹底杜絕 SQL Injection;輸出一律經過 Blade 的自動轉義防 XSS。在 Nginx 端,對 /api/ 路由套用速率限制(limit_req)與適當的 WAF 規則,把暴力嘗試與自動化掃描擋在應用層之外。再來是把客服、工單、附件這類「低調但高權限」的內部工具,獨立部署、獨立鑑權,不與主資料庫共用同一把萬能金鑰。


我的觀點


Canvas 事件最讓我有感的一點是:壓垮系統的不是技術多先進的攻擊,而是一個「大家都覺得不重要」的客服工單功能。資安最危險的盲點,往往是那些「能動就好、沒人想再碰」的邊角功能。安全不是一個你買來掛上去的產品,而是一種貫穿架構的習慣——最小權限、輸入永遠不可信、把每個模組都當成可能被攻破的前提去設計縱深防禦。對中小企業來說,你不會被 ShinyHunters 這種等級的組織盯上,但自動化掃描器不挑客戶大小,它只挑「好不好打」。把 Laravel 的授權層、Nginx 的速率限制、以及邊角功能的權限隔離這三件最基本的事做好,就能把九成的機會主義型攻擊擋在門外。


資料來源