Canvas LMS 침해가 드러낸 교육 SaaS 멀티테넌트 보안 설계

ShinyHunters Canvas LMS 침해 사고를 바탕으로 멀티테넌트 격리, 접근 제어, 랜섬웨어 대응과 FERPA·GDPR 리스크를 분석한다.

2026-08-15 · 최초 발행 2026-05-20

2026년 5월 7일, ShinyHunters는 전 세계 8,809개 교육기관이 사용하는 Canvas LMS를 공격해 약 2억 7,500만 명의 사용자 데이터 3.65TB를 탈취했다. 로그인 페이지는 랜섬웨어 메시지로 바뀌었고, 학생·교직원의 개인 메시지, 이메일 주소, 과제 기록 등 민감 정보가 피해 범위에 포함됐다. 이 사고는 교육 SaaS에서 멀티테넌트 보안 경계가 무너질 때 영향이 얼마나 넓게 확산되는지 보여준다.

단일 교육 SaaS에 집중된 침해 영향

Canvas LMS는 Instructure가 개발한 클라우드 기반 학습관리시스템(Learning Management System)이다. 미국·유럽·오세아니아의 K-12 학교, 대학교, 기업 교육 플랫폼에서 널리 사용된다. 단일 SaaS 플랫폼에 8,000여 개 기관이 모이는 구조는 규모의 경제를 제공하지만, 동시에 단일 실패 지점(Single Point of Failure)이 될 수 있다.

공격 직후 로그인 화면에는 ShinyHunters의 서명이 담긴 랜섬웨어 메시지가 나타났고, 다크웹 포럼에는 3.65TB 데이터 샘플이 공개됐다. 유출 정보에는 학생 성명·이메일·학번, 교직원 개인 정보, 기관 간 개인 메시지(Direct Message), 과제 제출 기록, OAuth 토큰 일부가 포함된 것으로 파악됐다. 피해 규모는 2023년 MOVEit 취약점 사고의 수천만 명 피해를 넘어서는 교육 분야의 침해 사례로 기록됐다.

ShinyHunters 공격 그룹초기 침투경로 탐색(1) API 엔드포인트취약점 악용(2) 관리자 계정자격증명 탈취(3) 서드파티 통합공급망 공격권한 상승Privilege Escalation멀티테넌트 DB수평 이동Lateral Movement3.65TB 데이터대규모 추출Data Exfiltration랜섬웨어 배포로그인 페이지 변조다크웹 공개협박·금전 요구서비스 중단8,809개 기관 영향

침투 경로와 유출 방식의 추정

ShinyHunters의 활동 방식

ShinyHunters는 2020년부터 활동을 시작한 국제 사이버범죄 그룹이다. Microsoft GitHub 내부 저장소 침해(2020년), Wattpad(2020년, 2.7억 명), AT&T(2024년, 1.1억 명 통화 기록) 등 대형 데이터 침해 사고를 일으킨 행위자로 언급된다. 이들의 전술은 기술적 정교함보다 대규모 자격증명 재사용 공격(Credential Stuffing), API 취약점 스캔, 공급망 침투에 집중되는 경향이 있다.

탈취 데이터는 다크웹(BreachForums 등)에서 거래하거나, 피해 기업에 데이터 삭제 대가를 요구하는 이중 협박(Double Extortion)에 활용된다. Canvas 사고에서도 서비스 복구를 위한 랜섬 요구와 데이터 비공개 조건부 협상이 함께 진행된 것으로 알려졌다.

조사 결과가 공개되기 전 고려할 경로

ShinyHunters는 Canvas의 무료 교사용 Free-For-Teacher 환경에 있던 지원 티켓 관련 취약점을 이용해 초기 접근권을 얻었다. 프로덕션과 같은 코드베이스를 쓰는 샌드박스 환경이 충분히 격리되지 않았고, 그 경로가 테넌트 경계를 넘어 메인 데이터베이스에 닿는 통로가 됐다. 무료·개발·스테이징·프로덕션 환경은 네트워크 레벨에서 완전히 나누고 각각 별도 자격증명을 사용해야 한다.

