Microsoft PowerPoint - file

Similar documents
Observational Determinism for Concurrent Program Security

J2EE Concepts

10.ppt

문서의 제목 나눔고딕B, 54pt

mytalk

2007 상반기 실적회의 - DRM Extension

5월-방지호1-1.indd

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

歯JavaExceptionHandling.PDF

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

제목 레이아웃

Microsoft PowerPoint - CSharp-10-예외처리

Intro to Servlet, EJB, JSP, WS

자바-11장N'1-502

쉽게 풀어쓴 C 프로그래밊

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

JavaGeneralProgramming.PDF

Microsoft PowerPoint - 04-UDP Programming.ppt

rmi_박준용_final.PDF

** 5 개이발생한주요소프트웨어별취약점세 EDB 번호취약점종류공격난이도공격위험도취약점이름소프트웨어이름

PowerPoint 프레젠테이션

14-Servlet

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

2장 변수와 프로시저 작성하기

DBMS & SQL Server Installation Database Laboratory

신림프로그래머_클린코드.key

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

PowerPoint Presentation

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E >

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

PCServerMgmt7

MasoJava4_Dongbin.PDF

Microsoft PowerPoint - 03-TCP Programming.ppt

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

개발문서 Oracle - Clob

bn2019_2

Network seminar.key

본 해설서는 정보통신망 이용촉진 및 정보보호 등에 관한 법률 (이하 법 이라 한다) 제28조제1항과 같은 법 시행령 제15조제6항에 근거한 개인정보의 기술적 관리적 보호조치 기준 이 개정 고시( )됨에 따라 - 동 기준의 각 조항별 주안점과 구체적인 사례를

The Pocket Guide to TCP/IP Sockets: C Version

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Week13


API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Sena Device Server Serial/IP TM Version

13주-14주proc.PDF

<4D F736F F D205B4354BDC9C3FEB8AEC6F7C6AE5D3131C8A35FC5ACB6F3BFECB5E520C4C4C7BBC6C320B1E2BCFA20B5BFC7E2>

2015 년 SW 개발보안교육과정안내

Microsoft PowerPoint - 10Àå.ppt

Portal_9iAS.ppt [읽기 전용]

PowerPoint Presentation

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

TTA Journal No.157_서체변경.indd

슬라이드 1

C++ Programming

IPAK 윤리강령 나는 _ 한국IT전문가협회 회원으로서 긍지와 보람을 느끼며 정보시스템 활용하 자. 나는 _동료, 단체 및 국가 나아가 인류사회에 대하여 철저한 책임 의식을 가진 다. 나는 _ 활용자에 대하여 그 편익을 증진시키는데 최선을 다한다. 나는 _ 동료에 대해

JAVA PROGRAMMING 실습 09. 예외처리

FileMaker ODBC and JDBC Guide

슬라이드 1

Secure Programming Lecture1 : Introduction

NoSQL

Interstage5 SOAP서비스 설정 가이드

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

Secure Programming Lecture1 : Introduction

04장

vm-웨어-01장

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Data JPA Many To Many 양방향 관계 예제

Analyst Briefing

기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라.

Voice Portal using Oracle 9i AS Wireless

PowerPoint 프레젠테이션

KYO_SCCD.PDF

중간고사

歯튜토리얼-이헌중.PDF

Subnet Address Internet Network G Network Network class B networ

±èÇö¿í Ãâ·Â

PowerPoint 프레젠테이션

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

12-file.key

untitled

<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

02 C h a p t e r Java

Ç¥Áö

Web Application Hosting in the AWS Cloud Contents 개요 가용성과 확장성이 높은 웹 호스팅은 복잡하고 비용이 많이 드는 사업이 될 수 있습니다. 전통적인 웹 확장 아키텍처는 높은 수준의 안정성을 보장하기 위해 복잡한 솔루션으로 구현

PowerPoint Presentation

The Pocket Guide to TCP/IP Sockets: C Version

JMF2_심빈구.PDF

게시판 스팸 실시간 차단 시스템

제목을 입력하세요.

FileMaker 15 ODBC 및 JDBC 설명서

PowerPoint 프레젠테이션

DocsPin_Korean.pages

제11장 프로세스와 쓰레드

PowerPoint 프레젠테이션

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

RFP

CD-RW_Advanced.PDF

Transcription:

SW 보안약점소개 SIGPL Workshop, KCC2013 2013. 6. 28 한국항공대학교안준선 목차 시큐어코딩, 보안약점, 보안취약점 SW 보안약점의유형 입력데이터검증및표현 (Input Validation and Representation) API 오용 (API Abuse) 보안기능 (Security Features) 시간및상태 (Time and State) 에러처리 (Error Handling) 코드오류 (Indicator of Poor Code Quality) 캡슐화 (insufficient Encapsulation) 관련연구 2

