• Home
  • 회사소개
    • 회사개요
    • 인사말
    • 회사연혁
    • 고객사 레퍼런스
    • 협력사
    • 오시는길
  • 사업소개
    • 시큐어코딩
    • 웹방화벽
    • 컨설팅
  • 제품소개
    • CODE-RAY XG
    • WEBS-RAY V2.5
    • SECUI MF2
    • Secuguard
    • SolidStep
  • 보안소식
    • 보안뉴스
    • 시큐어코딩
    • 모의해킹
    • 취약점 진단
  • 공지사항
    • 공지사항
    • 납품 및 컨설팅 사례
    • 유지보수 사업 현황
    • 채용공고
    • 자료실
  • Home
  • 회사소개
    • 회사개요
    • 인사말
    • 회사연혁
    • 고객사 레퍼런스
    • 협력사
    • 오시는길
  • 사업소개
    • 시큐어코딩
    • 웹방화벽
    • 컨설팅
  • 제품소개
    • CODE-RAY XG
    • WEBS-RAY V2.5
    • SECUI MF2
    • Secuguard
    • SolidStep
  • 보안소식
    • 보안뉴스
    • 시큐어코딩
    • 모의해킹
    • 취약점 진단
  • 공지사항
    • 공지사항
    • 납품 및 컨설팅 사례
    • 유지보수 사업 현황
    • 채용공고
    • 자료실

시큐어코딩

  • home
  • 보안소식
  • 시큐어코딩

40. [코드오류] 초기화되지 않은 변수 사용

2019.08.08 17:03

관리자 조회 수:6082

안녕하세요 신뢰와 정직의 정보보안 전문기업 지에스인포입니다!

​

오늘은 행정안전부 47개 보안취약점 중 '초기화 되지 않은 변수 사용'에 대해 알아보겠습니다.

​

분석 및 설계 단계 보안 요구항목과 구현 단계 47개 보안약점 기준

- 소프트웨어 개발보안 가이드 (행정안전부 / 한국인터넷진흥원)

​

# 초기화 되지 않은 변수 사용 : 변수를 초기화하지 않고 사용하여 예기치 않은 오류가 발생 될 수 있는 보안 취약점

​

이번에도 자원에 관련 된 보안취약점입니다. 지난번에는 자원을 사용하고 적절하게 해제하지 않아 시스템의 낭비를 초래하는 보안 취약점이었다면, 이번에는 반대로 초기화 되지 않은 변수를 그대로 사용 할 때 발생 할 수 있는 문제인데요.

​

그럼 여기서 '초기화'가 무엇일까요?

​

초기화 : 변수를 선언한 후 처음으로 값을 입력하는 행위

​

프로그램에서 변수를 선언한다는 것은 데이터 값을 넣을 '그릇'을 만드는 행위에 비유 할 수 있습니다.

컴퓨터에서 연산을 수행하려면 데이터 값이 있어야 하고, 해당 데이터를 담을 메모리가 있어야 하기 때문이지요.

그런데 컴퓨터에서 다양한 작업을 수행하려고 할 때, 데이터를 담을 그릇이 1개만 있다면 하나의 연산작업이 끝날 때까지 다른 연산은 수행이 되지 못하는 불편사항이 생기게 됩니다.

​

그래서 컴퓨터는 필요에 따라 하나의 메모리를 여러가지의 그릇으로 쪼개어 사용하는데요. 그 하나하나의 그릇을 '변수' (Variation)이라고 명명하는 것입니다.

​

그런데 이 변수를 사용하는데 있어서도 제대로 프로그래밍을 하지 않으면 보안 취약점이 발생 할 수 있다는 것이지요. C언어의 경우 스택 메모리에 저장되는 지역변수가 생성 될 시 자동으로 초기화 되지 않는 특징이 있는데요. 따라서 C언어 사용시 지역변수를 선언하면 반드시 초기화를 해 주어야 프로그램이 정상적으로 작동하게 됩니다.

​

만약 초기화 되지 않은 변수를 사용 할 경우 임의값을 사용하게 되어 의도하지 않은 결과를 출력하거나 예상치 못한 동작을 수행 할 수 있기 때문이지요. 또한 공격자는 이런 약점을 이용하여 메모리에 저장되어 있는 값을 읽거나 특정 코드를 실행 할 수도 있습니다.


참 무섭지요...?

​

따라서 우리의 소중한 정보를 안전하게 지키고 싶다면 프로그램 설계시 모든 변수를 사용 전에 반드시 올바른 방법으로 초기값을 할당 해 주어야 합니다.

​

소스코드 예제와 함께 보시겠습니다.

​

'초기화되지 않은 변수 사용' 항목의 위험한 예 (C)

- 소프트웨어 개발보안 가이드 (행정안전부 / 한국인터넷진흥원)

위 소스코드는 커서의 위치를 정하는 로직인데요. switch문 안에서 초기화를 수행하도록 구현이 되어있으나, default 부분에서 변수 x만 초기화하고 변수 y는 초기화시키지 않은 모습을 볼 수 있습니다. 이렇게 되면 해당 함수가 수행되기 전에 공격자가 y 함수에 다른 값을 입력하는 것도 가능해지고, 그렇게 될 경우 심각한 서비스 장애가 발생 할 수 있겠죠?