공식 조사 결과가 완전히 공개되지 않은 시점에서 보안 연구자들은 세 가지 초기 침투 경로를 유력하게 추정한다.

첫 번째는 API 엔드포인트 취약점 악용이다. Canvas LMS는 LTI(Learning Tools Interoperability) 표준 기반의 광범위한 REST API를 외부 도구 연동에 노출한다. 인증 우회 취약점(IDOR: Insecure Direct Object Reference)이나 API 속도 제한 미적용 상태에서 대량 데이터 열람이 가능했을 수 있다.

두 번째는 관리자 계정 자격증명 탈취다. 8,000여 개 기관의 로컬 관리자 계정 가운데 일부가 피싱 공격이나 이전 침해 사고에서 유출된 자격증명을 재사용하고 있었을 가능성이 있다. 관리자 계정 침해는 멀티테넌트 환경의 대규모 수평 이동으로 이어질 수 있다.

세 번째는 서드파티 통합을 경유한 공급망 공격이다. Canvas LMS는 Zoom, Google Workspace, Microsoft Teams, Turnitin 등 수십 개 외부 서비스와 OAuth 토큰 기반으로 연동된다. 통합 파트너의 취약점을 통해 Canvas 내부 API 접근 권한을 확보했을 수 있다.

대규모 데이터 탈취는 며칠에서 수 주에 걸쳐 점진적으로 진행됐을 가능성이 높다. 3.65TB를 단시간에 꺼내면 네트워크 트래픽 이상 탐지가 작동할 수 있으므로, 공격자들은 야간·주말과 소규모 분산 전송(Low-and-Slow Exfiltration)으로 탐지를 피했을 것으로 추정된다. 랜섬웨어 배포와 로그인 페이지 변조는 데이터 탈취가 끝난 뒤 피해 기관을 압박하는 수단으로 사용된 것으로 분석된다.

민감도에 따라 달라져야 하는 테넌트 격리

멀티테넌트 SaaS에서 데이터 격리는 보안 아키텍처의 기반이다. 격리 방식에 따라 단일 계정이나 서비스의 침해가 한 기관에 머물지, 전체 플랫폼으로 퍼질지가 갈린다.

**Pool 모델(공유 DB·공유 스키마)**에서는 모든 테넌트 데이터가 같은 테이블에 있고 tenant_id 컬럼으로만 구분된다. 구현이 단순하고 비용 효율적이지만, SQL Injection이나 ORM 설정 오류 하나가 전체 테넌트 데이터 노출로 연결될 수 있다. Canvas LMS가 이 모델에 가까운 구조를 사용했다면, 단일 권한 상승이 2.75억 명 데이터 전체로 이어진 원인이 될 수 있다.

**Bridge 모델(공유 DB·분리 스키마)**은 DB 인스턴스는 공유하되 테넌트마다 데이터베이스 스키마를 나눈다. Pool 모델보다 격리 수준이 높고, DB 연결 컨텍스트 전환으로 테넌트를 분리할 수 있다. PostgreSQL의 RLS(Row Level Security)를 적용하면 테넌트 간 데이터 접근을 정책 레벨에서 막을 수 있다.

**Silo 모델(전용 DB·전용 인스턴스)**은 테넌트별 독립 DB 인스턴스를 제공한다. 격리 수준이 가장 높아 한 테넌트의 침해가 다른 테넌트에 전파되지 않지만, 8,000여 개 기관 규모에 적용하기에는 운영 비용이 높다.

개인 메시지·성적 같은 고감도 데이터는 Bridge 이상으로, 공개 강의 콘텐츠 같은 저감도 데이터는 Pool 모델로 운영하는 혼합 구조가 현실적이다. 암호화 키도 테넌트별로 분리 관리해야 한다.

