보안

응용시스템, 웹서비스 위협, 공격_레이스 컨디션, 트랩도어, 포맷스트링, 버퍼오버플로우, 리버스 엔지니어링, 크로스사이트스크립팅, SQL 인젝션, CSRF, 시큐어코딩, OWASP, 보안 가이드

스윙스윙 2021. 10. 4. 20:58

▣ 응용시스템, 웹서비스 위협, 공격_레이스 컨디션, 트랩도어, 포맷스트링, 버퍼오버플로우, 리버스 엔지니어링, 크로스사이트스크립팅, SQL 인젝션, CSRF, 시큐어코딩, OWASP, 보안 가이드

공격기법 설명
레이스 컨디션
(race condition)
멀티 프로세스 상에서 자원을 검사하는 시점과 사용하는 시점 차이를 활용하는 공격기법
권한 수준이 다른 두 프로세스의 경쟁 관계를 이용한 공격으로, 관리자의 권한으로 실행되는
프로그램 중간에 끼어들어 자신이 원하는 작업을 수행하는 것
대응 방법 : 임시파일에 대한 심볼릭 링크 설정 여부와 권한에 대한 검사
              umask를 최소 022정도로 유지
트랩도어 or 백도어
(trap door)
접근 통제를 우회해 시스템에 직접 접근하는 공격방법으로 백도어(Backdoor)라고도 한다.
대응 방법 : 현재 프로세스를 확인하여 백도어가 아닌 정상 프로세스 목록들을 확인
               H-IDS 사용하여 백도어 사용을 탐지
포맷 스트링
(format string)
printf()같이 사용자 입력을 통해 데이터 포맷을 지정하는 함수에서 입력값 검증을 하지 않는 취약점을 이용한 공격

