유지상

시큐어코딩 실습 제품 개발

방어 코드 작성·공격 실행·결과 확인과 학습자 간 풀이 공유·상호 공격을 잇는 실습 제품을 팀 내에서 구현했습니다. 교육 수료생을 대상으로 베타 공개했습니다.

Java, Servlet, JSP, JDBC, MySQL, Python, Tomcat

코드를 고치고 직접 공격해 보는 학습

창업 당시 최신 보안 흐름을 반영하기 어려운 정체된 콘텐츠와 일방향 온라인 강의를 시큐어코딩 교육의 문제로 보고, SW 전공 학생을 초기 대상으로 삼았습니다.

일반적인 온라인 저지가 코드의 출력값을 채점한다면, 이 시스템은 학습자의 방어 코드가 적용된 작은 웹 기능을 만들고 그 기능에 직접 공격을 보내 결과를 확인하게 합니다.

예를 들어 SQL Injection 문제에서는 학습자가 입력 처리 함수를 수정합니다. 시스템은 그 함수를 로그인 페이지에 반영하고, 학습자는 정상 로그인과 공격 문자열을 모두 입력해 방어 여부를 확인합니다.

학습 흐름은 다음과 같습니다.

  • 취약점의 원인과 방어 방법을 학습합니다.
  • 문제에서 요구하는 방어 함수를 작성합니다.
  • 시스템이 코드를 취약점별 웹 기능에 반영합니다.
  • 생성된 기능을 직접 공격하고 결과를 확인한 뒤 코드를 수정합니다.
  • 풀이 코드를 공개하고 댓글과 반응을 남기며, 다른 학습자의 생성 페이지도 공격할 수 있습니다.

실습·판정·공유를 연결한 구현

실습 콘텐츠는 SW개발보안 가이드, OWASP, SANS, CWE의 취약점 분류와 대응 원칙을 참고해 구성했습니다.

  • SQL Injection, XSS, OS Command Injection 등 SW개발보안 가이드 기반 취약점 실습을 제공합니다.
  • Java 실습은 학습자 함수를 사용자별 실행 페이지에 조립하고, 8개 시나리오의 내장 검증 로직으로 성공·실패 상태를 저장했습니다.
  • 풀이 코드를 취약점별로 저장·공유하고, 다른 학습자의 생성 페이지 공격과 댓글·반응 기능을 연결했습니다.

교육 플랫폼과 특허

이 실습 흐름을 팀 내에서 시큐어코딩 교육 플랫폼으로 구현했고, 「시큐어 코딩 시스템 및 방법」에 공동 출원인이자 공동 발명자 5인 중 1인으로 참여했습니다.

공식 기록은 https://doi.org/10.8080/1020190120363 에서 확인할 수 있습니다. 출원번호는 10-2019-0120363, 공개번호는 10-2021-0037895입니다.

베타 사용자 피드백

케이쉴드 주니어 수료생을 대상으로 베타 공개했습니다. Google 설문 응답에서 시나리오 실습이 시큐어코딩 학습에 도움이 된다는 정성 평가를 확인했습니다.

소속 경력