정보시스템 감리 기출문제해설/보안 해설

(제 25회) 보안 / (105)~(106) 해설

아이티신비 2025. 2. 20. 09:00

105. 다음 C언어 코드가 갖는 문제점을 지칭하는 취약점으로 가장 적절한 것은?

 

 
#include <stdio.h>
int main() {
char name[100];
printf("Enter your name: ");
scanf("%99s", name);
printf(name);
...
return 0;
}

 

① 스택 오버플로우 취약점

② 경쟁 조건 취약점

③ 포맷 스트링 취약점

④ 명령어 주입 취약점

 

■ 전자정부 보안약점 진단항목 - 입력 데이터 검증 및 표현 - 포맷 스트링 삽입

  1. 원인
  • 외부로 부터 입력된 값을 검증하지 않고 입·출력 함수의 포맷 문자열로 그대로 사용하는 경우

 

2. 영향

  • 공격자는 포맷 문자열을 이용하여 취약한 프로세스를 공격하거나, 메모리 내용을 읽거나 쓸 수 있음
  • 그 결과, 공격자는 취약한 프로세스의 권한을 취득하여 임의의 코드를 실행 가능

 

3. 대응

  • 사용자 입력 값을 포맷 문자열로 바로 사용하거나 포맷 스트링 생성에 사용하지 않음
  • %n, %hn 은 공격자가 이를 이용해 특정 메모리 위치에 특정값을 변경할 수 있으므로 포맷 스트링 매개변수로 사용하지 않음
  • 사용자 입력값을 포맷 문자열을 사용하는 함수에 사용할 때는 가능하면 %s 문자열을 지정하고, 사용자 입력값은 2번째 이후의 파라미터로 사용

 

4. 개요

5. 소스해설

 
#include <stdio.h>


int main() {
chat name[100]; // 크기가 100인 문자 배열 선언


// 사용자가 입력으로 %x %x %x %x 를 제공하면,
// 프로그램은 메모리에서 네 개의 정수를 출력
// %n 형식 지정자를 사용하여 메모리에 값을 쓰게 만들 수도 있음


print("Enter your name: ");
scanf("%99s", name); // 최대 99자의 문자열을 입력받아 name 에 저장
print(name); // 포맷 스트링 취약점 발생 가능
-
return();
}

 

정답 : ③

 

 

106. 블록 암호 시스템의 운용 모드 중 GCM(Galois/ Counter Mode)에 대한 설명으로 가장 적절하지 않은 것은?

 

① 메시지 암호화를 위해 CTR 모드를 이용한다.

② 메시지 인증코드(MAC) 값을 생성하기 위해서는 해시 함수를 사용한다.

③ 각 블록을 병렬처리 하는 게 가능하므로 실행 속도를 높일 수 있다.

④ 전송하는 메시지에 대한 기밀성은 제공하지만 메시지 무결성은 보장하지 않는다.

 

■ 인증 암호화(Authenticated encryption)

  • 데이터 암호화를 통한 기밀성과 MAC 계산을 통한 무결성 및 메시지 인증을 동시에 제공
  • CTR 모드에 인증 기능을 추가한 모드
  • Additional Associated Data(AAD) 값과 Tag 값을 이용해 인증 기능 지원

 

1) CCM(Counter with CBC-MAC)

  • MAC 생성 시 암호화되기 전 데이터 활용

 

2) GCM(Galois / Counter Mode, 갈루와 카운터 모드)

  • MAC 생성 시 암호화된 데이터 활용
  • 암호화 : [입력] 암호키/평문/Nonce/ 부가 인증 데이터(AAD), [출력] 암호문/인증값(tag)
  • 복호화 : [입력] 암호문/암호키/Nonce/AAD

 

 

정답 : ④

 

 



 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