본문으로 건너뛰기
>_ITDITD웹 보안 플랫폼

용어 사전

RCE(원격 코드 실행)란 — 왜 최악의 취약점 부류인가

RCE(원격 코드 실행)는 공격자가 네트워크를 통해 당신의 서버에서 코드를 실행하게 합니다 — 곧장 장악으로 이어지는 최악의 부류입니다. XSS·SQLi와의 차이, 피해 범위를 결정하는 것, 그리고 방어법: 빠른 패치, CVE 모니터링, 최소 권한.

게시 2026-06-07 업데이트 2026-06-07 3분 읽기

"CVSS 10.0짜리 RCE" — 보안 담당자를 가장 긴장하게 만드는 표현입니다. 왜 RCE가 "최악의 부류"인지, 다른 버그와 무엇이 다른지를 처음부터 설명합니다.

다른 버그와의 차이

대부분의 취약점은 피해 범위가 제한적입니다. RCE는 서버 자체에서 명령을 실행하므로 한 차원 더 심각합니다.

취약점코드가 실행되는 곳주요 피해일반적 심각도
XSS브라우저세션 탈취, 변조중–높음
SQLi데이터베이스데이터 읽기/변경높음
RCE서버 자체장악, 측면 이동, 모든 것최악(10.0급)

왜 최악의 부류인가

공격자가 당신의 서버에서 명령을 실행한다는 것은 그 프로세스가 할 수 있는 모든 일을 그들이 할 수 있다는 뜻입니다.

RCE 달성 (임의 코드 실행)

↓ 가능해지는 것
.env 를 읽어 비밀 탈취
DB에 닿아 빼내기/변경
측면 이동의 발판
↓ 얼마나 멀리 퍼지는가 =
프로세스의 "권한" (그래서 최소 권한이 효과적)
피해 범위는 실행 중인 프로세스의 권한으로 결정된다. 최소 권한과 격리가 마지막 방어선이다.

피해 범위는 "그 프로세스의 권한"으로 결정됩니다. 바로 그래서 컨테이너화, 최소 권한, 격리(피해 범위 최소화)가 효과적입니다. root로 실행하면 모든 게 끝나고, 비특권으로 격리해 실행하면 봉쇄할 수 있습니다.

대부분의 RCE는 당신의 버그가 아니라 "알려진 구멍"에서 온다

RCE는 당신이 작성한 버그가 아니라, 당신이 사용하는 프레임워크나 라이브러리의 알려진 구멍에서 오는 경우가 매우 많습니다. 많은 이정표적 사고가 RCE였습니다.

방어를 위해 할 수 있는 일

1

공개된 CVE를 방치하지 않기 (가장 큰 방어)

CVE 를 기계(Dependabot / osv-scanner)로 모니터링하고 수정된 버전으로 빠르게 업데이트하세요. 대부분의 RCE는 알려진 구멍의 방치에서 옵니다.

2

실행 중인 버전으로 판단하기

매니페스트의 하한선이 아니라 실제로 실행 중인 버전으로 위험을 측정하세요. 텍스트를 믿으면 위험을 잘못 판단합니다. 록 파일(lockfile)과 실제 배포된 이미지를 함께 확인해, "고쳤다고 적혀 있지만 실제로는 옛 버전이 도는" 상황을 피하세요.

3

피해 범위 최소화

비특권 사용자로 실행하고, 컨테이너와 네트워크를 격리하세요. 당하더라도 피해를 봉쇄합니다. 같은 맥락에서, 프로세스가 읽을 수 있는 비밀(.env, 토큰)을 꼭 필요한 것만으로 줄이면, 설령 코드가 실행되더라도 손에 들어갈 수 있는 것이 줄어듭니다.

4

입력을 실행으로 곧장 넘기지 않기

외부 입력을 셸 명령, 역직렬화, 템플릿 평가에 직접 넣지 마세요. 스스로 RCE를 만들지 않기 위한 기본입니다.

다음으로 읽기

FAQ

QRCE는 XSS 같은 흔한 버그와 무엇이 다른가요?
A

XSS 등은 대부분 사용자의 브라우저 안에서 오작동하지만, RCE는 서버 자체에서 임의의 프로그램을 실행합니다. 서버의 권한, 데이터, 다른 서비스에 닿을 수 있으므로 일반적으로 가장 심각한 부류입니다.

QRCE의 피해는 어디까지 퍼지나요?
A

공격받았을 때 실행 중이던 프로세스의 권한이 미치는 곳까지입니다. root나 넓은 권한으로 실행하면 피해가 막대하고, 컨테이너 격리된 비특권 사용자로 실행하면 봉쇄할 수 있습니다. 그래서 최소 권한과 격리가 중요합니다.

Q개발자인 제가 RCE를 어떻게 방어하나요?
A

스스로 RCE 버그를 만들지 않는 것(입력을 실행으로 곧장 넘기지 않기) 외에, 가장 큰 방어는 사용하는 프레임워크/라이브러리에 공개된 RCE를 방치하지 않는 것입니다. CVE 모니터링과 빠른 업데이트가 핵심입니다.