​

'초기화되지 않은 변수 사용' 항목의 안전한 예 (C)

- 소프트웨어 개발보안 가이드 (행정안전부 / 한국인터넷진흥원)


따라서 위 예제처럼 switch문 안에 case 항목으로 존재하던 초기화 구문을 switch문 밖으로 꺼내어 변수를 올바르게 초기화 해 주어야 안전한 SW가 설계되었다고 볼 수 있습니다!

​

어때요? 공부할 수록 정말 많은 보안취약점이 소스코드 안에 숨어있다는 것을 느끼고 계시지 않나요?

​

함수부터 DB, 이제는 변수까지 신경 써 줘야 하는 소스코드 보안 취약점들... 프로그램 하나 설계하기가 정말 복잡하지요? ㅠㅠ


하지만 걱정마세요!

여러분의 정보를 늘 든든하게 지켜드리는 저희 지에스인포가 늘 여러분들 곁에 있으니까요 ^-^



안전은 만사의 기본! 여러분의 소중한 정보보호를 지켜드리기 위해 오늘도 지에스인포는 열심히 달려나가고 있답니다. 정보보호가 필요하실 땐 언제든 저희 지에스인포를 찾아주세요!

​

오늘은 '초기화되지 않은 변수 사용'에 대해 알아보았습니다. 다음에도 유익한 소식으로 찾아뵙겠습니다.

이 게시물을
  • Twitter
  • Me2day
  • Facebook
  • Delicious
목록

엮인글 0

http://gsinfo.kr/xe/SecureCoding_Board/1673/a68/trackback

댓글 0

목록
번호 제목 글쓴이 날짜 조회 수
42 42. [캡슐화] 제거되지 않고 남은 디버그 코드 file 관리자 2020.09.28 2086
41 41. [캡슐화] 잘못된 세션에 의한 데이터 정보노출 file 관리자 2019.12.30 4432
» 40. [코드오류] 초기화되지 않은 변수 사용 관리자 2019.08.08 6082
39 39. [코드오류] 해제 된 자원 사용 관리자 2019.07.24 4556
38 38. [코드오류] 부적절한 자원 해제 관리자 2019.07.17 4662
37 37. [코드오류] Null Pointer 역참조 관리자 2019.07.17 6434
36 36. [에러처리] 부적절한 예외 처리 관리자 2019.07.12 5359
35 35. [에러처리] 오류 상황 대응 부재 관리자 2019.07.11 4486
34 34. [에러처리] 오류메시지를 통한 정보노출 관리자 2019.07.09 5990
33 33. [시간 및 상태] 종료되지 않은 반복문 재귀함수 관리자 2019.07.05 5313
32 32. [시간 및 상태] 검사시점과 사용시점 관리자 2019.07.01 4408
31 31. [보안 기능] 반복된 인증시도 제한 기능 부재 관리자 2019.06.24 4281
30 30. [보안 기능] 무결성 검사 없는 코드 다운로드 관리자 2019.06.24 4417
29 29. [보안 기능] 솔트 없이 일방향 해시함수 사용 관리자 2019.06.17 5179
28 28. [보안 기능] 주석문 안에 포함된 시스템 주요정보 관리자 2019.06.11 4202
27 27. [보안 기능] 사용자의 하드디스크에 저장되는 쿠키를 통한 정보노출 관리자 2019.06.04 4421
26 26. [보안 기능] 취약한 비밀번호 허용 관리자 2019.06.04 6838
25 25. [보안 기능] 하드코드 된 암호화 키 관리자 2019.05.28 5346
24 24. [보안 기능] 적절하지 않은 난수값 사용 관리자 2019.05.28 5834
23 23. [보안 기능] 충분하지 않은 키 길이 사용 관리자 2019.05.07 4198
첫 페이지 1 2 3 끝 페이지
쓰기
태그
보안소식
  • 보안뉴스
  • 시큐어코딩
  • 모의해킹
  • 취약점 진단
nextep banner

어플리케이션 소스코드 취약점 점검도구, CODE-RAY XG를 통해 개발 단계에서부터 소스코드의 잠재적인 취약점이 없는 건강한 소프트웨어를 구현할 수 있습니다.
웹 / 소스코드 / 서버 인프라 등 다양한 시스템의 취약점을 사전에 점검하여 여러가지 상황에서의 보안사고를 예방합니다.
모바일 시스템에 대하여 해킹에 취약한 근본적인 문제를 점검하고, 다양한 컴플라이언스를 기반으로 한 최적의 가이드를 제공합니다.
  • Home
  • 회사소개
  • 사업소개
  • 제품소개
  • 보안소식
  • 공지사항
본사주소 : 서울특별시 구로구 디지털로33길 48, 709호(대륭포스트타워 7차)   Tel : 02-861-6373

대표이사 : 고공석 ㅣ  사업자번호 : 887-86-00041 ㅣ  COPYRIGHT ⓒ GSinfo ALL RIGHT RESERVED.

로그인

로그인폼

로그인 유지

로그인
  • 회원가입
  • ID/PW 찾기