박승제 parkddol84@gmail.com 웹 애플리케이션 보안 박승제 parkddol84@gmail.com
웹 애플리케이션의 발전 인터넷 초창기 시절 웹 사이트는 정적인 정보(static documents)를 담고 있음 정보는 서버에서 브라우저로 한쪽 방향으로 흐르는 형태 대부분의 사이트들은 사용자 인증을 하지 않음 결정적인 보안 위험성은 없었음
웹 애플리케이션의 발전(cont’) 오늘날의 인터넷 서버와 브라우저 간의 쌍방향 정보 흐름 로그인, 재무 거래, 검색, 사용자가 게시물을 직접 작성 등을 지원 내용은 동적으로 생성되며, 때로는 사용자에 맞춰 작성됨 결정적인 보안 위험성 존재 (개인정보 훔침, 금융 범죄…)
일반적인 웹 애플리케이션 기능 쇼핑 (아마존) 사교 (마이스페이스, 트위터, 페이스북) 뱅킹 (씨티뱅크) 웹 검색 (구글) 경매 (이베이) 웹 메일 (핫 메일) 대화형 정보 (위키피디아) …
From Application to Web Application 전사 자원 관리 솔루션(ERP) 예전에는 자체의 무거운 클라이언트 애플리케이션을 사용 요즘은 웹 브라우저로 접속이 가능 사무용 애플리케이션 예전에는 데스크톱 사무용 애플리케이션 요즘은 구글 앱스나 마이크로소프트 오피스 라이브을 통해 서비스
클라우드의 시대
웹 애플리케이션의 혜택 웹 애플리케이션의 극적인 성장 이유? 이유 이러한 신기술은 새로운 영역의 보안 취약점을 가져옴! 상업적인 목적 + 기술적인 요소 몇 가지 이유 HTTP는 가볍고 비 접속 기반 사용자마다 포트를 열어둘 필요X, 잦은 통신 장애도 견딤 모든 유저는 컴퓨터에 한 개의 브라우저를 기본으로 설치 브라우저는 만족스러운 사용자 인터페이스를 가짐 클라이언트 측 언어를 사용하여 좀 더 고기능의 어플리케이션을 만들 수 있음 개발하기 쉬움 이러한 신기술은 새로운 영역의 보안 취약점을 가져옴!
SSL을 사용한다고 해서 웹 어플리케이션이 안전할까? “This site is secure” This site is absolutely secure. It has been designed to use 128-bit Secure Socket Layer(SSL) technology to prevent unauthorized users from viewing any of your information. You may use this site with peace of mind that your data is safe with us SSL을 사용한다고 해서 웹 어플리케이션이 안전할까? NO
취약점 Broken authentication Broken access controls SQL injection 쉽게 추축 가능한 비밀번호 허용, 무차별 대입 공격 허용, 인증 우회 허용 등 Broken access controls 공격자가 서버 내의 다른 사용자의 민감한 데이터 열람 허용 등 SQL injection 공격자가 서버의 DB와 상호작용 할 때 조작된 입력 값을 제공하는 것을 허용 Cross-site scripting 공격자가 다른 사용자로 도용 가능하게 함 Information leakage 애플리케이션 내부 결함 비정상적인 기능으로 인해 민감한 정보를 누출
SSL/TLS SSL/TLS An excellent technology that protects the confidentiality and integrity of data in transit between the user’s browser and the web server helps to defend against eavesdroppers provide assurance to the user of the identity of the web server they are dealing with But, it doesn’t stop attacks that directly target the server or client components of an application
Users can submit arbitrary input The Core Security Problem? Users can submit arbitrary input
보안 문제의 핵심 사용자는 서버 쪽 애플리케이션에 임의의 입력 값을 제공할 수 있음 애플리케이션 설계자 or 개발자는 사용자의 입력 값은 잠정적으로 위험할 수 있다고 가정해야 함 공격자가 조작된 입력 값을 통해 애플리케이션 로직 이나 기능을 훼손을 막아야 함 애플리케이션 데이터나 기능에 허락 없는 접근을 막아야 함
예 사용자는 클라이언트와 서버 간에 주고 받는 어떤 데이터에도 간섭을 할 수 있음 쿠키, HTTP 헤더 조작 e.g.)session-id 조작 클라이언트 쪽에 구현된 입력 값 확인과 같은 것들은 쉽게 무력화 할 수 있음 e.g.)Hidden 필드 사용하여 해당 재품에 가격 값을 변조 사용자는 개발자가 예상했던 절차대로 사용하지 않을 수 있음 악의적인 데이터베이스 쿼리를 강제로 삽입하여 민감한 데이터에 접근이 가능하게 함 사용자가 서버에 접속하는 데 반드시 웹 브라우저만 사용하는 것은 아님
주요 문제점 미성숙된 보안 의식 자체 개발 개발하기 쉽다는 함정 빠르게 진화하는 위협 프로파일 자원과 시간 제약 요소 지나치게 확장돼 응용된 기술
웹 애플리케이션 보안의 미래 여전히 업계에서는 보안 의식이 부족한 상황 그렇기 때문에, 앞서 얘기 했던 문제점들이 가까운 미래에 해결되진 않을 것 웹 앱 보안의 세부 내용은 계속 변화되고 있음 SQL 인젝션은 점점 위력이 약화됨
정리 웹 애플리케이션의 급격한 증가와 발전 그에 따라, 웹 애플리케이션 대부분의 보안 취약점을 가짐 대부분의 애플리케이션은 사용자가 임의의 값을 입력할 수 있음 개발자나 설계자는 이에 따른 대비를 해야 함
Thank you for your attention Q&A Thank you for your attention