printf("%x")처럼 변수없이 쓰게 되면 메모리의 값들을 순서대로 출력하게 되어 메모리 구조를 파악하는데 악용 가능
%n이나 %hn를 이용하며 특정 메모리 위치의 값을 다른 것으로 변경 가능
대응 방법 : 컴파일 시간 방어(고급 프로그램 언어사용, 스택 보호 매커니즘(canary), 스택쉴드
                실행 시간 방어 : 주소 공간의 임의 추출(ASLR), 실행가능 주소 공간의 보호
버퍼 오버플로우
(buffer overflow)
할당된 메모리 영역을 벗어나 데이터 쓰기를 시도하여 악의적인 동작을 수행하는 공격기법
프로그램에서 버퍼의 한계를 점검하지 않은 오류를 이용하여 악의적인 코드를 입력하여 프로그램의 동작을 변경하거나 프로그램이 다운되도록 하는 방법
스택 버퍼 오버플로우, 힙 버퍼 오버플로우
대응 방법 : 컴파일 시간 방어(고급 프로그램 언어사용), 스택 보호 매커니즘(Stack canaries), 
                실행 시간 방어 주소 공간의 임의 추출(ASLR), 메모리 코드 실행 안됨(NX/DEP), 
                실행가능 주소 공간의 보호, NOP sled, 스택쉴드
리버스 엔지니어링

장치나 시스템의 구조를 분석하여 원리를 발견하는 과정(역공학)
공격대상 시스템 또는 응용프로그램에 대한 분석을 수행 -> 취약점을 통한 공격 코드 작성
대응 방법 : 소스코드 난독화, 바이너리 난독화

 

▣  웹 해킹_XSS(Cross Site Scripting), SQL 인젝션 Injection, 파일 업로드, 불필요하게 노출된 파일 이용, CSRF Cross Site Request Forgery

기법 설명
크로스사이트 스크립팅
XSS
(Cross Site Scripting)
게시판, 웹 메일 등에 삽입된 악의적인 스크립트에 의해 페이지가 깨지거나 다른 사용자의 사용을 방해하거나 쿠키 및 기타 개인 정보를 특정 사이트로 전송시키는 공격
('입력값 검증 부재'의 일종)
Reflective XSS, Stored XSS, DOM Based XSS
대응 방법 : 웝서버에서 사용자의 입력을 철저히 필터링
               특수 문자를 HTML 문자로 변경
               게시판에서 HTML 형태의 입력을 받지 않도록 처리
                사용자는 수상한 메일에 포함된 URL을 직접 클릭하지 말고 주기적인 브라우저 패치
SQL 인젝션
(Injection)
잘못 만들어진 웹어플리케이션에서 사용자로부터 입력받은 데이터를 SQL문에 붙여서 처리할 때
해커는 임의로 SQL문을 변경하여 사용자 인증을 우회하거나 데이터베이스 정보를 취득하는 공격
Blind SQL Injection, Mass SQL Injection, CSRF(Cros-site request forgery)
대응 방법 : 사용자 입력의 필터링
                SQL 에러메시지를 사용자에게 보여주지 않도록 설정
                웹어플리케이션 사용하는 DB유저의 권한을 제한
CSRF(Cros-site request forgery)
크로스사이트 요청변조
로그인한 사용자로 하여금 악의적인 행동을 하는 요청을 보내는 것임
공격기법 자체는 XSS와 동일하지만 공격 목적이 다름

변조된 요청을 서버로 전송하는 공격기법으로, 로그인된 상태의 사용자 브라우저에서 개인정보 변경 요청, 송금요청 등 사용자가 의도하지 않은 요청을 서버로 전송하는 기법을 사용
서버 입장에서는 이미 로그인 사용자이기 때문에 세션검증을 통해 사용자 요청을 신뢰하게 됨
CSRF 공격을 방지하지 위해서는 별도의 동적 인증 토큰을 생성하여 인증토큰을 검증하는 방식으로 검증을 강화해야 함
파일 업로드 해커가 웹서버에서 사용하는 동일한 프로그램언어로 된 파일을 웹서버에 업로드하고 그 파일을 실행할 수 있도록 하는 취약점 이용 방법(일명 Web Shell)
악성 코드를 업로드하는 대신 웹서버의 파일에 악성코드를 추가하는 방법도 있음
웹서버내의 모든 컨텐츠를 삭제 가능할 뿐아니라 관리자 권한까지도 취득가능
대응 방법 : 게시판에 업로드 되는 문서의 확장자등을 제한
                파일업로드 디렉토리에 있는 문서는 실행불가 설정
불필요하게 노출된
파일 이용
관리자가 부주의로 프로그램파일이나 정보파일을 백업이나 임시작업의 용도로 웹서버에 존재하게 하였을 때 해커가 이를 이용
대응 방법 : 웹서버의 불필요한 파일 제거
               중요파일의 위치와 Permission의 점검
환경변수 취약점 공격 공격자가 특정 경로, 혹은 특정 파일명을 환경변수에 등록하여, 사용자가 특정 명령 입력시 의도하지 않은 위치의 파일을 실행하도록 유도하는 공격
명령어 삽입
(Command Injection)
SQL Injection과 마찬가지로 공격자로부터 입력받은 데이터를 검증하지 않는 경우 발생하는 취약점으로 SQL문 조작이 아닌 exec()등 시스템 명령어 호출 함수에 삽입하여 OS명령어를 실행시키는 공격

 

■ 공격 기법 분류 사례

악성코드의 행위 기준 바이러스, 웜, 트로이목마, 논리폭탄, 랜섬웨어 등
서비스 거부 공격 노드 수 분산 서비스 거부 공격(DDoS), 서비스 거부공격(DoS)
Injection(삽입) 공격 유형 SQL 인젝션(Blind SQL injection, Mass SQL injection), 커맨드 인젝션
취약점 패치 존재 유무 제로데이 공격, 원데이 공격
사회공학 기법 피싱, 스미싱 등

 

■ 2021년 OWASP TOP 10 (3~4년에 정기적으로 업데이트)

A01 : Broken Access Control (접근 권한 취약점)

엑세스 제어는 사용자가 권한을 벗어나 행동할 수 없도록 정책을 시행합니다. 만약 엑세스 제어가 취약하면 사용자는 주어진 권한을 벗어나 모든 데이터를 무단으로 열람, 수정 혹은 삭제 등의 행위로 이어질 수 있습니다. 

A02 : Cryptographic Failures (암호화 오류)
Sensitive Data Exposure(민감 데이터 노출)의 명칭이 2021년 Cryptographic Failures(암호화 오류)로 변경되었습니다. 적절한 암호화가 이루어지지 않으면 민감 데이터가 노출될 수 있습니다. 

A03: Injection (인젝션)
SQL, NoSQL, OS 명령, ORM(Object Relational Mapping), LDAP, EL(Expression Language) 또는 OGNL(Object Graph Navigation Library) 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분으로써, 인터프리터로 보내질 때 취약점이 발생합니다. 

A04: Insecure Design (안전하지 않은 설계)
Insecure Design(안전하지 않은 설계)는 누락되거나 비효율적인 제어 설계로 표현되는 다양한 취약점을 나타내는 카테고리 입니다. 안전하지 않은 설계와 안전하지 않은 구현에는 차이가 있지만, 안전하지 않은 설계에서 취약점으로 이어지는 구현 결함이 있을 수 있습니다. 

A05: Security Misconfiguration (보안설정오류)
애플리케이션 스택의 적절한 보안 강화가 누락되었거나 클라우드 서비스에 대한 권한이 적절하지 않게 구성되었을 때, 불필요한 기능이 활성화 되거나 설치되었을 때, 기본계정 및 암호화가 변경되지 않았을 때, 지나치게 상세한 오류 메세지를 노출할 때, 최신 보안기능이 비활성화 되거나 안전하지 않게 구성되었을 때 발생합니다. 

A06: Vulnerable and Outdated Components (취약하고 오래된 요소)
취약하고 오래된 요소는 지원이 종료되었거나 오래된 버전을 사용할 때 발생합니다. 이는 애플리케이션 뿐만 아니라, DBMS, API 및 모든 구성요소 들이 포함됩니다. 

A07: Identification and Authentication Failures (식별 및 인증 오류)
Broken Authentication(취약한 인증)으로 알려졌던 해당 취약점은 identification failures(식별 실패)까지 포함하여 더 넓은 범위를 포함할 수 있도록 변경되었습니다. 사용자의 신원확인, 인증 및 세션관리가 적절히 되지 않을 때 취약점이 발생할 수 있습니다. 

A08: Software and Data Integrity Failures(소프트웨어 및 데이터 무결성 오류)
2021년 새로 등장한 카테고리로 무결성을 확인하지 않고 소프트웨어 업데이트, 중요 데이터 및 CI/CD 파이프라인과 관련된 가정을 하는데 중점을 둡니다. 

A09: Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)
Insufficient Logging & Monitoring(불충분한 로깅 및 모니터링) 명칭이었던 카테고리가 Security Logging and Monitoring Failures (보안 로깅 및 모니터링 실패)로 변경되었습니다. 로깅 및 모니터링 없이는 공격활동을 인지할 수 없습니다. 이 카테고리는 진행중인 공격을 감지 및 대응하는데 도움이 됩니다. 