Silo 모델 (최고 격리)Bridge 모델 (권장)Pool 모델 (고위험)침해전체 노출침해스키마 단위 제한침해1개 테넌트만침해1개 테넌트만침해1개 테넌트만테넌트 A 데이터테넌트 B 데이터테넌트 C 데이터공유 DB공유 스키마tenant_id 컬럼테넌트 A 스키마테넌트 B 스키마테넌트 C 스키마공유 DB 인스턴스스키마 분리테넌트 A전용 DB테넌트 B전용 DB테넌트 C전용 DB전체 2.75억데이터 노출 위험피해 범위제한 가능피해 범위최소화

권한과 API 경계에서 막아야 할 확산

최소 권한 원칙(Principle of Least Privilege, PoLP)은 SaaS 보안의 핵심이다. 단일 침투 지점에서 2.75억 명 데이터 전체를 추출할 수 있었다는 사실은 과도한 권한 부여 구조가 존재했음을 시사한다.

학생·교직원·기관 관리자·Instructure 내부 엔지니어에게 필요한 권한만 주는 역할 기반 접근 제어(RBAC)가 필요하다. 특히 SaaS 벤더 내부 엔지니어의 운영 접근(Production Access)은 Just-in-Time(JIT) 방식으로 제한하고, 세션별 감사 로그를 남겨야 한다.

API는 OAuth 2.0 스코프 기반으로 세분화하고 토큰 유효 기간을 최소화해야 한다. 리프레시 토큰에는 IP·디바이스 바인딩을 적용하며, 관리자 권한 API에는 MFA(Multi-Factor Authentication) 재인증을 강제하는 방식이 필요하다. 기관 간 격리를 위해 Cross-Tenant API 호출은 명시적 허가 없이 차단하고, 모든 데이터 조회 요청은 테넌트 컨텍스트 검증 미들웨어를 통과하도록 설계해야 한다.

3.65TB가 유출되는 동안 탐지 시스템이 작동하지 않았다면 User and Entity Behavior Analytics(UEBA) 또는 Data Loss Prevention(DLP) 체계가 없었거나 제대로 작동하지 않았을 가능성을 의미한다. 기관별·역할별 정상 접근 패턴을 베이스라인으로 만들고, 단일 API 키가 시간당 10만 건 이상을 조회하는 것처럼 임계값을 넘으면 자동 차단·알림이 발동해야 한다. 야간·주말 대량 다운로드, 비일상적 지역 접근, 짧은 시간 내 다수 테넌트 순차 접근은 고위험 시그널로 분류할 수 있다.

저장 데이터(Data at Rest) 암호화만으로는 충분하지 않다. 저장 데이터 암호화와 필드 수준 암호화(Field-Level Encryption)를 함께 적용하면 데이터가 탈취됐을 때 평문 노출을 줄일 수 있다. 개인식별정보(PII)와 메시지 내용에는 AES-256-GCM을 적용하고, 비밀번호는 솔트를 개별 적용한 Argon2id 해시로 보관하며, 이메일 주소는 결정론적 암호화로 다룰 수 있다. 테넌트별 데이터 암호화 키(DEK: Data Encryption Key)를 테넌트별 키 암호화 키(KEK: Key Encryption Key)로 감싸는 Envelope Encryption 구조가 권장된다. KEK는 AWS KMS, Google Cloud KMS, Azure Key Vault 같은 HSM(Hardware Security Module) 기반 관리형 서비스에 보관한다. 테넌트가 자신의 KEK를 직접 관리하는 BYOK(Bring Your Own Key) 옵션은 침해 영향을 테넌트 단위로 제한할 수 있다.

백업은 3-2-1 원칙(3개 복사본·2개 미디어·1개 오프사이트)을 따르되, 랜섬웨어에 대비해 Air-Gap Backup 또는 Immutable Backup처럼 백업 데이터 자체를 격리해야 한다. AWS S3 Object Lock, Azure Blob Immutable Storage 등을 이용해 지정 기간 동안 삭제·수정할 수 없는 백업 체계를 구성할 수 있다.

저속 유출까지 고려한 탐지와 격리

침해 대응에서는 탐지 시간(MTTD)과 격리 시간(MTTI)을 줄이는 일이 핵심이다. Canvas 사고처럼 수 주에 걸친 저속 유출에서는 조기 탐지 실패가 피해 규모를 수천 배로 키울 수 있다.

