Notes
Security2025

코드 실행 플랫폼의 RCE · DoS 방어

학생이 임의 코드를 실행하는 교육 플랫폼의 구조적 위협을 CIA 관점에서 진단하고 입력·자원 양쪽에서 차단.

'코드 실행'을 공식 기능으로 제공하는 서비스라, 제출된 한 줄이 서버 전체를 장악하는 백도어가 될 수 있는 구조 — 보안 3요소(기밀성·무결성·가용성)가 모두 위협.

발견한 위협

  • 가용성(DoS) — 무한 루프 제출로 CPU 100% 점유, 타임아웃 미처리로 서비스 마비
  • 무결성(RCE) — system("rm -rf ...") / curl | sh 류로 서버 명령 실행 가능
  • 기밀성(유출) — system("env > ...")로 DB 자격증명 등 환경변수 탈취 위험

조치 ① 위험 호출 사전 차단 (code_security)

forbidden = [r'system\s*\(', r'fork\s*\(', r'exec', r'signal\s*\(']
for pattern in forbidden:
    if re.search(pattern, code):
        return False, [{'severity': 'CRITICAL', 'message': 'Forbidden C system call'}]
return True, []

조치 ② 자원 고갈 차단 (code_compiler)

except subprocess.TimeoutExpired:
    process.kill()   # 타임아웃 초과 즉시 종료
    stdout, stderr = process.communicate()
    raise

포렌식 — 제출 코드 채증

DB의 실행 로그에서 공격 계정의 제출 코드를 시각·언어와 함께 조회해 무한 루프·블로킹 I/O 패턴을 확인했다.

SELECT created_at, language, code
FROM   test_cases_execution_logs
WHERE  user_id = '<redacted>'
ORDER  BY created_at DESC
LIMIT  3;
Next애플리케이션 침투 진단 (IDOR · XSS)