이번 글의 세 문항은 공개 기출문제의 원문을 재현하지 않은 창작 문제다. 정답과 해설은 게시 시점에 확인한 국가법령정보센터, OWASP, KISA의 공개 자료를 근거로 작성했다.

문제 1 — 개인정보 접속기록 점검

문제

개인정보처리시스템의 접속기록 관리에 대한 설명으로 옳은 것은?

선택지

  1. 접속기록은 사고가 발생한 뒤 필요할 때만 임시로 작성한다.
  2. 접속기록은 위·변조 및 도난·분실되지 않도록 안전하게 보관하고, 오·남용 등에 대응하도록 정기적으로 점검한다.
  3. 개인정보를 다운로드한 기록은 업무상 필요하므로 점검 대상이 아니다.
  4. 접속기록에는 계정이나 접속일시를 남길 필요가 없다.

정답

2번

해설

개인정보보호위원회 「개인정보의 안전성 확보조치 기준」은 접속기록을 안전하게 보관하고, 개인정보의 오·남용·유출 등에 대응하기 위해 접속기록 및 개인정보 다운로드 상황을 확인·점검하도록 한다. 접속기록은 사고 후에 만드는 문서가 아니라 평상시 생성·보호·점검해야 하는 증적이다. [1]

오답 포인트

로그를 보관하는 것과 로그를 점검하는 것은 다르다. 또한 로그 자체가 변조되면 침해사고의 타임라인과 행위자 추적이 어려워지므로 중앙 수집, 접근통제, 무결성 보호 같은 보완책을 함께 고려해야 한다.

출처 또는 검증 근거

[1] 개인정보보호위원회, 「개인정보의 안전성 확보조치 기준」, 제8조(접속기록의 보관 및 점검): https://law.go.kr/LSW/admRulLsInfoP.do?admRulSeq=2100000204677

문제 2 — SQL 인젝션 방어

문제

애플리케이션이 사용자 입력으로 조회 조건을 만들 때 SQL 인젝션 방어로 가장 적절한 것은?

선택지

  1. 입력 문자열 일부를 치환한 뒤 계속 문자열 연결 방식으로 SQL을 만든다.
  2. 애플리케이션 계정에 DBA 권한을 부여해 오류를 없앤다.
  3. 매개변수화 질의로 코드와 데이터를 분리하고, 애플리케이션 계정에는 필요한 최소권한만 부여한다.
  4. 데이터베이스 오류와 내부 SQL을 이용자에게 상세히 노출한다.

정답

3번

해설

OWASP는 준비된 문장 또는 매개변수화 질의를 사용해 SQL 코드와 입력 데이터를 분리하는 것을 주요 방어책으로 제시한다. 데이터베이스 계정 최소권한은 방어 심층화로 피해 범위를 줄이지만, 매개변수화 질의를 대신하지는 않는다. [2]

오답 포인트

블랙리스트 기반 특수문자 제거는 우회 가능성이 있어 구조적 방어가 아니다. 저장 프로시저도 내부에서 동적 SQL을 안전하지 않게 조합하면 취약할 수 있고, 오류 상세 노출은 추가적인 정보 유출을 일으킨다.

출처 또는 검증 근거

[2] OWASP, SQL Injection Prevention Cheat Sheet, Primary Defenses: https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html

문제 3 — 랜섬웨어 백업의 복구 가능성

문제

랜섬웨어에 대비한 백업 운영으로 가장 적절한 것은?

선택지

  1. 운영 서버와 동일한 계정·네트워크 경로에 백업 한 부만 둔다.
  2. 백업 성공 메시지만 확인하고 실제 복구 시험은 하지 않는다.
  3. 여러 사본을 서로 다른 매체와 위치에 보관하고, 접근을 제한하며 실제 복구 시험으로 복구 가능성을 검증한다.
  4. 감염이 의심되는 원본이 백업을 자동으로 덮어쓰게 한다.

정답

3번

해설

KISA의 랜섬웨어 대응 백업 수칙은 3-2-1 보관전략, 서비스망과 분리된 오프사이트 백업, 최소 접근권한, 정기적인 복구 훈련 등 백업의 복원력을 높이는 방법을 제시한다. 백업 작업이 성공했다는 로그와 복구 가능한 백업이라는 사실은 별도로 검증해야 한다. [3]

오답 포인트

운영망과 같은 권한·경로의 온라인 백업은 랜섬웨어가 원본과 함께 훼손할 수 있다. 복구 시험 없이 백업의 존재만 확인하면 암호화·손상·키 누락·절차 오류를 발견하지 못할 수 있다.

출처 또는 검증 근거

[3] KISA, 「랜섬웨어 대응을 위한 데이터백업 8대 보안 수칙」: https://risc.kisa.or.kr/inform/secInfoDetail.do?scrtyInfoId=SCR_0000000000000066&pageIndex=1&searchCondition=&searchKeyword=