Bit of a Close Talker: A Practical Guide to Serverless Cloud Co-Location Attacks
이 논문은 마이크로아키텍처 부채널 공격을 위한 물리적 공동 배치(co-location)를 달성하기 위해 서버리스 클라우드 스케줄러의 취약점을 악용하는 포괄적인 방법론을 제시하고, Microsoft Azure Functions와 같은 주요 플랫폼에 대한 성공적인 공격 사례를 입증하며, 완화 전략으로서 "Double-Dip" 스케줄러를 제안한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
개요: "서버리스(Serverless)" 호텔
클라우드 컴퓨팅 세계를 거대한 호텔이라고 상상해 보세요.
- 전통적인 클라우드 (Serverful): 방 하나를 통째로 빌립니다. 5분만 머물든 24시간을 머물든 방값은 똑같이 지불해야 합니다.
- 서버리스 클라우드: 방에 머문 정확한 시간만큼만 비용을 지불합니다. 패키지를 전달하기 위해 10초 동안 방이 필요했다면, 딱 10초만큼의 비용만 냅니다. 호텔 직원(클라우드 제공업체)이 청소, 열쇠 관리, 유지보수를 모두 처리합니다. 당신은 그저 나타나서 할 일을 하고 떠나기만 하면 됩니다.
이 방식은 비용을 절감하고 유연성을 높이는 데 매우 좋습니다. 하지만 호텔이 매우 효율적으로 운영되기 때문에, 공간을 아끼기 위해 최대한 많은 투숙객을 같은 방에 밀어 넣으려고 노력합니다. 이는 보안 위험을 초래합니다. 낯선 사람이 당신과 같은 방에 있게 될 수도 있기 때문입니다.
문제점: "가까이서 말하는 사람(Close Talker)" 공격
컴퓨터 세계에는 **사이드 채널 공격(side-channel attacks)**이라 불리는 교활한 수법들이 있습니다. 도둑이 당신의 신용카드 번호를 훔치려는 상황을 상상해 보세요. 도둑은 금고를 부술 수는 없지만, 만약 당신 바로 옆, 즉 같은 방에 서 있다면 당신의 심장 박동 소리를 듣거나 컴퓨터에서 나오는 열기를 느껴 비밀번호를 추측할 수 있습니다.
이를 수행하기 위해, 도둑은 당신과 **코로케이션(co-located)**되어야 합니다. 즉, 도둑의 컴퓨터 인스턴스와 당신의 컴퓨터 인스턴스가 반드시 동일한 물리적 서버(같은 "방")에서 실행되고 있어야 합니다.
과제: 클라우드 제공업체들은 똑똑합니다. 그들은 낯선 사람들이 같은 방에 머물지 않도록 손님들을 섞으려고 노력합니다. 이 논문은 다음과 같은 질문을 던집니다. 도둑이 호텔 매니저(스케줄러)를 속여서 특정 희생자와 같은 방에 들어가게 만들 수 있을까?
해결책: 도둑들이 사용한 방법
이 논문의 저자들은 클라우드를 속이는 방법에 대한 "실전 가이드"를 만들었습니다. 그들은 마치 탐정이 미스터리를 풀 듯이 이 과정을 세 단계로 나누었습니다.
1단계: 핑거프린팅 (시험 가동)
공격을 하기 전, 도둑은 호텔 매니저가 어떻게 생각하는지 알아내야 합니다.
- 비유: 도둑이 호텔에 테스트 메시지를 보낸다고 상상해 보세요. 그들은 호텔이 자신을 어디에 배치하는지 관찰합니다. 그런 다음 또 다른 메시지를 보내고 다시 관찰합니다.
- 발견: 많은 테스트 요청을 보냄으로써, 도둑은 매니저의 습관을 배웁니다.
- 매니저는 시간을 아끼기 위해 항상 같은 손님을 같은 방에 배치하는가? (네, 이것은 "호출 지역성(Invocation Locality)"이라고 불립니다.)
- 매니저는 바빠지면 방을 더 늘리는가? (네, 이것은 "오토 스케일링(Auto-Scaling)"입니다.)
- 매니저는 비슷한 짐을 가진 사람들을 그룹화하는가? (네, 이것은 "패키지 지역성(Package Locality)"입니다. 만약 여러분 둘 다 동일한 소프트웨어 도구가 필요하다면, 함께 배치됩니다.)
2단계: 공격 (함정)
도둑이 매니저의 습관을 파악하면, 함정을 설치합니다.
- 만약 매니저가 짐(패키지)을 기준으로 그룹화한다면 (Package Locality): 도둑은 희생자와 정확히 똑같은 "짐"(소프트웨어 패키지)을 사용하는 가짜 함수를 만듭니다. 매니저는 일치하는 짐을 보고 자동으로 그들을 같은 방에 배치합니다.
- 만약 매니저가 바빠져서 방을 추가한다면 (Auto-Scaling): 도둑은 엄청난 양의 가짜 요청을 쏟아붓습니다. 이는 매니저가 빠르게 많은 새로운 방을 열도록 강제합니다. 도둑은 자신의 "손님"들을 시스템에 넘쳐나게 하여, 그중 한 명이 우연히 희생자의 방에 착륙할 확률을 높입니다.
- 결과: 테스트에서 그들은 Microsoft Azure와 오픈 소스 플랫폼을 속여서 자신들의 "공격자" 코드를 "희생자" 코드 바로 옆에 배치하는 데 성공했습니다.
3단계: 증명
그들은 단순히 추측한 것이 아니라, 그것이 작동함을 증명했습니다.
- 그들은 시뮬레이션된 호텔(컴퓨터 프로그램)에서 테스트했습니다.
- 50대의 컴퓨터로 구성된 실제 클러스터에서 테스트했습니다.
- Microsoft Azure Functions(실제 공공 클라우드 서비스)에서 테스트했습니다.
- 결과: 그들은 25달러 미만의 비용으로 Azure에서 희생자와 코로케이션(같은 위치에 배치)되는 데 성공했습니다.
해결책: "더블 딥(Double-Dip)" 스케줄러
이 논문은 침입 방법을 보여주는 데 그치지 않고, 잠금장치도 제안합니다. 그들은 호텔 매니저를 위한 Double-Dip이라는 새로운 규칙을 제안합니다.
- 작동 방식:
- 첫 번째 딥(First Dip): 손님(함수)이 들어오면, 매니저는 먼저 확인합니다. "이 손님이 이미 방에 있는가? 그들을 다시 그곳에 배치할 수 있는가?" (이는 빠르고 효율적으로 유지하기 위함입니다.)
- 두 번째 딥(Second-Dip): 만약 그들을 위한 방이 없다면, 매니저는 이미 있는 손님의 종류가 가장 적은 방을 찾습니다.
- 목표: 이는 새로운 손님이 들어왔을 때, 낯선 사람과 섞일 가능성을 낮추기 위함입니다. 이는 "소프트 격리(soft isolation)"를 만듭니다. 이는 전용 개인 주택과 같은 완벽한 벽은 아니지만, 도둑이 희생자가 어디에 숨어 있는지 추측하는 것을 훨씬 더 어렵게 만듭니다.
핵심 요약
- 위협: 서버리스 클라우드는 효율적이지만, 그 효율성(유사한 것들을 함께 묶는 것)이 공격자가 희생자에게 몰래 접근할 수 있는 뒷문을 만듭니다.
- 현실: 공격자에게 초능력은 필요하지 않습니다. 단지 클라우드의 스케줄링 규칙을 이해하고, 이를 악용하기 위해 적절한 "테스트 메시지"를 보낼 줄 알면 됩니다.
- 방어: 클라우드 제공업체는 스케줄링 알고리즘을 조금 더 무작위적이고 예측 불가능하게 변경하여, 낯선 사람들이 실수로 같은 방을 공유하지 않도록 해야 합니다.
중요 참고 사항: 이 논문은 이 연구가 스케줄링(방 배정)에 관한 것임을 강조합니다. 이 방식이 실제로 데이터를 훔치는 것은 아니며, 단지 데이터 탈취를 위한 무대를 설정하는 "방 배정"을 조작할 수 있음을 증명할 뿐입니다. 저자들은 Microsoft에 이 사실을 경고했으며, Microsoft는 자신들에게 다른 방어책이 마련되어 있다고 언급했습니다. 하지만 스케줄링 취약점은 여전히 실질적인 문제입니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.