A10: Server-Side Request Forgery (서버 측 요청 위조)
2021년 새롭게 등장하였습니다. SSRF 결함은 웹 애플리케이션이 사용자가 제공한 URL의 유효성을 검사하지 않고 원격 리소스를 가져올 때마다 발생합니다. 이를 통해 공격자는 방화벽, VPN 또는 다른 유형의 네트워크 ACL(액세스 제어 목록)에 의해 보호되는 경우에도 응용 프로그램이 조작된 요청을 예기치 않은 대상으로 보내도록 강제할 수 있습니다.




2019년 110번

정답 : 3번

멀티 프로세스 상에서 자원을 검사하는 시점과 사용하는 시점 차이를 활용하는 공격기법
권한 수준이 다른 두 프로세스의 경쟁 관계를 이용한 공격으로, 관리자의 권한으로 실행되는
프로그램 중간에 끼어들어 자신이 원하는 작업을 수행하는 것

대응 방법 : 임시파일에 대한 심볼릭 링크 설정 여부와 권한에 대한 검사
              umask를 최소 022정도로 유지


2019년 112번

정답 : 3번

사용자 입력값에 대한 검증을 수행하는 경우 클라이언트 측에서 자바스크립트를 이용하여

필터링을 수행하는 경우 쉽게 우회가 가능함

브라우저에서 '자바스크립트 사용'을 비활성화 하거나, 서버로 전송되는 메시지를

브라우저를 통하지 않고 조작하여 직접 전송하는 것이 가능하기 때문에 입력값 검증

기능을 구현하는 경우 클라이언트와 서버 측 모두 구현이 필요함


2019년 113번

정답 : 3번

공격기법 자체는 XSS와 동일하지만 공격 목적이 다름

CSRF는 변조된 요청을 서버로 전송하는 공격기법으로, 로그인된 상태의 사용자 브라우저에서 개인정보 변경 요청, 송금요청 등 사용자가 의도하지 않은 요청을 서버로 전송하는 기법을 사용

