보안동향

최신 보안정보를 신속하게 전해드립니다.

[보안동향] CVE-2019-5418 File Content Disclosure on Rails

2019-07-31
  1. 개요

Ruby On Rails는 웹 어플리케이션 프레임워크로 해당 서버에서 사용하는 Action View 모듈에서

발생할 수 있는 파일 컨텐츠 노출 취약점 입니다.

 

  1. 취약한 버전

모든 버전

 

  1. 취약점 설명 및 분석

Accept Header에 payload를 넣고 render file:을 호출하게 되면 대상 서버의 중요 파일을 렌더링

할 수 있습니다.

 

ActionView 모듈의 소스는 다음과 같습니다. 해당 소스에서 find_file을 호출하여 템플릿을 결정하게

됩니다.

 

 

Find_file 메소드는 다음과 같습니다.

 

 

그 다음 options를 생성하는 args_for_lookup 메소드는 다음과 같습니다.

 

 

Name : “file”, prefixes : Path(ex. home/burn6/~~~) , details : formats(payload) 로

설정되게 됩니다.

 

 

그 다음 @view_paths.find_file 함수가 호출되게 됩니다.

 

 

View는 어플리케이션의 외부에 존재하기 때문에 Outside_app는 true가 되고 find_all_anywhere

함수가 호출되게 됩니다.

 

 

그 다음 find_templates 함수가 호출되게 되며 옵션에 따라 렌더링 할 템플릿을 찾습니다.

 

그 다음 build_query 함수로 query가 만들어지고 File.expand_path(query, @path)가 실행된 후에

완성된 결과는 다음과 같습니다.

 

해당 취약성을 이용해서 payload 에 ../../../../../../../../etc/passwd{{ 를 넣어준다면 아래와 같은

query가 만들어지고 arbitrary file read attack이 발생됩니다.

 

페이지를 요청할 때 Accept Header에 위의 payload를 삽입하면 서버의 중요 파일이 노출됩니다.

 

해당 취약점에 대한 공격 시나리오는 다음과 같습니다.

 

  1. 위협요소

공격자에 의해 서버의 중요 파일이 탈취되어 정보 누출, 2차 공격의 위협이 존재합니다.

 

  1. 대응방안

1) Rails 최신 버전 업데이트

 

목록