시큐어코딩 (Secure Coding) 보안취약점없는강건한프로그램을작성하는것... One of the key things that developers can do to help secure their systems is to write code that can withstand attack and use security features properly... [http://msdn.microsoft.com/en-us/security/aa570401.aspx]...easily avoided software defects are a primary cause of commonly exploited software vulnerabilities.... [http://www.cert.org/secure-coding/] 3 2 nd Software Crisis : Trustworthiness 4

침해양상의변화 침해의난이도가쉬워지고있음 침해의변화경향 특정시스템목표 Social Engineering 목적 : 단순파괴 이윤추구 / 정치적목적 Recent Market Price Credit Card Number $0.50~$20 Full Identity $1~$15 Bank Account $10~$1000 5 시큐어코딩의중요성 보안침해의 75% 이상이응용소프트웨어와관련 (Gartner, 05) 보안침해의소프트웨어보안결함으로연간 1800억달로손실 (Geeknomics, Davis Rice) 운영단계의취약점제거비용은개발단계에서보다많은비용소요 (IBM 60~80배, MS 100배 ) MS 에서는 SDL (Secure Development Lifecycle) 을 SQL Server 2005에적용한결과 SQL Server 2000 대비 3년간발견된취약성이 91% 감소 6

I 보안약점, 보안취약점 정의 보안약점 (Weakness) 보안취약점의될수있는소프트웨어의결함, 실수, 버그등 보안취약점 (Vulnerability) 공격자가이용하였을경우에시스템의보안정책을침해하게되는시스템의허점 특성일반적형태 / 근원적개별적 / 상황의존적 보안약점공격자의접근정보의수정및획득 보안취약점 보안약점을제거함으로써, 보안취약점에대한근원적인대처가가능 7 SW 보안약점유형 주요유형 입력데이터검증및표현 (Input Validation and Representation) API 오용 (API Abuse) 보안기능 (Security Features) 시간및상태 (Time and State) 에러처리 (Error Handling) 코드오류 (Indicator of Poor Code Quality) 캡슐화 (insufficient Encapsulation) [Seven Pernicious Kingdoms : A Taxonomy of Software Security Errors, IEEE Security & Privacy, 3(6):81 84, 2005] 8

SW 보안약점유형 1 : 입력데이터검증및표현 적절한검증없이사용된외부입력으로인한 SW 취약점 관련약점 문자열삽입 SQL 삽입 크로스사이트스크립트 OS 명령어삽입 버퍼넘침 자원삽입 숫자값오류 9 문자열삽입약점 외부입력문자열전달 하위시스템의명령어문자열을생성하여전달 서버보안침해 클라이언트침해 위험한작업수행 Web Server, Mail Server,... DB Server OS,... 비밀데이터, 위험한스크립트가포함된결과전송 10

문자열삽입약점 보안약점 XQuery 삽입 SQL 삽입 XSS (Cross Site Scripting) XPath 삽입 OS 명령어삽입 HTTP 응답분할 LDAP 삽입디렉토리경로조작로그삽입 XML 삽입 생성문자열 XQuery SQL HTML 파일 XPath Shell HTML 헤더 LDAP 파일경로로그 XML 11 SQL 삽입 root String sql = "select * from user where username='" + username +"' and password='" + password + "'"; rs = stmt.executequery(sql); 12

SQL 삽입 select * from user where username='root' and password = '' or '1'='1' ' or '1'='1 root String sql = "select * from user where username='" + username +"' and password='" + password + "'"; rs = stmt.executequery(sql); 13 SQL 삽입 select * from user where username='root' and password = ''; drop table members; ' '; drop table members; root String sql = "select * from user where username='" + username +"' and password='" + password + "'"; rs = stmt.executequery(sql); 14

SQL 삽입 15 SQL 삽입약점의제거 Prepared statements PreparedStatement pstmt = con.preparestatement( "select * from user where username=? and password =?"); pstmt.setstring(1, username); pstmt.setstring(2, password); rs = pstmt.executequery(); Stored statements CallableStatement cs = connection.preparecall( "{call sp_getuserrecord(?)}"); pstmt.setstring(1, username); pstmt.setstring(2, password); rs = cs.executequery(); 16

SQL 삽입공격의방어 탈출문자열 (Escaping sequence) DB에서일반문자로인식되도록기호를대치 문제 DB에따라탈출문자열이다름 \ /* mysql */ /* Oracle */ ESAPI (Enterprise Security API) 17 크로스사이트스크립트 (XSS) showevent.php $day=$_get[ day ]; echo <a href=\ event.php? day=$day\ > ; 18

크로스사이트스크립트 (XSS) http://www.target.com/showevent.php?day=><s cript>malicious_script();>/script> showevent.php $day=$_get[ day ]; echo <a href=\ event.php? day=$day\ > ; 19 크로스사이트스크립트 (XSS) <a href= event.php?day=> <script>malicious_script();>/script> showevent.php $day=$_get[ day ]; echo <a href=\ event.php? day=$day\ > ; 20

크로스사이트스크립트 (XSS) Stored XSS DOM based XSS Reflexive XSS 21 크로스사이트스크립트 (XSS) http://www.some.site/page.html?default= <script>malicious_script()</script> DOM based XSS <select><script> document.write("<option value=1>"+document.location.href.substring (document.location.href.indexof("def=")+8)+"</option>"); document.write("<option value=2>english</option>"); </script></select> 22

크로스사이트스크립트 (XSS) http://www.some.site/page.html?default= <script>malicious_script()</script> DOM based XSS <select> <OPTION value=1>malicious_script()</option>"); <OPTION value=2>english</option></select> 23 XSS 약점의제거 신뢰할수없는데이터에대한검증 Whitelist 검증사용 문맥을고려한인코딩 OWASP ESAPI Microsoft Anti-Cross Site Scripting Library 24

SW 보안약점유형 2 : API 오용 적합하지않은인자를사용한 API 의사용이나 API 결과에대한적절하지않은가정에의한약점 관련약점들 DNS lookup에의존한보안결정 결과값검사누락 안전하지않은함수의사용 덜지워진않은힙메모리데이터 25 DNS lookup 에의존한보안결정 도메인명에의존하여보안결정을할경우 DNS 서버캐시오염을통한공격이가능 InetAddress addr = InetAddress.getbyName(ip); if addr.getcanonicalhostname().endswith( trustme.com ){ truested = true; } if (Ip.equals(trustedAddr)) { trusted = true; } 26

SW 보안약점유형 3 : 보안기능 인증, 접근제어, 암호화, 권한관리등과관련된소프트웨어약점 관련약점들 취약한암호화알고리즘사용 적절한인증없는중요기능허용 중요자원에대한잘못된권한설정 사용자중요정보평문저장 솔트없이일방향해쉬함수사용 무결성검사없는코드다운로드... 27 취약한암호화알고리즘사용 도메인명에의존하여보안결정을할경우 DNS 서버캐시오염을통한공격이가능 Cipher c = Cipher.getInsgtance( DES ); Cipher c = Cipher.getInsgtance( AES/CBC/PKCS5Pasdding ); 취약한알고리즘 : MD4, MD5, RC2, RC4, RC5, DES, 2DES 안전한알고리즘 : SHA-256, AES, SEED, ARIA 등 28

SW 보안약점유형 4 : 시간및상태 복수의쓰레드나프로세스들의병행수행과관련하여시점과상태를적절히처리하지못하여발생하는약점 관련약점들 경쟁조건 : 검사시점과가용시점 제대로제어되지않은재귀 29 경쟁조건 : 검사시점과가용시점 자원에대한권한검사시점과자원의사용시점간의자원의상태변화에따른허점 if(!access(file,w_ok)) { f = fopen(file,"w+"); operate(f);... } else { fprintf(stderr,"unable to open file %s.\n",file); } 30

SW 보안약점유형 5: 에러처리 에러를처리하지않거나, 불충분하게처리하여발생하는시스템의불안정이나정보누출과관련한약점 관련약점들 오류메시지통한정보노출 오류상황대응부재 적절하지않은예외처리 31 오류메시지통한정보노출 시스템에대한민감한정보를포함하는오류메시지를생성하여외부에제공하여공격을도와주는경우 32

SW 보안약점유형 6: 코드오류 소프트웨어의질관리가부실함을보여주는약점들로일반적으로취약점으로직접연관되지는않는다. 관련약점들 부적절한자원해제 스택변수주소의반환 널포인터역참조 사용되지않는코드 (Dead Code) 사용되지않는변수 33 부적절한자원해제 파일, 힙메모리, 소켓등의자원사용후적절한반환이이루어지지않는경우 Try { Class.forName( com.mysql.jdbc.driver ); conn = DriverManager.getConnection(url); conn.close(); } Catch (Exception e) { } 34

SW 보안약점유형 7: 캡슐화 중요한데이터나함수에대한불완전환캡슐화 관련약점들 잘못된세션에의한데이터누출 제거되지않고남은디버거코드 공용메서드로부터반환된 private 배열-유형필드 private 배열-유형필드에공용데이터할당 35 잘못된세션에의한데이터노출 다중쓰레드환경에서싱글톤객체필드에대한경쟁조건발생으로인한데이터노출가능 Public class MyServlet extends HTTPServlet { private String name; protected void dopost(httpservletrequest request, HTTPServletResponse response) throws ServletException, IOException { name = request.getparameter( name ); out.println(name+, thanks for visiting ); } } 36

관련연구 : 보안약점 / 보안취약점목록 37 관련연구 : 주요보안약점목록 38

관련연구 : Secure Coding Guides 39