Wahr/Falsch
문제
독일어 원문
Ein Orakel beim Fuzzing gibt Rückmeldung über das Verhalten des Programms.
한국어 해석
fuzzing oracle은 program 동작에 대한 feedback을 준다.
Wahr/Falsch 즉시 채점
선택 후 즉시 개념 함정을 확인하세요.
단계별 힌트
막혔을 때만 한 단계씩 여세요. 정답을 바로 읽는 것보다 기억을 꺼내는 시간이 중요합니다.
- 첫 힌트: crash, sanitizer report, invariant violation, output mismatch 등으로 입력이 실패를 유발했는지 판정한다.
- Wahr로 표시한다.
- crash, sanitizer report, invariant violation, output mismatch 등으로 입력이 실패를 유발했는지 판정한다.
- 함정: oracle을 미래를 예측하는 AI로 이해하지 않는다.
- 후속 점검: coverage feedback과 bug oracle의 차이는?
채점 기준으로 내 답안 점검하기
- Wahr로 표시한다.
- crash, sanitizer report, invariant violation, output mismatch 등으로 입력이 실패를 유발했는지 판정한다.
답안 슬롯 자가 점검 — 실제로 말하거나 쓴 항목만 체크하세요.
0/2 slots
정답과 핵심 해설 확인하기
Wahr. crash, sanitizer report, invariant violation, output mismatch 등으로 입력이 실패를 유발했는지 판정한다.
- Wahr로 표시한다.
- crash, sanitizer report, invariant violation, output mismatch 등으로 입력이 실패를 유발했는지 판정한다.
Wahr
개념부터 다시 보는 상세 풀이
BEGINNER LESSON
Fuzzing Oracle: 미래를 예언하는 것이 아니라 실패를 판정하는 센서
ZERO-BASE START
정말 아무것도 모른다고 가정하고 시작합니다
전문 용어를 알고 있다고 가정하지 않습니다. 먼저 일상적인 장면을 보고, 그 장면의 사람과 행동에 실제 보안 용어를 하나씩 붙인 뒤, 시스템에서 일어나는 순서를 따라갑니다.
기초 개념 01
Fuzzing: 이상한 입력을 자동으로 계속 넣어 보는 시험
1타 강사식 시작: 이름은 잠시 가리고 장면부터 봅시다
문 손잡이를 정상적으로 한 번 돌리는 대신 아주 빠르게, 반대로, 반쯤, 여러 번 돌려 어떤 조작에서 문이 망가지는지 자동 실험하는 것과 같다.
지금은 이 비유를 완벽히 외울 필요가 없습니다. 누가 무엇을 가지고 있고, 무엇을 하려 하며, 어느 지점에서 문제가 생기는지만 찾으면 됩니다.
이제 실제 용어를 하나씩 붙여 봅시다
Fuzzing은 프로그램에 매우 많은 비정상·경계·무작위 입력을 자동 생성해 넣고 crash, hang, sanitizer error, assertion failure 같은 이상 동작을 찾는 dynamic testing 기법이다. Seed corpus는 시작 입력 모음이고 mutation은 입력을 변형하는 과정이다. Coverage-guided fuzzer는 새 code path를 실행한 입력을 보존해 더 깊은 상태를 탐색한다.
TERMS FROM ZERO
전문 용어를 한 단어씩 풀기
아래 단어는 이미 안다고 가정하지 않습니다. 먼저 쉬운 뜻을 읽고, 본문에서 같은 단어가 나오면 이 정의로 다시 바꾸어 읽으세요.
Fuzzer
많은 test input을 자동 생성·변형하고 target program에 실행하는 도구입니다.
Seed corpus
Fuzzing을 시작할 때 기본 구조를 제공하는 초기 입력 모음입니다.
Mutation
기존 입력의 byte·길이·구조를 변경해 새 test case를 만드는 과정입니다.
Oracle
Crash, sanitizer report, output mismatch 등 실패 여부를 판정하는 관찰 기준입니다.
Coverage
특정 입력이 program code의 어느 부분을 실행했는지 나타내는 정보입니다.
프로그램이나 프로토콜 안에서는 다음 순서로 움직입니다.
- 정상적인 seed input을 준비한다.
- 입력을 반복해서 mutate하거나 grammar에 맞게 생성한다.
- Program을 실행하고 crash, timeout, coverage를 관찰한다.
- 실패 입력을 재현하고 가장 작은 testcase로 줄인다.
- 원인을 수정한 뒤 그 testcase를 regression test로 남긴다.
왜 여기서 많이 틀릴까요?
Fuzzing이 모든 입력을 증명하거나 취약점이 없음을 보장하지는 않는다. 좋은 oracle, instrumentation, corpus가 필요하다.
조건을 생략하거나 서로 다른 기능을 같은 것으로 취급했는지 확인하세요. 정답 문장을 외우는 것보다 틀린 이유를 말할 수 있어야 변형 문제를 풀 수 있습니다.
핵심부터 말하면 Wahr. Oracle은 crash, sanitizer report, 잘못된 출력 등 프로그램 실행 결과를 관찰해 입력이 의미 있는 실패를 일으켰는지 알려 줍니다.
이 글에서 익힐 것
fuzzer의 입력 생성기와 oracle을 구분한다.
coverage feedback과 bug oracle의 차이를 이해한다.
crash 외에도 여러 oracle이 있음을 이해한다.
먼저 알아야 할 개념
수천 개 제품을 자동 검사하는 공장에서 로봇 팔이 입력 생성기라면, 깨짐·과열·규격 불일치를 감지하는 센서가 oracle입니다.
예제로 확인하기
상황 설정
이미지 parser에 변형된 파일 10만 개를 넣는다고 합시다.
풀이 순서
mutation engine은 파일 byte를 바꾸어 새 test input을 만듭니다.
target program은 각 파일을 실제로 처리합니다.
oracle은 process crash, timeout, AddressSanitizer report, 예상과 다른 output을 관찰합니다.
coverage feedback은 ‘새 code path에 도달했는가’를 알려 탐색을 안내하지만, 새 path 자체가 곧 bug라는 뜻은 아닙니다.
실패가 감지되면 해당 input을 보존하고 재현·최소화합니다.
해설
Oracle이 program behavior에 대한 feedback을 준다는 문장은 정확합니다.
정답까지 사고 과정
oracle을 입력 생성기가 아니라 결과 판정 장치로 정의합니다.
구체적인 feedback 예시를 두 개 이상 떠올립니다.
문장의 표현과 정의가 일치하므로 Wahr입니다.
coverage와 bug detection이 항상 같은 것은 아니라는 한계를 기억합니다.
시험장에서는 이렇게 쓰기
최소 답안
Wahr.
안전한 두 문장 답안
Wahr. Ein Fuzzing-Orakel bewertet das beobachtete Programmverhalten, zum Beispiel anhand eines Crashes, Sanitizer-Reports oder abweichender Ausgaben, und liefert damit Feedback für den Fuzzing-Prozess.
자주 틀리는 지점
oracle을 test input을 만드는 구성요소라고 쓰기
새 coverage가 곧 취약점 발견이라고 쓰기
crash만 유일한 oracle이라고 생각하기
한 줄로 기억하기
Fuzzer가 두드리고, oracle이 깨졌는지 알려 준다.
스스로 확인하기
입력 생성기와 oracle의 역할 차이는?
새 coverage와 실제 bug finding의 차이는?
이 문제가 어려운 이유
짧은 문제 문장 ‘fuzzing oracle은 program 동작에 대한 feedback을 준다.’ 안에 정의, 조건, 처리 순서가 압축되어 있습니다. 아래 예시에서는 이를 한 단계씩 펼쳐 확인합니다.
AI 구두시험용 프롬프트
한 문항만 풀어라. 먼저 정답을 열지 말고 90초 안에 답안을 말한 뒤, css-ws2025-26-seceng-mc-008의 채점 프레임으로 스스로 채점하라. 문제: fuzzing oracle은 program 동작에 대한 feedback을 준다.
학습 기록