공학(7)
-
🔐 소프트웨어 개발 보안 구축 #8 - 캡슐화
👍 캡슐화란? 정보은닉이 필요한 중요한 데이터와 기능을 불충분하게 캡슐화하거나 잘못 사용함으로써 발생할 수 있는 문제를 예방하기 위한 보안점검항목 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것을 의미한다. 다음은 잘못된 캡슐화로 인해 발생할 수 있는 보안약점이다. 잘못된 세션에 의한 정보 노출 *분석/설계단계에서는 세션통제, 구현단계에서는 캡슐화에 해당 ❗️ 다중스레드 환경에서 멤버변수에 정보를 저장할 때 발생함. ❗️ 싱글톤패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발생하거나 멤버변수의 정보가 노출될 수 있음. ✅ 멤버변수(클래스가 생성되면 계속 메모리에 적재)보다 지역변수(함수의 종료를 함께 메모리에서 해제가능)활용하여 변수의 범위를 제한함으로써 방지 제거되지 않고 남은 디버그 ..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #7 - 코드오류
👍 코드오류란? 소프트웨어 "구현"단계에서 개발자들이 코딩 중 실수하기 쉬운 형(Type)변환, 자원반환 등의 오류를 예방하기 위한 보안점검 항목 다음은 코드오류로 발생할 수 있는 보안약점이다. 👊 널포인터(포인터에 Null이 저장되어 어떠한 곳도 가라키지 못하는 상태의 요소) 역참조 보통 많은 라이브러리 함수들은 오류가 발생할 경우 Null을 반환하는데, 이를 포인터로 참조하는 경우 발생하는 오류다. 대부분의 운영체제에서 널포인터는 메모리의 첫주소를 가리키는데, 이는 소프트웨어의 비정상적인 종료를 유발할 수 있다. 공격자는 널포인터 역참조로 발생하는 예외상황을 기억한 후, 추후에 이를 악용할 수 있다. 따라서 널이 될 수 있는 포인터를 이용하기 전에, 해당 포인터가 널을 갖고 있는지 검사함으로서 방지할..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #6 - 암호 알고리즘
👍 암호 알고리즘이란? 👊 용어정리 해시 : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 "단방향" 암호 알고리즘 단방향 : 평문 -> 암호문으로 바꿀수는 있지만, 암호문을 평문으로 다시 복호화는 할 수 없는 암호화 방식. 해시를 사용하는 방식 양방향 : 평문 -> 암호문, 암호문 -> 평문 모두 가능한 암호화 방식. 양방향 암호화방식은 개인키와 공개키가 사용된다. 🙌 단방향 암호 알고리즘 단방향 암호 알고리즘은 해시를 이용한다. 해시 알고리즘을 해시 함수라고 부르며, 해시 함수로 변환된 값이나 키를 해시값 또는 해시키라고 한다. 단방향이기 때문에 복호화할 수 없어, 암호화보다는 데이터변조/수정여부 파악 등 무결성검증 용도로 많이 쓰인다. 대표 해시함수 : MD5, SHA, ..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #5 - 세션통제
👍 세션통제란? 세션 : 서버와 클라이언트의 연결 세션통제란 세션의 연결 및 그로 인해 발생하는 정보를 관리하는 것을 의미하며, 소프트웨어 개발 과정 중 "요구사항분석"과 "설계" 단계에서 진단해야 하는 보안점검 내용이다. 다음은 세션통제를 제대로 하지 못했을 때 발생할 수 있는 보안약점이다. 불충분한 세션관리 ❗️ 일정한 규칙이 존재하는 세션ID가 발급되거나 타임아웃(자동로그아웃시간)이 너무 길게 되면 침입자가 세션하이재킹(가로채기)과 같은 공격을 통해 획득한 세션ID로 인가되지 않은 시스템의 기능을 이용하거나 중요한 정보에 접근이 가능해진다. 잘못된 세션에 의한 정보 노출 ❗️ 다중스레드 환경에서 멤버변수에 정보를 저장할 때 발생함. ❗️ 싱글톤패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #4 - 에러처리
👍 에러처리란? 소프트웨어는 실행되면서 에러가 발생하기 마련이기 때문에, 그 에러들을 사전에 정의함으로써 에러로 인해 발생할 수 있는 이차적 문제들을 예방하는 것이 필요하다. 이를 "에러처리"라고 한다. 에러처리는 각 프로그래밍 언어의 "예외처리 구문"을 통해 오류에 대한 사항을 미리 정의해놓아야 한다. 예외처리 구문으로 처리하지 못한 오류들은 중요정보를 노출시키거나 소프트웨어의 실행이 중단되는 등 예기치 못한 문제를 발생시킬 수 있으므로 주의해야 한다. 다음은 에러처리의 미비로 인해 나타나는 보안약점들이다. 오류메시지를 통한 정보노출 ❗️ 오류발생으로 실행환경/사용자정보/디버깅정보/스택트레이스/예외이름이 메시지로 노출되어 해커를 도움 ✅ 오류를 가능한 내부에서만 처리되도록 하고, 메시지 출력이 필요한 ..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #3 - 보안기능
👍 보안기능이란? 보안기능이란 개발자가 구현(코딩)하는 단계에서 소프트웨어의 보안을 위해 포함하는 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 "보안 점검 항목"들을 말한다.각 보안기능들은 서비스 환경이나 취급 데이터에 맞게 처리될 수 있도록 구현해야 하며, 소프트웨어의 기능 또는 데이터에 접근하려는 사용자별로 중요도를 구분하고 차별화된 인증방안을 적용해야 한다.인증된 사용자에게는 이용할 기능과 데이터에 대해 개별적으로 접근권한을 부여함으로써, 인가되지 않은 기능과 데이터로의 접근을 차단해야 한다.그리고 개인정보나 인증정보와 같은 중요한 정보는 변조/삭제/오남용되지 않도록 안전한 암호화 기술을 적용해야 한다. 다음은 보안기능에 대한 점검을 수행하지 않을 경우 발생할 수 있는 약점들이다...
2020.07.14