서버 입장에서는 이미 로그인 사용자이기 때문에 세션검증을 통해 사용자 요청을 신뢰하게 됨

CSRF 공격을 방지하지 위해서는 별도의 동적 인증 토큰을 생성하여 인증토큰을 검증하는 방식으로 검증을 강화해야 함


2019년 115번

정답 : 3번

버퍼 오버플로우 공격 방지 기법

구분 설명
스택 카나리
(Stack canaries)
스택의 복귀 주소(Return Address) 앞에 사전에 저장해두는 값 Stack Gurard SSP(Stack Smashing Protector) 기법
함수 수행 완료 후 복귀시점에 Stack guard값이 변경됐는지 검증하여 변경시 buffer overflow가 발생했다고 인지하고 예외처리 수행
ASLR
(Address Space Layout Randomization)
실행 파일을 메모리에 적재 시 ImageBase값을 랜덤하게 지정하여 Entry Point, Stack, Heap, RET Address를 추정하기 어렵게 생성하는 기법
프로세스가 실행될 때 마다 메모리 주소가 변경되므로 악의적인 공격자가 코드 실행 흐름 예측을 어렵게 함
NX / DEP Non-Executable Stack(스택 실행방지)/DEP(데이터 실행방지, Data Execution Prevention)
코드가 스택 메모리 영역에서 실행될 시에 예외를 일으키게 하는 목적으로, NX bit을 통해 메모리 공간을 실행 불가능하게 마킹하는 기법

RTL(Return to Libc) : 콜 스택의 서브루틴 반환 주소를 이미 프로세스의 실행가능 메모리에 위치한 서브루틴의 주소로 변경하는 공격기법


2020년 102번

정답 : 1번

프로그램 코딩시 지정한 buffer의 크기보다 큰 데이터를 보내 프로그램이 비 정상적으로 동작하게 하는 buffer overflow를 이용한 공격 기법임

- 주소공간 배치에 대한 난수화 설정으로 공격자가 메모리 내 특정 정보의 위치를 추정하지 못하게 한다.

- 프로그램 내 스택에서의 명령어 실행기능을 제한해야 한다.

- 스택가드(stack guard)기능을 활성화하여 스택을 보호하는 것이 필요하다.

 

구분 설명
스택 카나리
(Stack canaries)
스택의 복귀 주소(Return Address) 앞에 사전에 저장해두는 값 Stack Gurard SSP(Stack Smashing Protector) 기법
함수 수행 완료 후 복귀시점에 Stack guard값이 변경됐는지 검증하여 변경시 buffer overflow가 발생했다고 인지하고 예외처리 수행
ASLR
(Address Space Layout Randomization)
실행 파일을 메모리에 적재 시 ImageBase값을 랜덤하게 지정하여 Entry Point, Stack, Heap, RET Address를 추정하기 어렵게 생성하는 기법
프로세스가 실행될 때 마다 메모리 주소가 변경되므로 악의적인 공격자가 코드 실행 흐름 예측을 어렵게 함
NX / DEP Non-Executable Stack(스택 실행방지)/DEP(데이터 실행방지, Data Execution Prevention)
코드가 스택 메모리 영역에서 실행될 시에 예외를 일으키게 하는 목적으로, NX bit을 통해 메모리 공간을 실행 불가능하게 마킹하는 기법

2020년 106번

정답 : 4번

포맷 스트링 취약점(Format String bug)을 이용할 경우 명령어 흐름을 조작하는 것이 가능하기 때문에

악성코드를 실행시키는데 악용할 수 있음

 


2018년 112번

정답 : 1번

크로스사이트 스크립팅 XSS (Cross Site Scripting)

게시판, 웹 메일 등에 삽입된 악의적인 스크립트에 의해 페이지가 깨지거나 다른 사용자의 사용을 방해하거나 쿠키 및 기타 개인 정보를 특정 사이트로 전송시키는 공격
('입력값 검증 부재'의 일종)

스크립트 전달, 사용자 웹 브라우저에서 실행, 세션 탈취, 사이트 변조/리다이렉트는 XSS의 대표적인 특징


Reflective XSS, Stored XSS, DOM Based XSS
대응 방법 : 웝서버에서 사용자의 입력을 철저히 필터링
               특수 문자를 HTML 문자로 변경
               게시판에서 HTML 형태의 입력을 받지 않도록 처리
                사용자는 수상한 메일에 포함된 URL을 직접 클릭하지 말고 주기적인 브라우저 패치

 


