소프트웨어 보안 취약점 - 해킹 등 실제 침해사고에 이용될 수 있는 외부에 노출된 보안약점, CVE (Common Vulnerability Exposure)
모의 해킹 - 작동하는 시스템을 대상으로 수행하는 동적 검증을 통해 보안 취약점을 확인하는 보안품질 관리활동
소프트웨어 보안 약점 - 보안 취약점의 근본 원인이 되는 소프트웨어의 결함이나 버그, CWE (Common Weakness Exposure)
입력 데이터 검증 및 표현 - DBMS 조회 및 결과 검증, 시스템 자원 접근 및 명령어 수행 입력값 검증, 웹 서비스 요청 및 결과 검증, 웹 기반 중요 기능 수행 요청 유효값 검증, HTTP 프로토콜 유효성 검증, 허용된 범위 내 메모리 접근, 보안 기능 동작에 사용되는 입력값 검증, 업/다운로드 파일 검증
보안 기능 - 인증 대상 및 방식, 인증 수행 제한, 비밀번호 관리, 중요 자원 접근통제, 암호키 관리, 암호 연산, 중요 정보 저장, 중요 정보 전송
에러 처리 및 세션 통제 - 예외 처리, 세션 통제
입력 데이터 검증 및 표현
- SQL Injection : 입력 변수 정적 바인딩
- 경로 조작 및 자원 삽입 : 입력값 검증, 경로 순회 특수문자 제거
- XSS : 특수문자 치환, HTML 인코딩 -> 스크립트 실행 차단
- 운영체제 명령어 삽입 : 미리 명령어 목록 생성 후 선택 유도
- 신뢰되지 않은 URL 자동 접속 연결 : 허용목록 지정, 외부 URL 확인
- CSRF : POST 사용, 토큰 사용, 캡챠 및 사용자 재인증
- 정수형 오버플로우 : 정수타입 범위 확인, 결과값 범위 확인
- 보안기능 결정에 사용되는 부적절한 입력값 : 중요 정보 서버 저장, 서버 수행, 외부 입력값에 의존하지 않는 구조
- 메모리 버퍼 오버플로우 : 적절한 크기의 버퍼 크기 설정, fgets(), strcpy_s() 사용
보안 기능
- 인증 및 비밀번호 관련 : 인증, 재인증, 잠금, 추가 인증, 비밀번호 변경 관리 기준
- 권한관리 관련 : 사용자 권한 확인, 최소 권한 부여
- 암호연산 관련 : AES, ARIA.. 사용, 최소 128비트 이상 키 사용, 암호화키 별도 공간, 암호화 SEED 적용 가능한 함수 사용, 솔트 및 해시 사용
- 중요정보 처리 관련 : 중요 정보 암호화, 전송 시 암호화 과정, SSL 인증서 기반 암호화, 영속 쿠키에 중요 정보 저장 X
- 기타 : 주석에 중요 정보 입력 X, 별도 파일에 암호화 저장, 암호화로 변조 방지, 무결성 검사
시간 및 상태
- 경쟁조건 : 동일 자원에 대한 검사 시점과 사용 시점이 달리 동기화 오류, 교착상태 유발, 한번에 하나만 처리하도록 설정
- 종료되지 않은 반복문, 재귀함수 : 무한 루프에 빠져 자원 고갈, 정상적인 서비스 제공 X, 종료 조건 정의, 흐름 검정
에러 처리
- 오류 메시지를 통한 정보 노출 : 예외 상황은 내부적으로 처리, 사용자에게는 민감정보를 포함한 오류 정보 제공 X, 미리 정의된 메시지 전달
- 오류 상황 대응 부재 : 예외 처리를 구현하지 않을 경우, if, switch, try-catch 구문을 사용해 예외 처리 구현
- 부적절한 예외 처리 : 예외 조건 검사 X, 결과값 적정성 검증, 구체적인 예외처리
코드 오류
- NULL 포인터 역참조 : 의도적으로 객체가 NULL인 상황 유발, 레퍼런스 참조 전 NULL인지 검사
- 부적절한 자원 해제 : 유한한 자원을 할당 받아 사용 후 오류나 에러로 사용이 끝난 자원을 반환하지 못할 경우, 자원 사용 후에는 반드시 반환
- 해제된 자원 사용 : 해제한 메모리 사용으로 예상치 못한 값, 코드 실행, 해제 후에는 다시 접근하지 못하도록 포인터에 NULL값을 저장해 사용 X
- 초기화되지 않은 변수 사용 : 지역 변수 초기화 없이 임의값으로 사용되는 경우, 사용 전 초기화
캡슐화
- 잘못된 세션에 의한 정보 노출 : 싱글턴 객체에 포함되는 멤버 변수가 전역범위로 공유, Java 서블릿은 서로 다른 세션 간 데이터 공유, 싱글턴 패턴 사용 시 변수 적용 범위 주의, Java, HttpServlet의 하위 클래스에서 멤버 변수 사용 X
- 제거되지 않고 남은 디버그 코드 : 남아 있는 경우, 민감정보, 제어정보 노출, 반드시 디버그 코드 확인 및 삭제
- 시스템 데이터 정보 노출 : 내부 데이터 노출, 예외상황 시 내부 정보 화면 출력 X
- Public 메서드에서 반환된 Private 배열 : 배열 주소값이 외부에 공개되어 배열 수정 가능, 반환하지 않도록 하고, 필요시 복제본 반환, 별도의 Public 메서드 선언
- Private 배열에 Public 데이터 할당 : Private 배열을 외부에서 접근 가능, Public 데이터가 Private 배열에 저장 X
API 오용
- DNS Lookup에 의존한 보안 결정 : 도메인명에 의존 시 DNS 변호할 경우 보안결정 우회 가능성 증가, DNS Lokkup 도메인명 대신 IP 주소 사용
- 취약한 API 사용 : 안전한 함수 사용
모바일 앱 주요 보안 요구사항
- 탈옥 및 루팅 기기 대응
- 앱 무결성 검증
- 앱 난독화 적용
- ShareUseID 설정 방지
- SSL-Pinning
- 앱에 대한 외부로부터의 접근 방지
- 중요 정보 노출 방지
'정보처리기사' 카테고리의 다른 글
[실기] 제 11과목 - 응용 SW 기초 기술 활용 요점 정리 - 1 (1) | 2023.05.08 |
---|---|
[실기] 제 10과목 - 프로그래밍 언어 활용 요점 정리 (0) | 2023.05.07 |
[실기] 제 8과목 - SQL 응용 요점 정리 (0) | 2023.05.04 |
[실기] 제 7과목 - 어플리케이션 테스트 관리 요점 정리 (0) | 2023.05.04 |
[실기] 제 5, 6과목 - 화면 설계 요점 정리 (0) | 2023.05.04 |