본문 바로가기
반응형

보안/시큐어코딩3

[시큐어코딩] 경로 조작 및 자원삽입_개념 및 보안대책 입력 데이터 검증 및 표현 - 경로 조작 및 자원 삽입 [개념] 시스템 자원 접근경로 또는 자원제어 명령어에 검증되지 않은 외부 입력값을 허용하여 시스템 자원에 무단 접근 및 악의적인 행위가 가능한 보안약점 [공격 사례] - 경로조작 및 자원삽입 - 입력값을 조작하여 허가되지 않은 명령 실행 [설계 시 고려사항] 1. 외부입력값을 이용하여 시스템자원(IP, PORT번호, 프로세스, 메모리, 파일 등)을 식별하는 경우 허가되지 않은 자원이 사용되지 않도록 해야 한다. 2. 서버프로그램 안에서 셸을 생성하여 명령어를 실행해야 하는 경우 외부입력값에 의해 악의적인 명령어가 실행되지 않도록 해야 한다. [보안대책] 외부의 입력을 자원(파일, 소켓의 포트 등)의 식별자로 사용하는 경우, 적절한 검증을 거치도록 하.. 2024. 3. 19.
[시큐어코딩] 부적절한 자원 해제_개념 및 해결방법 부적절한 자원 해제란? 프로그램의 자원, 예를 들면 열린 파일 디스크립터(Open File Descripter), *힙 메모리(Heap Memory), 소켓(Socker) 등은 유한한 자원이다. 이러한 자원을 할당받아 사용한 후, 더 이상 사용하지 않는 경우에는 적절히 반환하여야 하는데, 프로그램 오류 또는 에러로 사용이 끝난 자원을 반환하지 못하는 경우 *힙 메모리(Heap Memory): 소프트웨어가 자유롭게 사용할 수 있는 메모리 공간. 안전하지 않은 이유 힙 메모리, 소켓 등의 유한한 시스템 자원이 계속 점유하고 있으면 자원 부족으로 인해 새로운 입력을 처리하지 못할 수 있음 보안대책 자원을 획득하여 사용한 다음에는 반드시 자원을 해제하여 반환 즉, 해결방법은 프로그램 내에 제어문, 예외처리문 등.. 2024. 2. 4.
[시큐어코딩] 적절하지 않은 난수값 사용, random() 취약점 예측 가능한 난수를 사용하면 시스템에 보안약점을 유발한다. random()함수가 그 대표적인 예로, 시큐어 코딩이 필요하다. 행정안전부에서 SW개발보안 가이드 47개 항목 중 보안 기능의 24번째 항목 "적절하지 않은 난수값 사용"에 해당하는 부분이다. 오늘은 난수값의 정확한 시큐어코딩 방법에 대해 공부하고자 한다. 난수란? 어떤 주기로 반복되지 않고, 특정한 규칙 없이 무작위로 나열돼 있는 수 쉽게 말해서 예측 불가능한 수라고 생각하면 된다. 난수를 사용하지 않고 예측 가능한 수를 사용하면, 공격자는 SW에서 생성되는 다음 숫자를 예상하여 시스템을 공격하는 것이 가능하다. 예를 들어 Java의 경우 랜덤 난수를 발생시킬 때 보통 Math.random()을 많이 사용하는데, 해당 메소드의 사용은 시드값을.. 2023. 11. 4.
반응형