컴퓨터언어(271)
-
🔐 소프트웨어 개발 보안 구축 #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 -
🔐 소프트웨어 개발 보안 구축 #6 - 암호 알고리즘
👍 암호 알고리즘이란? 👊 용어정리 해시 : 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 "단방향" 암호 알고리즘 단방향 : 평문 -> 암호문으로 바꿀수는 있지만, 암호문을 평문으로 다시 복호화는 할 수 없는 암호화 방식. 해시를 사용하는 방식 양방향 : 평문 -> 암호문, 암호문 -> 평문 모두 가능한 암호화 방식. 양방향 암호화방식은 개인키와 공개키가 사용된다. 🙌 단방향 암호 알고리즘 단방향 암호 알고리즘은 해시를 이용한다. 해시 알고리즘을 해시 함수라고 부르며, 해시 함수로 변환된 값이나 키를 해시값 또는 해시키라고 한다. 단방향이기 때문에 복호화할 수 없어, 암호화보다는 데이터변조/수정여부 파악 등 무결성검증 용도로 많이 쓰인다. 대표 해시함수 : MD5, SHA, ..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #5 - 세션통제
👍 세션통제란? 세션 : 서버와 클라이언트의 연결 세션통제란 세션의 연결 및 그로 인해 발생하는 정보를 관리하는 것을 의미하며, 소프트웨어 개발 과정 중 "요구사항분석"과 "설계" 단계에서 진단해야 하는 보안점검 내용이다. 다음은 세션통제를 제대로 하지 못했을 때 발생할 수 있는 보안약점이다. 불충분한 세션관리 ❗️ 일정한 규칙이 존재하는 세션ID가 발급되거나 타임아웃(자동로그아웃시간)이 너무 길게 되면 침입자가 세션하이재킹(가로채기)과 같은 공격을 통해 획득한 세션ID로 인가되지 않은 시스템의 기능을 이용하거나 중요한 정보에 접근이 가능해진다. 잘못된 세션에 의한 정보 노출 ❗️ 다중스레드 환경에서 멤버변수에 정보를 저장할 때 발생함. ❗️ 싱글톤패턴에서 발생하는 레이스컨디션으로 인해 동기화 오류가 발..
2020.07.14 -
🔐 소프트웨어 개발 보안 구축 #4 - 에러처리
👍 에러처리란? 소프트웨어는 실행되면서 에러가 발생하기 마련이기 때문에, 그 에러들을 사전에 정의함으로써 에러로 인해 발생할 수 있는 이차적 문제들을 예방하는 것이 필요하다. 이를 "에러처리"라고 한다. 에러처리는 각 프로그래밍 언어의 "예외처리 구문"을 통해 오류에 대한 사항을 미리 정의해놓아야 한다. 예외처리 구문으로 처리하지 못한 오류들은 중요정보를 노출시키거나 소프트웨어의 실행이 중단되는 등 예기치 못한 문제를 발생시킬 수 있으므로 주의해야 한다. 다음은 에러처리의 미비로 인해 나타나는 보안약점들이다. 오류메시지를 통한 정보노출 ❗️ 오류발생으로 실행환경/사용자정보/디버깅정보/스택트레이스/예외이름이 메시지로 노출되어 해커를 도움 ✅ 오류를 가능한 내부에서만 처리되도록 하고, 메시지 출력이 필요한 ..
2020.07.14