피드로 돌아가기
내 최소 메모리 안전 Go rsync가 취약점을 피하는 방법
GeekNewsGeekNews
Security

내 최소 메모리 안전 Go rsync가 취약점을 피하는 방법

Go 런타임 특성과 os.Root 기반의 공격 표면 최소화로 rsync 취약점 12종 차단

neo2026년 5월 26일22intermediate

Context

C 기반의 upstream rsync가 가진 메모리 관리 복잡성과 검증 누락으로 인해 Heap Buffer Overflow 및 Stack Information Leak 등 심각한 보안 취약점이 지속적으로 발생함. 특히 SHA256/512 지원 확장 과정에서 버퍼 크기 불일치와 경로 순회 논리 오류가 결합되어 임의 코드 실행 가능성이 제기된 상황임.

Technical Solution

  • Go 런타임의 Bounds Check 기능을 통한 Heap Buffer Overflow의 Panic 전환 및 에러 핸들링 설계를 통한 Service Denial 방어
  • 모든 변수의 Zero Value 초기화 특성을 활용하여 Stack Cookie 및 Return Pointer 유출을 원천 차단하는 Memory Safety 확보
  • Go 1.24 os.Root API 기반의 경로 제한 설계를 통해 Symlink를 이용한 Path Traversal 취약점의 구조적 제거
  • --inc-recursive, --safe-links 등 복잡도가 높은 부가 기능을 제외한 Minimal Implementation 전략으로 공격 표면(Attack Surface) 최소화
  • Protocol Version 27 구현을 통한 구형 프로토콜 기반의 체크섬 선택 로직 단순화 및 잠재적 취약점 배제

1. 외부 입력 기반의 버퍼 할당 시 런타임 Bounds Check에 의존하지 말고 명시적 검증 로직을 추가하여 Panic을 Error로 전환할 것

2. 파일 시스템 접근 시 단순 경로 검사가 아닌 os.Root와 같은 Rooted File System API 도입을 검토할 것

3. 비즈니스 핵심 가치와 무관한 복잡한 레거시 기능(예: Incremental Recursion)은 과감히 제거하여 공격 표면을 줄일 것

원문 읽기