yozm.tech
피드로 돌아가기
news.hada.ioHOTAI 재작성

C언어 자동 채점 시스템 우회: 이름 없이 함수 호출

한 학생이 학교의 C언어 자동 채점 시스템에서 허용되지 않은 함수(execve)를 직접 호출하지 않고 셸을 실행하는 데 성공했습니다. 주소 공간 배치 무작위화(ASLR)에도 불구하고, 허용된 함수와 목표 함수 간의 상대적 오프셋을 이용해 주소를 계산하고, ASan이 대체하는 mmap 함수를 통해 쓰기/실행 가능한 메모리를 확보하여 직접 시스템 호출 루틴을 실행하는 방식입니다. 이는 원격 코드 실행 환경의 보안 취약점을 보여줍니다.

5시간 전·2026.10.08·읽기 2분·neo https://news.hada.io/user/neo

학교의 C언어 자동 채점 시스템에서 허용되지 않은 함수를 우회하여 셸을 실행하는 개념 증명(PoC)이 성공했습니다. 이 학생은 `execve`와 같은 특정 함수 이름 사용을 금지하는 채점 환경에서, 해당 심볼을 직접 사용하지 않고도 임의의 셸 명령을 실행할 수 있는 방법을 찾아냈습니다. 이는 자동 채점 시스템의 보안 허점을 드러내며, 원격 코드 실행 환경의 설계에 대한 재고를 요구합니다.

이 우회 기법의 핵심은 주소 공간 배치 무작위화(ASLR)에도 불구하고 같은 메모리 세그먼트 내 함수 간의 상대적 오프셋(offset)은 일정하게 유지된다는 점을 활용한 것입니다. 학생은 허용된 함수의 주소를 기준으로 미리 알아낸 오프셋을 더해 목표 함수의 주소를 계산했습니다. 초기에는 `printf`를 기준으로 `execve`의 주소를 찾으려 했으나, 채점 환경에 적용된 메모리 오류 검사 도구인 ASan(AddressSanitizer)이 `printf`를 대체하면서 오프셋이 일정하지 않다는 사실을 발견했습니다. 대신 ASan이 대체하는 `mmap` 함수를 새로운 호출 대상으로 삼아, 이 함수를 통해 쓰기와 실행이 모두 가능한 메모리 영역을 확보했습니다. 이 확보된 메모리에 직접 작성한 x86-64 리눅스 시스템 호출(syscall) 루틴을 복사하고 실행하여 `execve` 시스템 호출을 수행했습니다.

이러한 방식은 사용자 코드를 비교적 자유롭게 실행할 수 있는 환경에서 발생할 수 있는 보안 문제를 시사합니다. ASLR만으로는 이러한 종류의 공격을 완전히 막을 수 없으며, 채점 시스템과 같은 원격 코드 실행 환경은 금지된 시스템 호출을 차단하기 위해 `seccomp`와 같은 샌드박스(sandbox) 기술을 적용하거나, `libc` 심볼 무작위화와 같은 추가적인 완화책을 고려해야 합니다. 이번 사례는 단순히 함수 이름 검사를 우회하는 것을 넘어, 메모리 배치, 함수 포인터, 시스템 호출의 동작 원리에 대한 깊은 이해를 바탕으로 한 정교한 공격임을 보여줍니다. 학교 측은 문제 신고를 받은 후 추가 조사를 중단하고 완화책을 검토 중입니다.

1인 창업자를 위한 기회 분석
AI 분석 · 참고용이며 검증이 필요합니다
3/10
약한 신호
왜 3점인가

이슈는 명확하지만, 1인 창업자가 해결하기에는 기술적 난이도가 높고 기존 대기업 솔루션과 경쟁해야 합니다.

문제 / 미충족 수요

원격 코드 실행 환경(예: 자동 채점 시스템, 온라인 코딩 테스트 플랫폼)은 보안 취약점에 노출될 수 있으며, 특정 함수 사용 제한만으로는 우회를 막기 어렵습니다.

한국 시장
국내 있음한국에도 온라인 코딩 테스트 플랫폼 및 교육용 자동 채점 시스템이 활발하게 사용되고 있어, 유사한 보안 문제가 발생할 가능성이 있습니다.
수익 모델

B2B SaaS 구독 · 돈 내는 주체: 온라인 코딩 테스트 플랫폼 기업, 교육 기관, 기업 채용 담당 부서

1인 실현 가능성
2/5

샌드박스 기술 및 시스템 호출 제어는 복잡하며, 안정적인 서비스 제공을 위해서는 상당한 개발 및 테스트 역량이 필요합니다.

진입 지점 (Wedge)

온라인 코딩 테스트 플랫폼을 위한 강화된 샌드박스 및 보안 검증 솔루션 개발

이번 주 첫 실험

기존 온라인 코딩 테스트 플랫폼의 보안 취약점 사례를 분석하고, `seccomp`를 활용한 시스템 호출 제한 샌드박스 PoC를 구현해보기

Original source
이 글은 news.hada.io의 기사를 yozm.tech가 한국어로 재작성한 버전입니다.
원문 보기