네트워크 계층에서는 East-West 트래픽, 즉 내부 서버 간 통신을 관찰해야 한다. 공격자는 외부 방화벽을 우회한 뒤 내부에서 이동하므로, 마이크로세그멘테이션(Micro-Segmentation)으로 서비스 간 통신을 최소 필요 경로로 제한할 필요가 있다. 애플리케이션 계층에서는 RASP(Runtime Application Self-Protection)를 배포해 비정상 SQL 쿼리, 대량 데이터 조회, 의심 API 호출 패턴을 실시간 차단할 수 있다.

격리는 사람의 판단만 기다리지 않아야 한다. 침해 시그널이 포착되면 의심 계정 비활성화, 의심 API 키 폐기, 영향 테넌트 접근 차단을 자동 실행하는 SOAR(Security Orchestration, Automation and Response) 플레이북이 필요하다.

아니오이상 탐지 시그널UEBA·DLP·SIEM위협 점수임계값 초과?모니터링 지속로그 기록자동 격리 플레이북실행 (SOAR)(1) 의심 계정즉시 비활성화(2) 의심 API 토큰즉시 폐기(3) 영향 테넌트읽기 전용 모드 전환(4) 네트워크세그멘테이션 강화인시던트 대응팀즉시 알림·에스컬레이션포렌식 증거 수집병행 시작피해 범위 분석테넌트별 영향 산정규제 기관·피해자72시간 통보 (GDPR)

사후 분석과 법적 대응을 위해서는 로그 보존 정책을 침해 이전에 정해야 한다. 보존 대상에는 API 호출 전체와 요청 IP·시간·파라미터·응답 코드가 담긴 애플리케이션 접근 로그, 대량 SELECT·EXPORT 쿼리를 포함한 데이터베이스 쿼리 로그, 성공·실패 로그인과 MFA 우회 시도·세션 토큰 발급을 담은 인증 이벤트 로그가 있다. NetFlow/IPFIX 기반 East-West 트래픽을 포함한 네트워크 플로우 로그와 높은 권한 작업이 포함된 관리 콘솔 접근 로그도 필요하다.

로그는 원본 불변성을 위해 WORM(Write Once Read Many) 스토리지에 보관하고, 프로덕션 환경과 분리된 전용 로그 저장소(Log SIEM 분리)를 운영해야 한다. 보존 기간은 GDPR 요건과 국가별 법적 요구사항에 맞춰 최소 1년에서 7년까지 설정한다.

피해 범위 분석은 침해된 계정·API 키·세션의 접근 기록을 역추적하는 데서 시작한다. 공격자가 조회한 테이블과 레코드 범위를 특정한 뒤, 이름·이메일·학번·개인 메시지 등 레코드별 개인정보 유형을 분류한다. 이어 데이터 주체(Data Subject)의 규제 관할권(EU, 미국, 한국 등)을 매핑하고, 기관별·관할권별 통보 대상 목록을 자동 생성할 수 있어야 한다. GDPR은 침해 인지 후 72시간 이내 감독 기관 통보를 의무화하며, 미국 각 주의 개인정보보호법도 유사한 통보 의무를 부과한다.

교육 데이터 침해에 겹쳐지는 FERPA와 GDPR

FERPA(Family Educational Rights and Privacy Act)는 미국 연방 교육부 소관의 학생 교육 기록 보호법이다. 학생 성명, 학번, 성적, 출석 기록, 개인 식별 정보를 보호 대상으로 규정한다. 이를 학생 동의 없이 제3자에게 공개하거나 무단 유출되도록 방치한 교육기관은 연방 자금 지원 자격을 박탈당할 수 있다.

Canvas 침해 사고에서는 FERPA 보호 대상 정보가 대규모로 유출됐다. Instructure는 Canvas LMS 데이터를 처리하는 학교 관계자(School Official) 또는 서비스 제공자 지위에 있으므로, 교육기관은 계약에서 충분한 보안 통제 요구 사항을 명시했어야 한다. 계약상 보안 조건이 미흡했다면 교육기관도 FERPA 위반의 연대 책임을 질 수 있다. 교육기관은 부모·학생에게 침해 사실을 통보할 범위도 검토해야 한다.

