[정보처리기사][소프트웨어 보안] 입력데이터검증 / 보안기능 / 코드오류 / 캡슐화

컴퓨터/정보처리기사

728x90
반응형

 

입력 데이터 검증 및 표현

입력 데이터로 인해 발생하는 문제들과 이를 예방하기 위한 점검 항목들

  • SQL 삽입 ( SQL Injection )
    • 웹에서 SQL을 의도적으로 삽입하여 DB 데이터 유출 및 변조, 관리자 인증을 우회하는 행위
    • 동적 쿼리에 사용되는 입력 어를 필터링되도록  설정하는 등으로 방지
  • 경로 조작 및 자원 삽입
    • 데이터 입출력 경로 조작으로 서버 자원을 수정 삭제하는 행위
    • 사용자 입력값을 식별자로 사용해 경로 순회 공격을 막는 필터를 사용하여 방지
  • 크로스사이트 스크립팅 (XSS)
    • 웹페이지에 악의적인 스크립트를 삽입하여 방문자들을 공격하는 행위
    • 스크립트에 사용하는 문자를 제한 또는 치환함으로 방지
  • 운영체제 명령어 삽입
    • 외부 입력값을 통해 시스템 명령어 실행을 유도하여 장애를 유발하는 행위
    • 인터페이스를 통해 시스템 명령어가 전달되지 않도록 방지
  • 위험한 형식 파일 업로드
    • 악의적인 명령어가 포함된 스크립트 파일을 업로드해서 시스템을 공격하는 행위
    • 파일 확장자 제한, 파일 서버의 분리, 실행 속성 제거등으 방법으로 방지
  • 신뢰되지 않는 URL 주로 소 자동접속 연결
    • 입력값으로 URL을 받는 경우 이를 조작해 방문자를 피싱 사이트로 유도하는 행위
    • 연결되는 외부 사이트의 주소를 화이트 리스트로 관리하므로 방지
  • 메모리 버퍼 오버플로
    • 연속된 메모리 공간을 사용하는 프로그램에서 의도적으로 할당된 메모리 넘어선 위치의 자료를 읽거나 쓰려고 하는 행위
    • 적절한 메모리 버퍼의 크기 설정 및 설정된 범위 내에서 올바르게 읽거나 쓸 수 있게 함으로 방지

보안 기능

소프트웨어 개발에서 인증, 접근제어, 기밀성, 암호화등을 올바르게 구현하기 위한 점검 항목

  • 적절한 인증 없이 중요기능 허용
    • 적절한 인증을 통해 중요기능 및 정보에 접근할 수 있어야 한다.
    • 중요 기능을 제공하는 서비스는 재인증 등의 기능을 수행하도록 하여 강화할 수 있다.
  • 부적절한 인가
    • 접근제어 기능이 없는 실행 경로를 통해 권한을 탈취하는 행위
    • 모든 실행 경로에 대해 접근제어 검사를 수행하고, 사용자에게 필요한 범위에만 접근 권한을 부여해야 된다.
  • 중요한 자원에 대한 잘못된 권한 설정
    • 권한 설정이 잘못되어 중요한 자원에 임의로 접근할 수 있는 행위
    • 중요한 자원에 대한 접근 여부를 검사함으로써 방지
  • 취약한 암호화 알고리즘 사용
    • 취약한 암호화 알고리즘으로 암호화가 해독되어 중요정보가 유출되는 행위
    • 안정성을 확인한 암호모듈을 이용
  • 중요정보 평문 저장 및 전송
    • 정보 전송과정에서 의도적으로 데이터를 취득하는 행위
    • 암호화 과정을 통한 전송과 보안 채널을 이용하여 방지
  • 하드코드된 암호화 키
    • 하드코드된 암호화 키는 역계산, 무차별 대입 공격에 의해 탈취될 가능성이 높다.
    • 암호화 키 생성 모듈 또는 보안이 보장된 외부 공간을 이용함으로 방지

코드오류

개발자들이 코딩 중 실수하기 쉬운 보안 점검 항목들

  • Null 포인터 역참조
    • Null이 들어간 포인터에는 값을 저장할 수 없다. 
    • 포인터를 이용할 시 Null값을 갖고 있는지 확인하여 방지
  • 부적절한 자원 해제
    • 자원을 해제하지 않았을 때 보안에 취약해질 수 있다.
    • 자원 코드 반환확인 및 오류로 인해 비정상 종료를 할 때도 자원을 해제할 수 있도록 하여 방지
  • 해제된 자원 자용
    • 이미 반환한 메모리를 참조하는 경우 문제가 될 수 있다.
    • 반환된 메모리에 접근할 수 없도록 포인터를 초기화하여 방지
  • 초기화되지 않은 변수 사용
    • 변수 선언 후 값이 부여되지 않은 값을 사용할 때 발생하는 문제
    • 변수 선언 시 할당된 메모리를 초기화해서 방지

캡슐화

캡슐화 과정에서 발생할 수 있는 보안 점검 항목들

  • 잘못된 세션에 의한 정보 노출
    • 다중 스레드 환경에서 멤버 변수에 정보를 저장할 때 발생하는 보안 약점
    • 지역 변수를 활용하여 변수의 범위를 제한함으로 방지
  • 제거되지 않고 남은 디버그 코드
    • 개발 중에 디버그를 위해 남겨둔 코드로 인한 보안 약점
    • 소프트웨어 배포전 남아있는 디버그 코드를 삭제함으로 방지
  • 시스템 데이터 정보 노출
    • 시스템의 내부 정보를 시스템 메시지등을 통해 외부로 출력하도록 코딩했을 때 생기는 보안 약점
    • 노출되는 메시지에는 최소한의 정보를 제공함으로 방지
  • Public 메서드로부터 반환된 Private 배열
    • 접근이 한정된 Private 배열데이터를 한정된 곳 외에서 사용할 수 있는 보안 약점
    • Private 배열 데이터를 별도의 메서드를 통해 조작할 수 있도록 하여 방지
  • Private 배열에 Public 데이터 할당

 

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :