입력 데이터 검증 및 표현
입력 데이터 검증 및 표현의 개념
- 프로그램에 입력되는 데이터로 인해 여러 가지 보안 약점이 발생할 수 있음
- 이러한 보안 약점을 방지하기 위한 보안 점검 항목들임
보안 약점의 종류
- 운영체제 명령어 삽입, 위험한 형식 파일 업로드, 신뢰되지 않는 URL 주소로 자동 접속 연결됨
SQL Injection | - 검증되지 않은 외부 입력값이 SQL 쿼리문에 삽입되어 공격할 수 있는 보안 약점임 - DB에 컴파일된 SQL 쿼리문을 전달함으로써 방지할 수 있음 - SQL Injection 취약점이 발생하는 곳은 주로 웹 애플리케이션과 데이터베이스가 연동되는 부분임 - 로그인과 같이 웹에서 사용자의 입력값을 받아 데이터베이스 SQL문으로 데이터를 요청하는 경우 SQL Injection을 수행할 수 있음 |
경로 조작 및 자원 삽입 | 검증되지 않은 외부 입력값이 시스템 자원 접근 경로를 조작하거나 시스템 자원에 삽입되어 공격할 수 있는 보안 약점 |
크로스 사이트 스크립트 (XSS, Cross Site Scripting) |
- 게시판의 글에 원본과 함께 악성 코드를 삽입하여 글을 읽으면 악성코드가 실행되도록 하여 클라이언트의 정보를 유출하는 공격 방법 - 웹페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도함으로써, 정보 유출 등의 공격을 유발할 수 있는 취약점임 - 외부 입력값에 스크립트가 삽입되지 못하도록 문자열 치환 함수를 사용하거나 JSTL이나 크로스사이트 스크립트 방지 라이브러리를 사용함으로써 방지할 수 있음 |
XQuery 삽입 | - XQuery를 사용하여 XML 데이터에 대한 동적 쿼리 생성 시 검증되지 않은 외부 입력값이 쿼리문 구조 변경에 사용될 수 있는 보안 약점 - XQuery에 사용되는 외부 입력값에 대하여 특수문자 및 쿼리 예약어 필터링을 통해 방지할 수 있음 |
XPath 삽입 | 검증되지 않은 외부 입력값으로 XPath 쿼리문을 생성하여 쿼리문의 의미나 구조가 변경될 수 있는 보안 약점 |
LDAP 삽입 | - 외부 입력값잉 올바르게 처리되지 못하여 LDAP(Lightweight Directory Access Protocol) 쿼리문의 구성 변경에 사용될 수 있는 보안 약점 - DN(Distinguished Name)과 필터에 사용되는 외부 입력값에 특수문자를 제거함으로써 방지할 수 있음 |
자원 삽입 | 외부 입력값을 검증하지 않고 시스템 자원에 대한 식별자로 사용하는 경우 공격자는 입력값 조작을 통해 시스템이 보호하는 자원에 임의로 접근하거나 수정할 수 있음 |
보안 기능
보안 기능의 개념
- 인증, 접근 제어, 기밀성, 암호화, 권한 관리 등의 보안 기능을 부적절하게 구현하여 여러 가지 보안 약점이 발생할 수 있음
보안 약점의 종류
적절한 인증 없는 중요 기능 허용
- 적절한 인증 없이 중요 정보를 읽거나 변경할 때 발생하는 보안 약점
- 인증 과정 없이 서버에 접근하지 못하도록하고 중요 정보는 재인증을 거치도록 함으로써 방지할 수 있음
부적절한 인가
- 접근 가능한 실행 경로에 대한 접근 제어 검사를 완전하게 하지 않아 정보가 유출되는 보안 약점
- 노출되는 실행 경로를 최소화하고 사용자의 권한에 따라 접근 제어 리스트(Access Control List)를 관리함으로써 방지할 수 있음
중요한 자원에 대한 잘못된 권한 설정
- 보안 또는 설정 파일과 같이 중요한 자원에 대해 읽기나 쓰기 권한을 잘못 설정하여 발생하는 보안 약점
- 중요한 자원은 관리자만 읽고 쓰기가 가능하게 하고 사용자의 권한을 검사함으로써 방지할 수 있음
취약한 암호화 알고리즘 사용
- 취약하거나 위험한 암호화 알고리즘을 사용하여 패스워드가 유출되는 보안 약점
- 잘 알려진 안전한 암호화 알고리즘을 사용함으로써 방지할 수 있음
중요 정보 평문 저장
- 개인정보, 금융정보, 패스워드 등의 중요 정보를 암호화하지 않고 평문으로 저장하여 중요 정보가 노출되는 보안 약점
- 중요 정보를 암호화하여 저장하고 중요 정보 접근 시 사용자의 권한을 검사함으로써 방지할 수 있음
중요 정보 평문 전송
- 중요 정보를 암호화하지 않고 평문으로 전송하여 중요 정보가 노출되는 보안 약점
- 중요 정보를 암호화하여 전송하거나 보안 채널을 사용함으로써 방지할 수 있음
하드 코드된 비밀번호
- 프로그램 코드 내에 데이터를 직접 입력하는 하드 코드된 패스워드를 포함시켜 사용하여 관리자의 정보가 노출되는 보안 약점
- 패스워드는 암호화하여 별도의 파일에 저장하여 사용하고 디폴트 패스워드 대신 사용자 입력 패스워드를 사용함으로써 방지할 수 있음
충분하지 않은 키 길이 사용
- 길이가 짧은 키로 암호화 및 복호화를 함으로써 짧은 시간 안에 키를 찾아낼 수 있는 보안 약점
- RSA 알고리즘을 2,048비트 이상, 대칭 암호화 알고리즘을 128비트 이상의 키를 사용함으로써 방지할 수 있음
적절하지 않은 난수값 사용
- 적절하지 않은 난수값을 사용하여 난수가 예측 가능해질 수 있는 보안 약점
- 난 수 값을 결정하는 현재 시각 기반 등으로 시드값을 매번 변경함으로써 방지할 수 있음
728x90
'정보처리기사 > 정보 시스템 구축 관리' 카테고리의 다른 글
암호화 알고리즘 (1) | 2023.08.19 |
---|---|
시큐어 코딩 가이드 2 (0) | 2023.08.19 |
소프트웨어 개발 보안 구출 및 방법론의 종류 (0) | 2023.08.19 |
소프트웨어 개발 보안 (0) | 2023.08.19 |
데이터베이스 관련 기술 용어 (0) | 2023.08.19 |