2021년 101번

정답 : 4번

리버스 엔지니어링(reverse engineering)

장치나 시스템의 구조를 분석하여 원리를 발견하는 과정(역공학)
공격대상 시스템 또는 응용프로그램에 대한 분석을 수행 -> 취약점을 통한 공격 코드 작성
대응 방법 : 소스코드 난독화, 바이너리 난독화

 

* 문맥 교환(context switch)이란 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업

한 프로세스의 문맥은 그 프로세스의 프로세스 제어 블록에 기록되어 있음

 


2021년 113번

정답 : 2번

악성 스크립트를 사용자 브라우저(클라이언트)에서 실행시키는 공격은 XSS(Cross Site Script)임

XSS 유형 중 악성 스크립트가 공격 대상 서버에 저장되어 유포되는 경우 Stored XSS,

공격자가 임의의 서버에 스크립트를 저장하고 해당 서버로 URL이동을 유도하는 방식은 반사형 XSS(Reflective XSS)라고 함

 


2021년 119번

정답 : 4번

strcpy함수를 사용하고 있으므로 선언한 메모리 영역을 벗어나 데이터를 덮어쓰는 버퍼 오버플로 취약점이 존재하게 됨

 

버퍼 오버플로우(buffer overflow)

할당된 메모리 영역을 벗어나 데이터 쓰기를 시도하여 악의적인 동작을 수행하는 공격기법
프로그램에서 버퍼의 한계를 점검하지 않은 오류를 이용하여 악의적인 코드를 입력하여 프로그램의 동작을 변경하거나 프로그램이 다운되도록 하는 방법
스택 버퍼 오버플로우, 힙 버퍼 오버플로우

 

* 정수형 오버플로 : 정수를 사용한 연산의 결과가 정수값의 범위를 넘어서는 경우, 프로그램이 예기치 않게 동작될 수 있는 보안약점(예 : int로 선언한 변수에 2,147,483,647 보다 큰 수를 할당)

 

 


2012년 109번

정답 : 4번

CSRF(Cros-site request forgery)

공격기법 자체는 XSS와 동일하지만 공격 목적이 다름

CSRF는 변조된 요청을 서버로 전송하는 공격기법으로, 로그인된 상태의 사용자 브라우저에서 개인정보 변경 요청, 송금요청 등 사용자가 의도하지 않은 요청을 서버로 전송하는 기법을 사용

서버 입장에서는 이미 로그인 사용자이기 때문에 세션검증을 통해 사용자 요청을 신뢰하게 됨

CSRF 공격을 방지하지 위해서는 별도의 동적 인증 토큰을 생성하여 인증토큰을 검증하는 방식으로 검증을 강화해야 함