미국 교육부는 FERPA 위반에 직접 과징금을 부과하지 않지만, 연방 자금 지원 차단이라는 제재 수단을 보유한다. 침해된 학생은 미국 각 주의 소비자 보호법 또는 프라이버시 법을 근거로 민사 소송을 제기할 수도 있다. 주별 개인정보 보호법에 따라 캘리포니아 CPRA, 뉴욕 SHIELD Act 등 주법의 신고 기한을 준수해야 하며, 13세 미만 학생 데이터가 포함된 경우에는 COPPA와 FTC 신고도 고려한다.

EU 교육기관에 제공되는 Canvas LMS 서비스에는 GDPR(General Data Protection Regulation)도 적용된다. Article 32는 기술적·조직적 보안 조치의 미흡 여부를 다루며, 2.75억 명 규모의 개인정보를 처리하는 플랫폼이 암호화, 접근 제어, 정기 보안 평가를 충분히 시행했는지는 EU 감독 기관의 조사 대상이 된다. Article 33은 침해 인지 후 72시간 내 감독 기관 통보를 요구하고, Article 34는 높은 위험을 초래하는 침해에서 정보 주체에 대한 직접 통보 의무를 규정한다.

GDPR 과징금은 전 세계 연간 매출의 최대 4% 또는 2,000만 유로 중 높은 금액이다. Instructure의 연간 매출 규모를 고려하면 수십억 원에서 수백억 원의 과징금 리스크가 현실화될 수 있다.

복구 계획과 공급자 계약에 남겨야 할 통제

교육 분야는 전통적으로 보안 투자 수준이 낮은 영역이다. 미국 교육부 통계에 따르면 고등교육 기관 IT 예산에서 보안이 차지하는 비중은 민간 기업의 절반 수준이다. K-12 학교에는 전담 보안 인력이 전혀 없는 경우도 흔하다. 8,809개 기관이 동시에 피해를 입은 배경에는 분산된 소규모 교육기관이 보안 역량을 독자적으로 갖추기 어려워 SaaS 공급자에게 보안을 전적으로 위임하는 구조가 있다.

침해 확인 직후 0~72시간에는 영향 받은 테넌트의 전체 세션 토큰을 강제로 무효화하고, 관리자 계정의 비밀번호 재설정을 강제하며, OAuth 토큰과 API 키를 일괄 로테이션해야 한다. 이어 영향 시스템을 격리하고 SSO 연동 IdP에 침해 사실을 알려 세션 무효화에 협조를 요청한다. 규제 기관 통보, 피해 기관 및 개인 통보 준비, 포렌식 보존을 위한 스냅샷 생성도 이 기간에 포함된다.

1~4주 동안은 취약점 패치 적용, 감염 경로의 완전 차단 확인, 강화된 MFA 전면 적용, 보안 모니터링 체계 보강, 피해자 신원 도용 모니터링 서비스 제공, 법적 대응 준비가 필요하다. 악성 코드를 제거하고 인프라 무결성을 검증한 뒤, 알려진 정상 상태의 스냅샷에서 서비스를 복구한다. 보안을 강화한 다음 단계적으로 서비스를 재개한다.

1~6개월의 재설계 범위에서는 멀티테넌트 아키텍처 전면 재검토, 테넌트별 암호화 키 분리, Zero Trust 네트워크 아키텍처 전환, 연간 침투 테스트(Penetration Testing) 및 Red Team 훈련 도입, 제3자 보안 감사 체계 수립을 다룬다.

교육기관은 SaaS 공급자와의 계약에서도 보안 통제를 확인해야 한다. 보안 감사 결과 공유 의무, SLA(Service Level Agreement)의 보안 지표, 침해 시 통보 시간 약정, 독립적 보안 감사 접근권, 데이터 이식성 보장 조항을 계약서에 명시할 필요가 있다.

Sources

Canvas LMSSaaS 보안멀티테넌트랜섬웨어교육 데이터 보안