정보보안 취약점과 시큐어코딩 방법

bacccine·2022년 5월 13일
0

정보보안

목록 보기
1/2

보안 취약점과 Rule

1. 입력 데이터 검증 및 표현

(1) SQL 삽입
정의: DB와 연동된 웹 애플리케이션에서 입력된 데이터에 대한 유효성 검증을 하지 않은 경우 공격자가 입력 form 및
URL 란에 SQL문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 약점

시큐어코딩 방법: 인자를 받는 preparedStatement 객체를 상수 String으로 생성, 인자 부분을 set~메소드로 설정
SQL 쿼리에 사용되는 문자열에 대해 유효성 검사를 실시하는 프로세스를 구현
Dynamic SQL 구문 사용 금지, 파라미터에 문자열 검사 필수 적용
에러 메시지는 많은 정보를 제공하므로 오류처리로 정보 노출 최소화
에러 메시지 및 에러코드가 노출되지 않도록 예외처리
데이터 접근의 추상화 제공을 위해 Stored Procedure 사용
입력값 검증 프로세스는 Server 페이지로 구현

사용자 입력 값 지정 금지 특수문자: ' 문자 데이터 구분기호 ; 쿼리 구분 기호 -- # /**/ 주석 구분 기호

(2) 자원 삽입
정의: 외부 입력값을 검증하지 않고 시스템 자원에 대한 식별자로 사용하는 경우 입력값 조작을 통해 시스템이 보호하는
자원에 임의로 접근하거나 수정할 수 있고 잘못된 입력값으로 인해 자원 사이 충돌이 발생할 수 있다

(3) 크로스사이트 스크립트
정의: 외부 입력이 동적 웹 페이지 생성에 사용될 경우 전송된 동적 웹 페이지를 열람하는 접속자의 권한으로 부적절한
스크립트가 수행되어 정보 유출 등의 공격을 유발하는 것

시큐어코딩 방법: replaceAll() 메소드를 사용하여 html 스크립트 생성에 사용되는 문자열을 변경

(4) 운영체제 명령어 삽입
정의: 적절한 검증절차를 수행하지 않은 사용자 입력 값이 운영체제 명령어의 일부 또는 전부로 구성되어 실행되는 것

시큐어코딩 방법: 입력 값에 대한 파라미터 데이터의 & | ; ` 문자에 대한 필터링 처리

(5) 위험한 형식 파일 업로드
정의: 서버 측에서 실행 가능한 스크립트 파일이 업로드 가능하고, 공격자가 웹을 통해 직접 실행 가능한 경우,
공격자가 해당 파일을 통해 시스템 내부 명령어를 실행 및 제어하는 것

시큐어코딩 방법: 업로드되는 파일의 타입을 제한하고, 외부에서 직접 접근 가능하지 않은 경로에 파일을 저장

2. 보안기능

(1) 적절한 인증 없는 중요 기능 허용
정의: 적절한 인증과정 없이 중요 정보를 열람 또는 변경 시 발생하는 보안 약점

대응 방법: 중요 정보가 있는 페이지는 재인증이 적용되도록 설계
안전 확인한 라이브러리나 프레임워크 사용
OpenSSL이나 ESAPI 보안 기능 사용
(2) 부적절한 인가
정의: SW가 모든 가능한 실행 경로에 대해 접근 제어를 검사하지 않거나 불완전하게 검사하는 경우, 공격자가 접근 가능한
실행 경로를 통해 정보를 유출하는 것

(3) 취약한 암호화 알고리즘 사용
예: RC2,RC4,RC5,RC6,MD4,MD5,SHA1,DES 알고리즘

3. 시간 및 상태

정의: 프로그램의 동작 과정에서 시간적 개념을 포함한 개념(프로세스 or 쓰레드)이나 시스템 상태 정보(자원잠금, 세션)
관련 취약점
예: 데드락, 자원에 대한 경쟁조건, 세션 고착 etc.

4. 에러처리

정상적인 에러: 사전 정의된 예외사항이 특정 조건에서 발생하는 에러
비정상적인 에러: 사전 정의되지 않은 상황에서 발생하는 에러
예방법: 정상, 비정상적인 에러 발생에 대비한 안전한 에러 처리 루틴 사전 정의 및 프로그래밍

(1) 오류 메시지를 통한 정보 노출
예외 발생 시 예외 이름이나 스택트레이스를 출력하는 경우 프로그램의 내부 구조를 파악 가능

대응 방법: 오류 메시지는 최소한의 정보만 노출, 민감 정보를 포함하는 오류를 출력하지 않음
미리 정의된 페이지를 제공

5. 코드 오류

프로그램 코드가 너무 복잡할 경우 다른 시스템에 이식하기 어려울 뿐만 아니라 프로그램에 안전성 위협 취약점들이 코드
안에 내재될 수 있다

6. 캡슐화

SW가 중요 데이터나 기능성을 불충분하게 캡슐화하는 경우 인가된 데이터와 인가되지 않은 데이터를 구분하지 못하게 되어
허용되지 않는 사용자들 간 데이터 누출 가능

7. API 오용

API 오용 및 취약점이 알려진 API의 사용은 개발 효율성 및 유지보수성의 저하 및 보안 상의 위협요인 가능

0개의 댓글