버퍼 오버플로우
(buffer overflow)
할당된 메모리 영역을 벗어나 데이터 쓰기를 시도하여 악의적인 동작을 수행하는 공격기법
프로그램에서 버퍼의 한계를 점검하지 않은 오류를 이용하여 악의적인 코드를 입력하여 프로그램의 동작을 변경하거나 프로그램이 다운되도록 하는 방법
스택 버퍼 오버플로우, 힙 버퍼 오버플로우
대응 방법 : 컴파일 시간 방어(고급 프로그램 언어사용, 스택 보호 매커니즘(canary), 스택쉴드
                실행 시간 방어 주소 공간의 임의 추출(ASLR), 실행가능 주소 공간의 보호, NOP sled
크로스사이트 스크립팅
XSS
(Cross Site Scripting)
게시판, 웹 메일 등에 삽입된 악의적인 스크립트에 의해 페이지가 깨지거나 다른 사용자의 사용을 방해하거나 쿠키 및 기타 개인 정보를 특정 사이트로 전송시키는 공격
('입력값 검증 부재'의 일종)
Reflective XSS, Stored XSS, DOM Based XSS
대응 방법 : 웝서버에서 사용자의 입력을 철저히 필터링
               특수 문자를 HTML 문자로 변경
               게시판에서 HTML 형태의 입력을 받지 않도록 처리
                사용자는 수상한 메일에 포함된 URL을 직접 클릭하지 말고 주기적인 브라우저 패치
SQL 인젝션
(Injection)
잘못 만들어진 웹어플리케이션에서 사용자로부터 입력받은 데이터를 SQL문에 붙여서 처리할 때
해커는 임의로 SQL문을 변경하여 사용자 인증을 우회하거나 데이터베이스 정보를 취득하는 공격
Blind SQL Injection, Mass SQL Injection, CSRF(Cros-site request forgery)
대응 방법 : 사용자 입력의 필터링
                SQL 에러메시지를 사용자에게 보여주지 않도록 설정
                웹어플리케이션 사용하는 DB유저의 권한을 제한

 


2013년 106번

정답 : 2번

게시판에 악성 스크립트를 삽입하는 것은 SQL Injection이 아닌 XSS(Cross Site Scription)에 해당하는 공격 방법임

크로스사이트 스크립팅
XSS
(Cross Site Scripting)
게시판, 웹 메일 등에 삽입된 악의적인 스크립트에 의해 페이지가 깨지거나 다른 사용자의 사용을 방해하거나 쿠키 및 기타 개인 정보를 특정 사이트로 전송시키는 공격
('입력값 검증 부재'의 일종)
Reflective XSS, Stored XSS, DOM Based XSS
대응 방법 : 웝서버에서 사용자의 입력을 철저히 필터링
               특수 문자를 HTML 문자로 변경
               게시판에서 HTML 형태의 입력을 받지 않도록 처리
                사용자는 수상한 메일에 포함된 URL을 직접 클릭하지 말고 주기적인 브라우저 패치
SQL 인젝션
(Injection)
잘못 만들어진 웹어플리케이션에서 사용자로부터 입력받은 데이터를 SQL문에 붙여서 처리할 때
해커는 임의로 SQL문을 변경하여 사용자 인증을 우회하거나 데이터베이스 정보를 취득하는 공격
Blind SQL Injection, Mass SQL Injection, CSRF(Cros-site request forgery)
대응 방법 : 사용자 입력의 필터링
                SQL 에러메시지를 사용자에게 보여주지 않도록 설정
                웹어플리케이션 사용하는 DB유저의 권한을 제한

* 침입 탐지 시스템(Intrusion Detection System, IDS)은 일반적으로 시스템에 대한 원치 않는 조작을 탐지하여 줌

 


2013년 108번

정답 : 3번

SQL Injection, XSS, 쿠키변조 등은 웹 시스템이 가지고 있는 취약점을 공격하는 공격 방법에 해당이 되지만, Stacheldraht는 분산서비스 공격의 일종으로 시스템의 가용성을 마비시키는 공격방법에 해당함

 

* Stacheldraht : 분산 서비스 거부 공격을 수행하는 맬웨어임

* 쿠키변조 : 적절히 보호되지 않은 쿠키를 사용하여 쿠키 인젝션 등과 같은 쿠키값 변조를 통한 다른 사용자로의 위장 및 권한 상승 등의 공격이 가능(웹 취약점)

 

크로스사이트 스크립팅
XSS
(Cross Site Scripting)
게시판, 웹 메일 등에 삽입된 악의적인 스크립트에 의해 페이지가 깨지거나 다른 사용자의 사용을 방해하거나 쿠키 및 기타 개인 정보를 특정 사이트로 전송시키는 공격
('입력값 검증 부재'의 일종)
Reflective XSS, Stored XSS, DOM Based XSS
대응 방법 : 웝서버에서 사용자의 입력을 철저히 필터링
               특수 문자를 HTML 문자로 변경
               게시판에서 HTML 형태의 입력을 받지 않도록 처리
                사용자는 수상한 메일에 포함된 URL을 직접 클릭하지 말고 주기적인 브라우저 패치
SQL 인젝션
(Injection)
잘못 만들어진 웹어플리케이션에서 사용자로부터 입력받은 데이터를 SQL문에 붙여서 처리할 때
해커는 임의로 SQL문을 변경하여 사용자 인증을 우회하거나 데이터베이스 정보를 취득하는 공격
Blind SQL Injection, Mass SQL Injection, CSRF(Cros-site request forgery)
대응 방법 : 사용자 입력의 필터링
                SQL 에러메시지를 사용자에게 보여주지 않도록 설정
                웹어플리케이션 사용하는 DB유저의 권한을 제한

 


2013년 119번

정답 : 1번, 2번

1) 업로드 디렉토리를 웹 서버 도큐먼트 외부에 설정하여 웹 경로로 실행되는 것을 막아야 함

2) SQL 인젝션을 방지하기 위한 기법임 

