시큐어코딩
- home
- 보안소식
- 시큐어코딩
02. [입력 데이터 검증 및 표현] 경로조작 및 자원삽입
2018.03.07 16:50
안녕하세요, 지에스인포입니다.
지난번에 살펴본 SQL 삽입 다음으로 오늘은 '경로조작 및 자원삽입'에 대해 살펴보겠습니다.
경로조작 및 자원삽입은, 행정자치부에서 발표한 '소프트웨어 개발보안 가이드'에서 '입력 데이터 검증 및 표현'에 속해있는 두 번째 항목입니다.
분석, 설계 단계의 보안요구항목에서는 '입력 데이터 검증 및 표현'의 '시스템 자원 접근 및 명령어 수행 입력값 검증'이라는 항목으로, 구현 단계 보안약점에서는 "입력 데이터 검증 및 표현"의 '경로 조작 및 자원 삽입'이라는 이름으로 명시가 되어있습니다.
# 경로조작 및 자원삽입 이란?
경로 조작 및 자원 삽입이란, 검증되지 않은 외부 입력 값을 통해 파일 및 서버 등 시스템 자원에 대한 접근 혹은 식별을 허용할 경우 발생할 수 있는 보안약점으로, 공격자는 입력 값 조작을 통해 시스템이 보호하는 자원에 임의로 접근하여 수정, 삭제 또는 시스템 정보 누출, 시스템 자원 간 충돌로 인한 서비스 장애들을 유발시킬 수 있습니다.
예를 들어 살펴보겠습니다.
특정 파일을 다운로드하는 Download.jsp 페이지가 있다고 가정해보겠습니다. Download.jsp는 웹 서버의 upload폴더에 존재하는 파일의 이름을 file이라는 파라미터로 입력 받으면 그 파일을 다운로드하게 해주는 페이지입니다.
일반 사용자들은 다음과 같이 파일을 요청하곤 했습니다.
" hxxp://gsinfo.kr/Download.jsp?file=abc.txt "
이렇게 요청을 하면, gsinfo 웹 서버는 upload폴더 안의 abc.txt파일을 찾아 다운로드 시켜줍니다.
그런데, 어떤 사용자가 이런 파일을 요청했습니다.
" hxxp://gsinfo.kr/Download.jsp?file=../../../../../../etc/passwd "
upload 폴더에서 6개의 상위 폴더에 있는 etc/passwd파일을 요청하였고, upload 폴더에서 상위폴더로 계속 올라가게 되면 /(루트)폴더일 경우, 결론적으로 /etc/passwd를 요청하게 되고, 그 사용자는 gsinfo 웹 서버의 시스템 파일을 획득하게 됩니다.
이렇게, 외부 입력 값을 이용해서 파일의 경로를 조작한다거나, 내부 자원을 조작할 수 있는 보안약점이 바로 경로 조작 및 자원 삽입입니다.
# 경로조작 및 자원삽입을 막기 위한 보안 대책은?
경로조작 및 자원삽입을 방어하기 위한 대책은 소프트웨어 개발 생명 주기에 따라 크게 두 가지로 나눌 수 있습니다.
경로조작 및 자원삽입을 방어하는 데에는 정해진 답은 없지만, 소프트웨어 개발보안 가이드에서 제시하는 방법은 위와 같으며, 각각의 상황에 맞게 적절히 사용하기를 권장하고 있습니다.
오늘은 경로조작 및 자원삽입에 대해 살펴봤습니다.
다음은 시큐어코딩 3번째 항목, "크로스사이트스크립트(XSS)"에 대해 살펴보겠습니다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
» | 02. [입력 데이터 검증 및 표현] 경로조작 및 자원삽입 | 관리자 | 2018.03.07 | 10518 |
1 | 01. [입력 데이터 검증 및 표현] SQL 삽입 | 관리자 | 2018.03.07 | 8615 |
본사주소 : 서울특별시 금천구 가산디지털1로 181, 가산더블유센터 1508호 COPYRIGHT ⓒ ALL RIGHT RESERVED.