출제기준 단원 「입력데이터 검증 및 표현」의 공개 문제 3개를 묻는 꼴별로 나누면 이렇습니다.
묻는 꼴
문제 수
무엇을 묻나
옳고 그름 판정(입력검증 취약점)
1
입력값 검증 관련 설명 중 틀린 항목 고르기
용어 선택(웹 보안 프로젝트)
1
웹 보안을 연구하는 프로젝트 명칭 고르기
용어 선택(보안 메커니즘)
1
부인 방지 기능의 명칭을 고르기
뜻
입력 데이터 검증의 부재로 생기는 대표적인 보안 약점은 세 가지다. SQL 삽입은 입력값이 검증되지 않은 채 SQL 문에 들어가 데이터베이스 쿼리를 조작하는 공격이고, 크로스사이트 스크립트(XSS)는 브라우저에서 악성 코드가 실행되게 하는 공격이며, 운영체제 명령어 삽입은 서버의 명령어가 직접 실행되게 하는 공격이다. 셋 다 외부에서 들어오는 입력값을 적절히 검증하지 않아 발생한다는 공통점이 있다. 보기에 '자원 삽입' 같은 표현이 나오면 표준적인 취약점 분류가 아니므로 틀린 설명으로 본다.
SQL 인젝션을 더 들여다보면, 공격 방식이 데이터베이스마다 똑같지 않다는 점이 핵심이다. Oracle, MySQL, MSSQL 같은 DBMS는 지원하는 함수나 구문 구조가 달라서 사용 가능한 공격 기법도 달라진다. 그러므로 '모든 DBMS에서 공격 기법이 동일하다'는 설명은 오답이다. 공격이 주로 발생하는 위치는 로그인 페이지나 검색창 같은 입력창이다.
웹 보안의 흐름을 이해하는 데 빠지지 않는 이름이 OWASP다. 오픈소스 웹 애플리케이션 보안 프로젝트(Open Web Application Security Project)의 약자로, 웹을 통한 정보 유출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하며 웹 보안 표준과 가이드라인을 만드는 데 주력한다. 보안 메커니즘 용어로는 부인 방지(Non-repudiation)가 자주 나온다. 데이터를 송수신한 자가 송수신 사실을 부인하지 못하도록 전자 서명이나 로그 기록 같은 증거를 제공하는 기능이다. 인증이 '누구인가'를 확인하는 것이라면, 부인 방지는 '행위 자체를 증명'하는 것이라 구분된다.
예제
로그인 화면에 사용자 이름을 넣는 칸이 있다고 하자. 이 칸에 검증 없이 SQL 조각을 넣으면 데이터베이스가 그대로 명령으로 받아들이는 것이 SQL 삽입이다. 개발자가 입력값을 걸러 내지 않았기 때문에 일어나는 일이고, 그래서 이 취약점의 대책도 외부 입력 검증에서 출발한다.
전자 입찰 시스템에서 입찰 참여자가 나중에 "내가 그 데이터를 보낸 적 없다"고 주장하는 상황을 막으려면 부인 방지가 필요하다. 송수신 사실을 입증할 전자 서명이나 로그 기록을 남겨 두면, 당사자가 행위를 부정할 근거가 사라진다.
대표 기출 3문항
SQL Injection 공격과 관련한 설명으로 틀린것은?
SQL Injection은 임의로 작성한 SQL 구문을 애플리케이션에 삽입하는 공격방식이다.
SQL Injection 취약점이 발생하는 곳은 주로웹 애플리케이션과 데이터베이스가 연동되는 부분이다.
DBMS의 종류와 관계없이 SQL Injection공격 기법은 모두 동일하다.
로그인과 같이 웹에서 사용자의 입력 값을 받아 데이터베이스 SQL문으로 데이터를요청하는 경우 SQL Injection을 수행할 수 있다.
정답과 해설 보기
정답 ③ · 웹 애플리케이션과 데이터베이스 간의 입력값 검증 부실로 발생하는 SQL 인젝션 공격의 특성을 묻는 문제이다. SQL 인젝션 공격은 공격 대상이 되는 DBMS(오라클, MySQL, MS-SQL 등)의 종류에 따라 지원하는 내장 함수, 주석 기호, 시스템 테이블 구조 등이 다르기 때문에 공격 기법과 구문이 달라진다.
SQL Injection 공격 기법은 DBMS 종류(Oracle, MySQL 등)에 따라 사용 가능한 함수나 구문이 다르므로 동일하지 않습니다.
오픈소스 웹 애플리케이션 보안 프로젝트로서 주로 웹을 통한 정보 유출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하는 곳은?
WWW
OWASP
WBSEC
ITU
정답과 해설 보기
정답 ② · 웹 애플리케이션 보안 취약점을 연구하는 오픈소스 프로젝트의 명칭을 묻는 문제이다. OWASP는 Open Web Application Security Project의 약자로, 웹을 통한 정보 유출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하는 국제 오픈소스 프로젝트이다.
웹 애플리케이션 보안 취약점 연구를 주도하는 오픈소스 프로젝트는 OWASP이다.
Secure 코딩에서 입력 데이터의 보안 약점과 관련한 설명으로 틀린 것은?
SQL 삽입 : 사용자의 입력 값 등 외부 입력 값이 SQL 쿼리에 삽입되어 공격
크로스사이트 스크립트 : 검증되지 않은 외부 입력 값에 의해 브라우저에서 악의적인 코드가 실행
운영체제 명령어 삽입 : 운영체제 명령어 파라미터 입력 값이 적절한 사전검증을 거치지 않고 사용되어 공격자가 운영체제 명령어를 조작
자원 삽입 : 사용자가 내부 입력 값을 통해 시스템 내에 사용이 불가능한 자원을 지속적으로 입력함으로써 시스템에 과부하 발생
정답과 해설 보기
정답 ④ · 이 문제는 입력 데이터 검증 관련 보안 약점 설명 중 틀린 것을 찾는 문제이다. 자원 삽입은 시스템 자원을 임의로 사용하는 공격으로, 외부 입력 값으로 시스템이 허용하지 않은 자원을 지정해 발생하는 취약점이지 설명처럼 내부 입력 값으로 시스템에 과부하를 일으키는 것이 아니다.
자원 삽입(Resource Exhaustion)은 외부 입력이 아닌 시스템 자원을 고갈시키는 공격 유형이며, 설명이 부정확합니다.