크로스사이트 스크립팅
XSS
(Cross Site Scripting)
게시판, 웹 메일 등에 삽입된 악의적인 스크립트에 의해 페이지가 깨지거나 다른 사용자의 사용을 방해하거나 쿠키 및 기타 개인 정보를 특정 사이트로 전송시키는 공격
('입력값 검증 부재'의 일종)
Reflective XSS, Stored XSS, DOM Based XSS
대응 방법 : 웝서버에서 사용자의 입력을 철저히 필터링
               특수 문자를 HTML 문자로 변경
               게시판에서 HTML 형태의 입력을 받지 않도록 처리
                사용자는 수상한 메일에 포함된 URL을 직접 클릭하지 말고 주기적인 브라우저 패치
SQL 인젝션
(Injection)
잘못 만들어진 웹어플리케이션에서 사용자로부터 입력받은 데이터를 SQL문에 붙여서 처리할 때
해커는 임의로 SQL문을 변경하여 사용자 인증을 우회하거나 데이터베이스 정보를 취득하는 공격
Blind SQL Injection, Mass SQL Injection, CSRF(Cros-site request forgery)
대응 방법 : 사용자 입력의 필터링
                SQL 에러메시지를 사용자에게 보여주지 않도록 설정
                웹어플리케이션 사용하는 DB유저의 권한을 제한

 


2014년 110번

정답 : 4번

공격 기법은 수동형 공격과 능동형 공격으로 나눌 수 있음. 수동형 공격은 시스템 취약점, 구조 정보 수집으로 이루어지며, 능동형 공격은 실제 시스템의 기밀성, 무결성, 가용성을 손상시키는 공격임

스니핑(Sniffing)은 트패픽 패킷 수집 및 분석을 통해 타겟 시스템의 정보를 수집하는 대표적인 수동형 공격이고 나머지는 능동형 공격에 해당함

 

레이스 컨디션
(race condition)
멀티 프로세스 상에서 자원을 검사하는 시점과 사용하는 시점 차이를 활용하는 공격기법
권한 수준이 다른 두 프로세스의 경쟁 관계를 이용한 공격으로, 관리자의 권한으로 실행되는
프로그램 중간에 끼어들어 자신이 원하는 작업을 수행하는 것
대응 방법 : 임시파일에 대한 심볼릭 링크 설정 여부와 권한에 대한 검사
              umask를 최소 022정도로 유지
포맷 스트링
(format string)
printf()같이 사용자 입력을 통해 데이터 포맷을 지정하는 함수에서 입력값 검증을 하지 않는 취약점을 이용한 공격

