Rails Apps Arbitrary File Write Vulnerability Let Attackers Execute Code Remotely
Rails Apps Arbitrary File Write Vulnerability Let Attackers Execute Code Remotely
A newly exposed vulnerability in Ruby on Rails applications allows attackers to achieve Remote Code Execution (RCE) through a flaw that permits arbitrary file writing.
gbhackers.com
- 개요
- Ruby on Rails 애플리케이션에서 임의 파일 쓰기(Arbitrary File Write) 취약점 발견
- 공격자가 악성 파일을 원하는 경로에 저장하여 원격 코드 실행(RCE) 가능
- Bootsnap 라이브러리의 캐시 시스템을 악용하여 공격 효과 증대
- 취약점이 포함된 애플리케이션의 경우 즉각적인 보안 조치 필요
- 취약점 상세 내용
- 취약점 발생 원인
- 사용자 입력을 제대로 검증하지 않고 파일 업로드 처리
- Bootsnap 캐시 구조를 활용한 악성 코드 삽입 가능
- 애플리케이션이 재시작될 때 악성 코드가 실행됨
- 취약 코드 예시
def save_uploaded_file(uploaded_file, filename) upload_path = Rails.root.join("tmp", "uploads") FileUtils.mkdir_p(upload_path) File.open(File.join(upload_path, filename), 'wb') do |file| file.write(uploaded_file.read) end end
- 위 코드에서 공격자는
filename
을 조작하여/tmp/cache/bootsnap
경로에 악성 파일을 저장 가능 - 이후 애플리케이션이 재시작되면 악성 코드 실행
- 위 코드에서 공격자는
- 취약점 발생 원인
- 공격 방식
- 1단계: 쓰기 가능한 디렉터리 확인
- Docker 환경에서
/tmp
,/rails/tmp
등 제한된 쓰기 가능 경로 탐색
- Docker 환경에서
- 2단계: Bootsnap 캐시 파일 대상 선택
- Bootsnap은 캐시된 Ruby, YAML, JSON 파일을 저장하는데 이를 변조 가능
- 3단계: 악성 코드 삽입
- 공격자가 Bootsnap 캐시 파일에 Ruby 코드 삽입
`id >&2` # 현재 사용자 정보 출력 load("/path/to/original/file") # 기존 파일을 로드하여 오류 방지
- 공격자가 Bootsnap 캐시 파일에 Ruby 코드 삽입
- 4단계: 애플리케이션 재시작 유도
- Rails 환경에서
tmp/restart.txt
파일을 생성하여 Puma 서버 재시작
- Rails 환경에서
- 5단계: 원격 코드 실행(RCE) 성공
- Bootsnap 캐시 파일 로드 시 공격자가 삽입한 악성 코드 실행됨
- 1단계: 쓰기 가능한 디렉터리 확인
- 보안 권고
- 파일 업로드 보안 강화
- 파일명을 철저히 검증하고, 디렉터리 이동 공격(Path Traversal) 차단
- 업로드된 파일을 실행 가능한 위치에 저장하지 않도록 설정
- 쓰기 가능한 디렉터리 제한
- Rails 애플리케이션에서
tmp
및log
디렉터리 외의 쓰기 권한 제한 - 필요한 경우, 강제 접근 제어(MAC) 정책 적용
- Rails 애플리케이션에서
- Bootsnap 캐시 보호
- Bootsnap 캐시 디렉터리를 읽기 전용으로 설정
- 캐시가 변경될 경우 자동 무효화하는 보호 메커니즘 도입
- 취약점 패치 및 모니터링
- Bootsnap, Rails 및 관련 종속 라이브러리 최신 버전으로 업데이트
- 애플리케이션 재시작 시 불필요한 캐시 파일 실행 여부 감시
- Docker 환경 보안 강화
- 컨테이너 내에서 루트 사용자 대신 비권한(non-root) 사용자 실행
- 불필요한 시스템 권한을 제한하여 취약점 악용 피해 최소화
- 파일 업로드 보안 강화
- 결론
- Bootsnap 캐시 시스템과 Rails 파일 업로드 취약점이 결합될 경우 심각한 보안 위협 발생
- 공격자는 취약점을 악용하여 원격 코드 실행(RCE)을 수행할 수 있으며, 대규모 피해 가능
- 파일 업로드 처리 시 입력 검증, 쓰기 권한 제한, 최신 보안 패치 적용 필수
- 보안 담당자 및 개발자는 애플리케이션 코드와 구성을 지속적으로 감사(Audit)하여 유사한 취약점 발생을 예방해야 함
'Kant's IT > Vulnerability' 카테고리의 다른 글
큐냅 NAS OS에서 RCE 취약점 발견…보안 업데이트 필수 (0) | 2025.01.31 |
---|---|
챗GPT API 취약점 발견, DDoS 및 프롬프트 인젝션 공격 가능 (0) | 2025.01.31 |
주니퍼 라우터 대상 'Magic Packet' 취약점 악용 백도어 발견 (0) | 2025.01.31 |
Palo Alto 방화벽에서 Secure Boot 우회 및 펌웨어 취약점 발견 (0) | 2025.01.31 |
Next.js 프레임워크의 치명적 취약점, 캐시 오염 및 XSS 공격 가능성 (0) | 2025.01.31 |