목록전체 글 (84)
IgnatiusHeo
작성일: 230706 ※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다. 정리 내용: 소프트웨어 보안약점 진단 가이드(476~480p) 구분 - 캡슐화 설계단계 개요 디버깅 목적으로 삽입된 코드는 개발이 완료되면 제거해야 한다. 디버그 코드는 설정 등의 민감한 정보를 담거나 시스템을 제어하게 허용하는 부분을 담고 있을 수 있다. 만일, 남겨진 채로 배포될 경우, 공격자가 식별 과정을 우회하거나 의도하지 않은 정보와 제어 정보가 노출될 수 있다. 진단 세부사항 (설계단계) 보안대책 (구현단계) 소프트웨어 배포 전, 반드시 디버그 코드를 확인 및 삭제한다. 일반적으로 Java 개발자의 경우 웹 응용 프로그램을 제작할 때 ..
작성일: 230706 ※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다. 정리 내용: 소프트웨어 보안약점 진단 가이드(469~475p) 구분 - 세션통제, 캡슐화 설계단계 - 세션통제 https://cryptocurrencyclub.tistory.com/109 개요 다중 스레드 환경에서는 싱글톤(Singleton) 객체 필드에 경쟁조건(Race Condition) 발생할 수 있다. 따라서, 다중 스레드 환경인 Java의 서블릿(Servlet) 등에서는 정보를 저장하는 멤버변수가 포함되지 않도록 하여, 서로 다른 세션에서 데이터를 공유하지 않도록 해야 한다. * 싱글톤 패턴 : 하나의 프로그램 내에서 하나의 인스턴스만을..
작성일: 230706 ※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다. 정리 내용: 소프트웨어 보안약점 진단 가이드(462~468p) 구분 - 코드오류 설계단계 개요 직렬화(Serialization)는 프로그램에서 특정 클래스의 현재 인스턴스 상태를 다른 서버로 전달하기 위해 클래스의 인스턴스 정보를 바이트 스트림으로 복사하는 작업으로, 메모리 상에서 실행되고 있는 객체의 상태를 그대로 복제하여 파일로 저장하거나 수신측에 전달하게 된다. 역직렬화(Deserialization)는 반대 연산으로 바이너리 파일이나 바이트 스트림으로부터 객체 구조로 복원하게 된다. 이 때, 송신자가 네트워크를 이용하여 직렬화된 정보를 수신..
작성일: 230704 ※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다. 정리 내용: 소프트웨어 보안약점 진단 가이드(459~461p) 구분 - 코드오류 설계단계 개요 C 언어의 경우 스택 메모리에 저장되는 지역변수는 생성될 때 자동으로 초기화되지 않는다. 초기화 되지 않은 변수를 사용하게 될 경우 임의 값을 사용하게 되어 의도하지 않은 결과를 출력하거나 예상치 못한 동작을 수행할 수 있다. 진단 세부사항 (설계단계) 보안대책 (구현단계) 초기화되지 않은 스택 메모리 영역의 변수는 임의값이라 생각해서 대수롭지 않게 생각할 수 있으나 사실은 이전 함수에서 사용되었던 내용을 포함하고 있다. 공격자는 이러한 약점을 사용하여..
작성일: 230706 ※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다. 정리 내용: 소프트웨어 보안약점 진단 가이드(454~458p) 구분 - 코드오류 설계단계 개요 C언어에서 동적 메모리 관리는 보안 취약점을 유발하는 대표적인 프로그램 결함의 원인이다. 해제한 메모리를 참조하게 되면 예상치 못한 값 또는 코드를 실행하게 되어 의도하지 않은 결과가 발생하게 된다. 진단 세부사항 (설계단계) 보안대책 (구현단계) 동적으로 할당된 메모리를 해제한 후 그 메모리를 참조하고 있던 포인터를 참조 추적이나 형 변환, 수식에서의 피연산자 등으로 사용하여 해제된 메모리에 접근하도록 해서는 안된다. 또한, 메모리 해제 후, 포인터에..
작성일: 230704 ※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다. 정리 내용: 소프트웨어 보안약점 진단 가이드(445~453p) 구분 - 코드오류 설계단계 개요 프로그램의 자원, 예를 들면 열린 파일디스크립터(Open File Descriptor), 힙 메모리(Heap Memory), 소켓(Socket) 등은 유한한 자원이다. 이러한 자원을 할당받아 사용한 후, 더 이상 사용하지 않는 경우에는 적절히 반환하여야 하는데, 프로그램 오류 또는 에러로 사용이 끝난 자원을 반환하지 못하는 경우이다. 진단 세부사항 (설계단계) 보안대책 (구현단계) 자원을 획득하여 사용한 다음에는 반드시 자원을 해제하여 반환한다. 진단방..

작성일: 230706 ※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다. 정리 내용: 소프트웨어 보안약점 진단 가이드(433~444p) 구분 - 입력데이터 검증 및 표현 설계단계 - 보안기능 입력값 검증 https://cryptocurrencyclub.tistory.com/97 개요 널 포인터(Null Pointer) 역참조는 ‘일반적으로 그 객체가 널(Null)이 될 수 없다’라고 하는 가정을 위반했을 때 발생한다. 공격자가 의도적으로 널 포인터 역참조를 발생시키는 경우, 그 결과 발생하는 예외 상황을 이용하여 추후 공격을 계획하는 데 사용될 수 있다. 진단 세부사항 (설계단계) ① 사용자의 역할, 권한을 결정하는 ..
작성일: 230706 ※ 본 게시글은 학습 목적으로 행정안전부·KISA의 소프트웨어 보안약점 진단 가이드, 소프트웨어 개발보안 가이드를 참고하여 작성하였습니다. 정리 내용: 소프트웨어 보안약점 진단 가이드(429~432p) 구분 - 에러처리 설계단계 개요 프로그램 수행 중에 함수의 결과값에 대한 적절한 처리 또는 예외상황에 대한 조건을 적절하게 검사하지 않을 경우, 예기치 않은 문제를 야기할 수 있다. 진단 세부사항 (설계단계) 보안대책 (구현단계) 값을 반환하는 모든 함수의 결과값을 검사하여, 그 값이 의도했던 값인지 검사하고, 예외 처리를 사용하는 경우에 광범위한 예외 처리 대신 구체적인 예외 처리를 수행한다. 진단방법 (구현단계) 함수 또는 메소드에 대하여 반환값을 검사하고 예외를 발생시키는 경우 ..