printf("%x")처럼 변수없이 쓰게 되면 메모리의 값들을 순서대로 출력하게 되어 메모리 구조를 파악하는데 악용 가능
%n이나 %hn를 이용하며 특정 메모리 위치의 값을 다른 것으로 변경 가능
대응 방법 : 컴파일 시간 방어(고급 프로그램 언어사용, 스택 보호 매커니즘(canary), 스택쉴드
                실행 시간 방어 : 주소 공간의 임의 추출(ASLR), 실행가능 주소 공간의 보호
버퍼 오버플로우
(buffer overflow)
할당된 메모리 영역을 벗어나 데이터 쓰기를 시도하여 악의적인 동작을 수행하는 공격기법
프로그램에서 버퍼의 한계를 점검하지 않은 오류를 이용하여 악의적인 코드를 입력하여 프로그램의 동작을 변경하거나 프로그램이 다운되도록 하는 방법
스택 버퍼 오버플로우, 힙 버퍼 오버플로우
대응 방법 : 컴파일 시간 방어(고급 프로그램 언어사용, 스택 보호 매커니즘(canary), 스택쉴드
                실행 시간 방어 주소 공간의 임의 추출(ASLR), 실행가능 주소 공간의 보호, NOP sled

 

■ 공격 기법 분류 사례

악성코드의 행위 기준 바이러스, 웜, 트로이목마, 논리폭탄, 랜섬웨어 등
서비스 거부 공격 노드 수 분산 서비스 거부 공격(DDoS), 서비스 거부공격(DoS)
Injection(삽입) 공격 유형 SQL 인젝션(Blind SQL injection, Mass SQL injection), 커맨드 인젝션
취약점 패치 존재 유무 제로데이 공격, 원데이 공격
사회공학 기법 피싱, 스미싱 등

 


2014년 112번

정답 : 4번

CSRF(Cross-Site Request Forgery) 크로스사이트 요청변조

로그인한 사용자로 하여금 악의적인 행동을 하는 요청을 보내는 것임. 공격기법 자체는 XSS와 동일하지만 공격 목적이 다름
변조된 요청을 서버로 전송하는 공격기법으로, 로그인된 상태의 사용자 브라우저에서 개인정보 변경 요청, 송금요청 등 사용자가 의도하지 않은 요청을 서버로 전송하는 기법을 사용
서버 입장에서는 이미 로그인 사용자이기 때문에 세션검증을 통해 사용자 요청을 신뢰하게 됨
CSRF 공격을 방지하지 위해서는 별도의 동적 인증 토큰을 생성하여 인증토큰을 검증하는 방식으로 검증을 강화해야 함

 


2014년 114번

정답 : 3번

'<', '>' 등 HTML 태그와 '&'등 URL 구성 문자를 치환하는 코드로 특정 스크립트를 실행하는 XSS나 CSRF유형의 공격을 방지 할 수 있는 '입력값 검증' 시큐어 코딩 사례임

 

 


2015년 109번

정답 : 2번

쿠키 만료시간 설정, 권한 및 세션ID포함 방지는 '보안기능'유형에 해당하는 '사용자 하드디스크에 저장되는 쿠키를 통한 정보노출' 소프트웨어 보안약점 대책임

 

보안기능(인증, 접근제어, 기밀성, 암호화, 권한관리 등)을 부적절하게 구현 시 발생할 수 있는 보안약점

 

 

 


2015년 112번

정답 : 3번

소켓 통신 시 접속을 수행하는 connect()함수의 인자로 사용되는 sockaddr_in 구조체의 포트번호를 환경변수 'rPort'로 바인딩하고 있음

공격자가 rPort값을 조작하여 임의의 포트로 접속을 유도할 수 있으므로 '경로조작 및 자원 삽입'유형에 해당 함

 

서버포트의 경우 변경이 거의 없으므로 정적으로 설정하는 것이 바람직함

다음과 같이 외부 입력값에 따라 미리 정하여진 포트를 선택하도록 함으로써 공격자가 임의의 포트를 사용하지 못하도록 함

 


2016년 104번

정답 : 1번

부적절한 인가는 '보안기능' 유형임.

* 소프트웨어 보안 약점 분류, SW개발보안가이드(2019.11 개정)

 


2016년 105번

정답 : 2번

보안약점이 존재하지 않는 Good코드에서 보안약점의 위치를 탐지하지 못한 경우 True Negative(TN)

 

■ 보안약점 탐지 4가지 상황

보안약점 탐지 여부 보안약점 존재 유무
보안약점 존재 보안약점 없음
보안약점 탐지(P) 보안약점 O 탐지 O(TP) 보안약점 X 탐지 O(FP)
1종 오류
탐지 안됨(N) 보안약점 O 탐지 X(FN)
2종 오류
보안약점 X 탐지 X(TN)

 


2016년 110번

정답 : 2번

2)번 피해자의 취약한 웹 애플리케이션에 피해자의 세션 쿠키와 기타 다른 인증정보를 자동으로 포함하여 위조된 HTTP요청을 강제로 보내도록 하는 기법은 '크로스사이트 요청 변조(CSRF)'임

 


2016년 111번

정답 : 2번

1)번 세션 하이제킹의 기본이 되는 기술로 IP주소를 속여서 공격하는 기법 -> IP Spoofing

3)번 자기 복제 능력이 있으며 다른 파일을 감염시키는 기법 -> 바이러스, 웜

4)번 인증절차 없이 시스템에 접근하기 위한 방법을 미리 설정해 놓는 기법 -> 트로이 목마

 


2017년 108번

정답 : 1번

CSRF를 제외한 HTTP 응답분할, XPath삽입, LDAP 삽입은 서버 측에서 검증 및 필터링 구현을 통해 방어가 가능함

CSRF의 경우 서버에서 위조된 요청인지 검증하기 위해서는 클라이언트(HTML코드)에서 임의로 생성한 Token값을 함께 전달해야 서버에서 검증이 가능함. 일반적으로 Hidden속성으로 임의로 생성한 Token값이 <form>태그 내에 포함되어야 함.

 

CSTF를 방지하기 위한 임시 Token전송 FORM예시

* 소프트웨어 개발보안 가이드 변경 2021년