개발(22)
-
단위모듈 테스트
👍 단위모듈이란? 단위모듈은 소프트웨어 구현에 필요한 여러 동작 중 "한" 가지 동작을 수행하는 기능을 모듈로 구현한 조각이다. 즉 n개의 단위모듈이 합쳐지면 n개의 기능을 구현할 수 있다. 단위모듈의 구성 요소로는 처리문, 명령문, 데이터 구조 등이 있고, 각 단위모듈은 독립적인 컴파일이 가능하며 다른 모듈에 호출되거나 삽입되기도 한다. 👊 단위모듈의 구현 단위모듈 구현이란, 비즈니스 컴포넌트, 내외부 인터페이스 모듈, 데이터베이스 접근 모듈 등 통합구현이 필요한 단위 컴포넌트를 구현하는 것을 말한다. 구현 시에는 응집도는 높이고 결합도는 낮춰야 하며, 공통모듈을 먼저 구현해 재사용성을 높이며, 항상 예외처리 로직을 포함해야 한다. 단위모듈을 구현하기 위해서는 단위 기능 명세서를 작성하고 입출력기능과 ..
2020.07.22 -
🔐 소프트웨어 개발 보안 구축 #10 - 시간 및 상태
👍 시간 및 상태란? 시간 및 상태는 동시 수행을 지원하는 병렬처리 시스템이나 다수의 프로세스가 동작하는 환경에서, 시간과 실행 상태를 관리하여 시스템이 원활하게 동작되도록 하기 위한 보안검증항목을 말한다. 다음은 시간 및 상태의 점검 미비로 발생할 수 있는 보안약점이다. TOCTOU 경쟁조건 (Time Of Check, Time Of Use) ❗️ 검사시점과 사용시점의 격차를 고려하지 않고 코딩한다면, 사용이 가능했던 자원이 사용할 수 없게 되거나, 프로세스가 가진 자원 정보가 실제 자원 상태와 일치하지 않는 동기화 오류, 교착상태 등이 발생하는 현상 ✅ 코드 내에 동기화 구문을 사용하여 해당 자원에는 한 번에 하나의 프로세스만 접근 가능하도록 구성함으로써 방지. 단, 동기화 구문은 성능감소를 동반하기..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #9 - API 오용
👍 API 오용이란? API : 프로그래머가 라이브러리가 제공하는 여러 함수를 이용하여 프로그램을 작성할 때, 해당 함수의 내부 구조는 알 필요없이, 단순히 API 명세서에 정의된 값을 입력하면 반환되는 결과를 이용할 수 있도록 만든 매개체 API 오용이란, 소프트웨어 "구현" 단계에서 API를 잘못 사용하거나 보안에 취약한 API를 사용하는 것을 말하며, 이를 방지하기 위한 보안검증항목 역시 같은 이름으로 사용한다. 다음은 API 오용으로 인한 보안약점이다. DNS Lookup에 의존한 보안 결정 ❗️ 도메인명에 의존하여 인증이나 접근통제 등 보안결정을 내린다면, 공격자는 DNS 엔트리를 속여 동일한 도메인에 속한 서버인 것처럼 위장하거나, 사용자와 서버 간 네트워크 트래픽을 유도하여 악성 사이트를 경..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #8 - 캡슐화
👍 캡슐화란? 정보은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안점검항목 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미한다. 다음은 잘못된 캡슐화로 인해 발생할 수 있는 보안약점이다. 잘못된 세션에 의한 정보 노출 *분석/설계단계에서는 세션통제, 구현단계에서는 캡슐화에 해당 ❗️ 다중스레드 환경에서 멤버변수에 정보를 저장할 때 발생함. ❗️ 싱글톤패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발생하거나 멤버변수의 정보가 노출될 수 있음. ✅ 멤버변수(클래스가 생성되면 계속 메모리에 적재)보다 지역변수(함수의 종료를 함께 메모리에서 해제가능)활용하여 변수의 범위를 제한함으로써 방지 제거되지 않고 남은 디버그 ..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #7 - 코드오류
👍 코드오류란? 소프트웨어 "구현"단계에서 개발자들이 코딩 중 실수하기 쉬운 형(Type)변환, 자원반환 등의 오류를 예방하기 위한 보안점검 항목 다음은 코드오류로 발생할 수 있는 보안약점이다. 👊 널포인터(포인터에 Null이 저장되어 어떠한 곳도 가라키지 못하는 상태의 요소) 역참조 보통 많은 라이브러리 함수들은 오류가 발생할 경우 Null을 반환하는데, 이를 포인터로 참조하는 경우 발생하는 오류다. 대부분의 운영체제에서 널포인터는 메모리의 첫주소를 가리키는데, 이는 소프트웨어의 비정상적인 종료를 유발할 수 있다. 공격자는 널포인터 역참조로 발생하는 예외상황을 기억한 후, 추후에 이를 악용할 수 있다. 따라서 널이 될 수 있는 포인터를 이용하기 전에, 해당 포인터가 널을 갖고 있는지 검사함으로서 방지할..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #5 - 세션통제
👍 세션통제란? 세션 : 서버와 클라이언트의 연결 세션통제란 세션의 연결 및 그로 인해 발생하는 정보를 관리하는 것을 의미하며, 소프트웨어 개발 과정 중 "요구사항분석"과 "설계" 단계에서 진단해야 하는 보안점검 내용이다. 다음은 세션통제를 제대로 하지 못했을 때 발생할 수 있는 보안약점이다. 불충분한 세션관리 ❗️ 일정한 규칙이 존재하는 세션ID가 발급되거나 타임아웃(자동로그아웃시간)이 너무 길게 되면 침입자가 세션하이재킹(가로채기)과 같은 공격을 통해 획득한 세션ID로 인가되지 않은 시스템의 기능을 이용하거나 중요한 정보에 접근이 가능해진다. 잘못된 세션에 의한 정보 노출 ❗️ 다중스레드 환경에서 멤버변수에 정보를 저장할 때 발생함. ❗️ 싱글톤패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발..
2020.07.14