105. 다음 C언어 코드가 갖는 문제점을 지칭하는 취약점으로 가장 적절한 것은?
#include <stdio.h>
int main() { char name[100]; printf("Enter your name: "); scanf("%99s", name); printf(name); ... return 0; } |
① 스택 오버플로우 취약점
② 경쟁 조건 취약점
③ 포맷 스트링 취약점
④ 명령어 주입 취약점
■ 전자정부 보안약점 진단항목 - 입력 데이터 검증 및 표현 - 포맷 스트링 삽입
- 원인
- 외부로 부터 입력된 값을 검증하지 않고 입·출력 함수의 포맷 문자열로 그대로 사용하는 경우
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
정답 : ④
공감과 댓글은 아이티신비에게 큰 힘이 됩니다.
블로그 글이 유용하다면 블로그를 구독해주세요.♥
'정보시스템 감리 기출문제해설 > 보안 해설' 카테고리의 다른 글
(제 25회) 보안 / (109)~(110) 해설 (0) | 2025.02.22 |
---|---|
(제 25회) 보안 / (107)~(108) 해설 (0) | 2025.02.21 |
(제 25회) 보안 / (103)~(104) 해설 (0) | 2025.02.19 |
(제 25회) 보안 / (101)~(102) 해설 (0) | 2025.02.18 |
(제 22회) 보안 / (119)~(120) 해설 (0) | 2024.12.26 |