본문 바로가기
반응형

전체 글188

시큐어코딩(11) - Relative Path Traversal 1. 정의 상대 디렉토리 경로 조작 (Relative Path Traversal) 외부의 입력을 통하여 "디렉토리 경로 문자열" 생성이 필요한 경우, 외부 입력값에 대해 경로 조작에 사용될 수 있는 문자를 필터링하지 않으면, 예상 밖의 접근 제한 영역에 대한 경로 문자열 구성이 가능해져 시스템 정보누출, 서비스 장애 등을 유발 시킬 수 있다. 즉, 경로 조작을 통해서 공격자가 허용되지 않은 권한을 획득하여, 설정에 관계된 파일을 변경할 수 있거나 실행시킬 수 있다. 2. 해결방법 - 외부의 입력이 직접 파일이름을 생성하여 사용될 수 있도록 한다. 불가피하게 직접 사용하는 경우, 다른 디렉토리의 파일을 접근할 수 없도록 replaceAll() 등의 메소드를 사용하여 위험 문자열(",/,\)을 제거하는 필터.. 2017. 11. 17.
시큐어코딩(10) - Cross-Site Request Forgery 1. 정의 크로스사이트 요청 위조 (Cross-Site Request Forgery) 특정 웹 사이트에 대해서 사용자가 인지하지 못한 상황에서 사용자의 의도와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 요청하게 하는 공격을 말한다. 웹 어플리케이션이 사용자로부터 받은 요청에 대해서 사용자가 의도한 대로 작성되고 전송된 것인지 확인하지 않는 경우 발생 가능하고 특히 해당 사용자가 관리자인 경우 사용자 권한 관리, 게시물 삭제, 사용자 등록 등 관리자 권한으로만 수행 가능한 기능을 공격자의 의도대로 실행시킬 수 있게 된다. 공격자는 사용자가 인증한 세션이 특정 동작을 수행하여도 계속 유지되어 정상적인 요청과 비정상적인 요청을 구분하지 못한느 점을 악용하여 피해가 발생한다. 웹 응용프로그램에 .. 2017. 11. 17.
시큐어코딩(9) - LDAP Injection 1. 정의 LDAP 삽입 (Improper Neutralization of Special Elements used in an LDAP Query, LDAP Injection) 공격자가 외부 입력을 통해서 의도하지 않은 LDAP 명령어를 수행할 수 있다. 즉, 웹 응용프로그램이 사용자가 제공한 입력을 올바르게 처리하지 못하면, 공격자가 LDAP 명령문의 구성을 바꿀 수 있다. 이로 인해 프로세스가 명령을 실행한 컴포넌트와 동일한 권한(authentication)을 가지고 동작하게 된다. LDAP 쿼리문이나 결과에 외부 입력이 부분적으로 적절한 처리없이 사용되면, LDAP 쿼리문이 실행될 때 공격자는 LDAP 쿼리문의 내용을 마음대로 변경할 수 있다. 2. 해결방법 - 위험 문자에 대한 검사 없이 외부 입력.. 2017. 11. 16.
시큐어코딩(8) - XPath injection 1. 정의 XPath 삽입 (Failure to Sanitize Data within XPath Expressions, XPath injection) 외부 입력값을 적절한 검사과정 없이 XPath 쿼리문 생성을 위한 문자열로 사용하면, 공격자는 프로그래머가 의도하지 않았던 문자열을 전달하여 쿼리문의 의미를 왜곡시키거나 그 구조를 변경하고 임의의 쿼리를 실행하여 인가되지 않은 데이터를 열람할 수 있다. 2. 해결방법 - XPath 쿼리에 사용되는 외부 입력데이터에 대하여 특수문자(", [, ], /, =, @ 등) 및 쿼리 예약어 필터링을 수행하고 인자화된 쿼리문을 지원하는 XQuery를 사용한다. 3. 예제 ========================== 안전하지 않은 코드의 예 =============.. 2017. 11. 16.
시큐어코딩(7) - XQuery injection 1. 정의 XQuery 삽입 (Failure to Sanitize Data within XQuery Expressions, XQuery injection) XQuery를 사용하여 XML 데이터에 대한 동적 쿼리문을 생성할 때 사용하는 외부 입력값에 대해 적절한 검증절차가 존재하지 않으면 공격자가 쿼리문의 구조를 임의로 변경할 수 있게 된다. 이로 인해 허가되지 않은 데이터를 조회하거나 인증절차를 우회할 수 있다. 2. 해결방법 - XQuery에 사용되는 외부 입력데이터에 대하여 특수문자 및 쿼리 예약어를 필터링하고, XQuery를 사용한 쿼리문은 스트링을 연결하는 형태로 구성하지 않고 인자(파라미터)화된 쿼리문을 사용한다. 3. 예제 ========================== 안전하지 않은 코드의 .. 2017. 11. 16.
시큐어코딩(6) - Open Redirect 1. 정의 신뢰되지 않는 URL 주소로 자동 접속 연결 (URL Redirection to Untrusted Site, Open Redirect) 사용자로부터 입력되는 값을 외부사이트의 주소로 사용하여 자동으로 연결하는 서버 프로그램은 피싱(Phishing) 공격에 노출되는 취약점을 가질 수 있다. 일반적으로 클라이언트에서 전송된 URL 주소로 연결하기 때문에 안전하다고 생각 할 수 있으나, 해당 폼의 요청을 변조함으로써 공격자는 사용자가 위험한 URL로 접속할 수 있도록 공격할 수 있다. 2. 해결방법 - 자동 연결할 외부 사이트의 URL과 도메인은 화이트리스트로 관리하고, 사용자 입력값을 자동 연결할 사이트 주소로 사용하는 경우에는 입력된 값이 화이트리스트에 존재하는지 확인해야 한다. 3. 예제 ==.. 2017. 11. 15.
시큐어코딩(5) - Unrestricted Upload of File with Dangerous Type 1. 정의 위험한 형식 파일 업로드 (Unrestricted Upload of File with Dangerous Type) 서버측에서 실행될 수 있는 스크립트 파일(asp, jsp, php 파일 등)이 업로드 가능하고, 이 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우 공격자는 스크립트 파일을 업로드하고 이 파일을 통해 시스템 내부명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있다. 2. 해결방법 - 업로드하는 파일 타입과 크기를 제한하고, 업로드 디렉터리를 웹서버의 다큐멘트 외부에 설정한다. - 화이트리스트 방식으로 허용된 확장자만 업로드되도록 하고, 확장자도 대소문자 구분 없이 처리하도록 한다. - 공격자의 웹을 통한 직접 접근을 차단한다. 또한 파일 실행 여부를 설정 할 수 있는.. 2017. 11. 15.
시큐어코딩(4) - OS Command Injection 1. 정의 운영체제 명령어 삽입 (Improper Neutralization of Special Elements Used in an OS Command, OS Command Injection) 적절한 검증절차를 수행하지 않은 사용자의 입력값이 운영체제 명령어의 일부 또는 전부로 구성되어 실행되는 경우, 의도하지 않은 시스템 명령어가 실행되어 부적절하게 권한이 변경되거나 시스템 동작 및 운영에 악영향을 미칠 수 있다. 일반적으로 명령어 라인의 인수나 스트림 입력 등 외부 입력을 사용하여 시스템 명령어를 생성하는 프로그램이 많이 있다. 하지만 이러한 경우 외부 입력 문자열을 신뢰할 수 없기 대문에 적절한 처리를 해주지 않으면, 공격자가 원하는 명령어 실행이 가능하게 된다. 2. 해결방법 - 웹 인터페이스를 .. 2017. 11. 15.
시큐어코딩(3) - Cross-site Scripting 1. 정의 크로스 사이트 스크립트 (Improper Neutralization of Input During Web Page Generation, Cross-site Scripting) 웹 페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도할 수 있다. 예를 들으, 검증되지 않은 외부 입력이 동적 웹 페이지 생성에 사용될 경우, 전송된 동적 웹페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보유출 등의 공격을 유발할 수 있다. 2. 해결방법 - 일반적인 경우에는 사용자가 문자열에 스크립트를 삽입하여 실행하는 것을 막기 위해 사용자가 입력한 문자열에서 ,&,"," 등을 replace등의 문자 변환 함수나 메소드를 사용항 &lt, &gt, &amp, &quot로 치환한다.- H.. 2017. 11. 14.
반응형