2분반-캐슬코더

cdc wiki
이동: 둘러보기, 검색

목차

 [숨기기

프로젝트 개요

기술개발 과제

국문 : 코드 보안 취약점을 점검 및 강화하는 인공지능 코딩 보조 도구

영문 : AI Copilot to detecting and mitigating code security vulnerabilities

과제 팀명

캐슬코더(Castle Coder)

지도교수

이경재 교수님

개발기간

2025년 3월 ~ 2025년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 20199200** 박*(팀장)

서울시립대학교 컴퓨터과학부 20209200** 오*찬

서울시립대학교 컴퓨터과학부 20209200** 유*호

서울시립대학교 컴퓨터과학부 20209200** 경*수

서울시립대학교 컴퓨터과학부 20169200** 오*훈

서울시립대학교 환경원예학과 20205200** 김*연

서론

개발 과제의 개요

개발 과제 요약

  • AI Copilot을 LLM 모델 훈련 및 배포를 통해서 서비스를 제공한다. 현존하는 모델들을 일부 구현, 튜닝 및 훈련을 통하여 발전시킨다. 이를 통해 지능형 코드 추천 기능을 기대할 수 있다.
  • 지능형 코드 추천에서 보안 취약점이 생겨나지 않도록 취약점 분석 후 수정 기능을 Copilot에 탑재한다.
  • 사용자가 사용하기 용이하도록 IDE plugin 형식으로 개발하여 VSCode Extension에 배포한다.

AI 기반 Copilot을 개발하기 위해 LLM 모델을 훈련 및 튜닝하여 지능형 코드 추천 기능을 향상시키고, 보안 취약점이 발생하지 않도록 정적 분석 도구를 활용해 탐지 및 수정 기능을 탑재한다. 이를 위해 오탐을 최소화하고, CWEs를 활용한 분류 및 Copilot chat을 통한 코드 스니펫 수정 기능을 추가하여 보안성과 코드 품질을 동시에 개선한다. 최종적으로, 사용자의 편의성을 고려하여 IDE 플러그인 형태로 개발하고 VS Code 확장 프로그램으로 배포한다.

개발 과제의 배경 및 효과

  • 기존 AI-Coding Copilot의 한계 및 보완
    • GitHub Copilot 등 주요 AI-Coding Copilot은 OWASP TOP 10에 해당하는 보안 취약점을 내포한 코드 패턴을 반복적으로 생성하는 문제가 있다. 다음과 같은 구조적인 한계가 존재한다.
      • AI 모델은 대량의 오픈 소스 코드를 학습하여 코드를 생성한다. 이때, 학습 데이터에 포함된 보안 취약점이 그대로 전파될 수 있다.
      • 이렇게 생성된 취약한 코드가 다시 학습 데이터로 사용되면, AI 모델은 점점 더 보안 취약한 코드를 생성하게 되는 악순환이 발생한다.
      • 개발자가 AI가 제안한 코드를 신뢰하고 프로젝트에 통합할 경우, 보안 문제가 실제 서비스로 확산될 가능성이 있다.

이러한 문제는 실증 연구를 통해서도 확인되었다. 논문 Security Weaknesses of Copilot-Generated Code in GitHub Projects: An Empirical Study (Fu et al., 2023)에서는 GitHub Copilot, CodeWhisperer, Codeium이 생성한 소스 코드 스니펫을 분석한 결과, Python 코드의 29.5%, JavaScript 코드의 24.2%가 보안 취약점 발생 가능성이 높음으로 평가되었다. 이는 Common Weakness Enumeration (CWE) 43개 항목에 걸쳐 나타났으며, 대부분의 OWASP Top 10 항목에 포함되는 보안 취약점이다. 따라서 CastleCoder는 이러한 보안 취약점을 분석하고 안전한 코드로 리팩토링하고자 한다.

  • 기존 취약점 탐지 도구의 한계 및 보완
    • Bandit은 Python 코드의 대표적인 정적 분석 도구지만, 모든 취약점을 완벽히 탐지하지 못한다.
      • 예를 들어, 정상 코드를 취약점으로 잘못 판단하는 ‘오탐’과 실제 취약점을 놓치는 ‘미탐’이 발생해 신뢰성이 저하된다.
      • 지원 범위 내 취약점 유형에만 대응하므로, 최신 공격 기법이나 도메인 특화 이슈는 탐지에서 제외될 위험이 있다.

따라서 CastleCoder는 OWASP Top 10 기반의 벤치마크를 직접 제작하여 이를 보완하고자 한다.

개발 과제의 목표 및 내용

  • GitHub Copilot 등 기존 AI coding copilot들은 OWASP TOP 10에 해당되는 보안 취약점이 빈번히 발견된다.
  • CastleCoder는 생성한 코드에서 보안 취약점을 자동으로 보완하면서도 코드 품질은 유지되는, 보안 취약점을 방지하는 copilot을 개발하는 것을 목표로 한다.
  • 제작한 보안 테스트 시나리오를 기반으로 LLM을 정량적으로 평가하여, 추천된 코드의 취약점 유무와 보안성을 측정한다.
  • 보안 강화를 위해 코드를 추천하더라도 성능이나 가독성과 같은 코드 품질이 저하되지 않도록 최적화된 추천 방식을 적용한다.

관련 기술의 현황

관련 기술의 현황 및 분석 (State of art)

전 세계적인 기술현황

  • AI 코드 생성 및 보안 강화: 전 세계적으로 GitHub Copilot, Codeium, Amazon CodeWhisperer 등 대형 언어모델(LLM) 기반 코드 어시스턴트가 개발자 생산성 향상에 기여하고 있으나, OWASP Top 10 등 주요 보안 취약점을 포함한 코드가 반복적으로 생성되는 문제가 실증적으로 확인되고 있음.
  • LLM 기술 발전: Alibaba의 Qwen2.5-Coder 시리즈(0.5B~32B 파라미터)와 같은 코드 특화 LLM이 등장하여, 다양한 언어와 벤치마크에서 최고 성능을 기록하며, 긴 컨텍스트(최대 128K 토큰) 이해와 코드 생성·디버깅 지원이 강화되고 있음.
  • 메모리 및 서빙 최적화: vLLM과 같은 고성능 서빙 시스템이 등장하여, GPU 메모리 효율(4% 미만 낭비)과 동시 처리량을 크게 개선함.
  • 보안 취약점 자동화: 정적/동적 분석 도구(예: Bandit)와 결합된 자동화된 코드 리팩토링 및 취약점 탐지 기술이 발전하고 있음.
  • 학습 데이터셋 확장: Nvidia OpenCodeInstruct, Vulnerability-Fix dataset 등 대규모 코드 및 보안 취약점 수정 데이터셋이 공개되며, LLM의 코드 생성 및 보안성 강화에 활용되고 있음.

특허조사 및 특허 전략 분석

  • 특허 동향: AI 기반 코드 생성 및 자동 리팩토링, 보안 취약점 탐지 관련 특허가 글로벌 IT 기업과 스타트업에서 활발히 출원되고 있음.
  • 특허 전략: 선행 기술 조사를 통한 중복 투자 방지, 경쟁사 특허 모니터링, 보안 강화 코드 생성 및 자동화 관련 핵심 특허 포트폴리오 구축이 중요함.
  • 특허 활용: 기술 개발 초기부터 특허 경쟁력 확보 및 사업화 전략 수립에 특허 정보가 적극 활용되고 있음.

기술 로드맵

  • 초기 단계: 환경 구축 및 프로토타입 개발, vLLM 기반 모델 서버 구축, gRPC 기반 실시간 모델 응답 서빙, VSCode Extension 개발
  • AI 기술 강화: Prompt Engineering, Few-shot Learning, Supervised Fine-Tuning(SFT), Direct Preference Optimization(DPO), Kahneman-Tversky Optimization(KTO) 등 다양한 학습 기법 적용
  • 성능 및 보안 최적화: 코드 생성 품질 및 보안성 평가, 벤치마크 데이터셋 확장, 정적/동적 분석 도구 통합
  • 향후 계획: LLM 도구 호출 및 MCP 통합, Kubernetes 기반 자동 스케일링 및 무중단 배포, Redis/큐 기반 대규모 배치 요청 처리, 동적 분석 툴 연동 등

시장상황에 대한 분석

경쟁제품 조사 비교

  • CastleCoder는 VSCode 확장 프로그램 형태로 제공되어, 별도의 독립형 에디터 설치가 필요한 Cursor나 Windsurf와 달리 기존 개발 환경 내에서 바로 사용할 수 있다는 점에서 높은 접근성과 편의성을 제공한다.
  • GitHub Copilot 역시 VSCode 확장 형태로 제공되지만, CastleCoder는 OWASP TOP10을 기반으로 보안 기능을 강화하여 기업 환경이나 보안이 중요한 프로젝트에서의 활용에 유리한 차별점을 갖는다.
  • 예를 들어, SQL injection, 인증 우회, 민감 정보 노출 등의 보안 취약점을 코드 생성 단계에서 탐지하고 차단함으로써, 개발 생산성과 보안성을 동시에 확보할 수 있다.

마케팅 전략

  • 사용자가 직접 원하는 보안 시나리오를 추가할 수 있다. (예: Github Fork를 따와서 본인이 추가해서 사용한다.)
  • CLI가 아닌 Plugin 방식으로 접근성이 향상된다.
  • 개발자들을 대상으로 하는 1차 방화벽 역할을 하여 기능 구현에 집중할 수 있도록 해주는 어시스턴트 역할을 한다.
  • GitHub Copilot, Cursor AI와 다르게 on/off 명령어 도입으로 사용성이 향상된다.

개발과제의 기대효과

기술적 기대효과

  • 고성능 gRPC 기반 실시간 모델 응답 서빙
    • gRPC 프로토콜을 사용하여 FastAPI 기반 AI 모델서버와 Back-End 서버 간 낮은 지연 시간과 고속 데이터 처리지원을 한다.
    • 양방향 스트리밍을 활용해 AI 코드 생성 결과를 점진적으로 제공함으로써 빠르고 자연스러운 사용자 경험을 제공한다.
    • 대용량 코드 생성 시에도 동시 처리를 통해서 빠른 응답 생성이 가능하다.
  • RunPod Serverless 기반 운영으로 비용 절감
    • 자원을 요청 시에만 활성화하므로, Serverful 방식에 비해 비용 효율성이 더욱 뛰어나다.
    • 자동 스케일링을 지원하여 요청 증가 시 확장, 요청 없을 시 자동 종료로 효율적인 자원 관리가 가능하다.
  • 보안 강화된 AI 코드 생성
    • 정적/동적 분석 기법을 활용해 AI가 생성한 코드의 보안성 사전 검증이 가능하다.
    • OWASP Top 10을 기반으로 보안이 강화된다.
    • 보안 취약점(인젝션, 인증 우회 등) 자동 필터링으로 안전한 코드를 제공한다.
    • 실제 운영 환경에 적용해도 안전한 수준의 코드 생성으로 기업 및 기관 환경에도 적용 가능하다.

경제적, 사회적 기대 및 파급효과

  • Code Generation LLM을 통해 생성된 코드에서 생길 수 있는 보안 취약점을 최대한 방어하여 안전한 코드를 만들 수 있다.
  • LLM의 가중치 및 학습 기법, 데이터를 공유하여 LLM의 Code Generation에 관련된 학술적 발전을 도모할 수 있다.
  • VSCode Extension으로 제공됨으로써, 모든 개발자들이 별도의 환경 설정 없이 쉽게 설치하고 사용할 수 있으며 개발자 일상에 자연스럽게 녹아든 보안 중심 AI coding copilot 대중화가 가능하다.

기술개발 일정 및 추진체계

가. 개발 일정

분야 단계별 세부개발 내용 담당자 3월 4월 5월 6월 비고
서비스 요구사항 분석 박찬, 오유찬, 유지호
Server Architecture 설계 박찬
Infrastructure 설계 유지호
UI 디자인 오유찬
AI 모델 서버 프로토타입 제작 박찬, 유지호
OWASP 벤치마킹 데이터 제작 오유찬
VS Code Extension 개발 오유찬
서버 구축 박찬, 유지호
AI 서버 개발 박찬
Infrastructure 구축 유지호
VS Code extension – 서버 연동 박찬, 오유찬
단위 테스트 오유찬
배포 박찬, 오유찬, 유지호
성능 최적화 박찬, 유지호
서비스 테스트 박찬, 오유찬, 유지호
AI Code generation LLM architecture 경민수
Benchmarking metric 김세연
Training & Inference Server Setting 경민수
Code generation baseline LLM Testing 경민수
Training data curation 김세연, 오석훈
Benchmarking metric pipeline implementation 경민수
Training data Argumentation 김세연
Code generation LLM Training 김세연
Code generation LLM prompting 경민수
Research Test-Time Scaling 경민수
Benchmarking 김세연
Connect with Server 경민수, 김세연
문서 프로젝트 관련 문서 정리 오석훈

구성원 및 추진체계

팀원 역할 및 담당 업무

◇ PM & Backend Developer : 박찬

  • 프로젝트 일정 및 진행 관리
  • 팀원 간 협업 조율 및 의사 결정
  • Service Server & AI Model Server 구축
  • REST API 설계 및 구현, gRPC 및 SSE 기반 실시간 스트리밍 통신 기능 구현
  • OWASPCodeEval 개발

◇ Frontend & Security Engineer : 오유찬

  • TypeScript 기반 UI 개발
  • VSCode API 활용하여 Extension 개발
  • CWE 기반 보안 취약점 탐지 및 분석
  • OWASPCodeEval 개발

◇ DevOps/Infra Engineer : 유지호

  • 서버 및 네트워크 인프라 구축 및 운영
  • AI Model Server 개발 (runpod-vllm customizing)
  • CI/CD 파이프라인 설계
  • OWASPCodeEval 개발

◇ AI Engineer : 경민수, 김세연

  • Training & Inference Server Setting
  • Code generation baseline LLM Testing
  • Code generation LLM prompting
  • OWASPCodeEval 개발

◇ Management : 오석훈

  • 회의 내용 요약 및 정리
  • 프로젝트 관련 문서 작성 및 관리
  • 비용 예산 수립 및 관리

설계

사용자의 요구사항

◇ R1: 일반 텍스트 응답 처리

  ● 사용자는 일반적인 텍스트를 입력하여 AI 모델의 응답을 받을 수 있어야 한다.
  ● 시스템은 입력된 텍스트를 기반으로 응답을 생성하여 실시간으로 스트리밍하고 사용자에게 반환해야 한다.

◇ R2. 보안 리팩토링 요청 처리

  ● 사용자는 보안 코드 리팩토링을 요청할 수 있어야 한다.
  ● 시스템은 보안 프롬프트로 변환 후 AI 모델을 통해 리팩토링된 코드를 응답 형식으로 사용자에게 제공해야 한다.

◇ R3. 프롬프트 유효성 검증 기능

  ● 시스템은 사용자가 입력한 프롬프트가 유효한지 사전 검증하여, 잘못된 요청은 필터링해야 한다.
  ● 유효성 검사를 통과한 프롬프트만 모델 요청으로 전송되어야 한다.

◇ R4. 보안용 프롬프트 변환 기능

  ● 시스템은 보안 요청에 대해 입력된 텍스트를 보안 분석에 적합한 프롬프트로 변환할 수 있어야 한다.

◇ R5. GPT 프롬프트 변환 기능

  ● 시스템은 사용자가 입력한 일반 텍스트 또는 코드 요청을 GPT 모델에 적합한 형식으로 자동 변환해야 한다.

◇ R6. 이미지 업로드 및 저장 기능

  ● 사용자는 보안 코드 또는 설명을 위한 이미지를 업로드할 수 있어야 하며, 시스템은 이를 저장 및 전처리해야 한다.

◇ R7. 이미지 설명 생성 기능

  ● 시스템은 업로드된 이미지를 OpenAI GPT API와 연동하여 자연어로 설명된 텍스트를 생성할 수 있어야 한다.

◇ R8. 로그인 인증 기능

  ● 사용자는 시스템에 로그인할 수 있어야 하며, 백엔드는 사용자 인증 처리를 수행해야 한다.


사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량목표

제품 요구사항

LLM 모델 아키텍쳐 및 설계 기준
  • Qwen-2.5-Coder 시리즈 (0.5B, 1.5B, 3B, 7B, 14B, 32B 파라미터)를 사용한다.
  • 모델 성능 비교 지표: HumanEval(OpenAI), BigCodeBench(ICLR 2025) 벤치마크를 활용한다.
  • 파라미터 크기에 따른 응답 속도 및 코드 품질을 비교한다.
  • 양자화 (AWQ, GGUF, GPTQ) 및 LoRA (Low-Rank Adaption) 적용 가능성을 평가한다.
  • 대용량 파라미터 + LoRA Training vs 소용량 파라미터 + Full-parameter Training 비교
  • Baseline과 Instruction 세팅 비교 및 학습 데이터셋 차이 분석을 한다.
성능 및 효율성 평가
  • 목표 응답 시간: 30초 이내
  • DDPM (Denoising Diffusion Probability Model) 입력 테스트를 진행한다.
  • 파라미터 크기별 응답 시간 측정 (평균 10회, 표준편차 포함):
    • 0.5B : 20.37초 (표준편차 17.455)
    • 1.5B : 24.22초
    • 7B : 24.34초
    • 14B : 50.54초
    • 32B : 177.0초

기능 구현을 위한 세부기술 선택사항 (디자인)

  • Qwen2.5-Coder: Alibaba에서 발표한 Code Generation에 특화된 LLM
  • Reinforcement Learning from Human Feedback (RLHF): LLM Aligning을 위한 강화학습기법
  • Kahneman-Tversky Optimization (KTO), Direct Preference Optimization (DPO): LLM Aligning을 위한 학습 기법
  • Vulnerability-Fix dataset (JIS College of Engineering, 2025)
  • OpenCodeInstruct (Nvidia, 2025)
  • Distributed Data Parallel
  • gRPC: LLM 응답 스트리밍 최적화
  • Runpod Serverless: 비용 효율성과 확장성 확보

시스템 설계

  • OWASP Top 10 기반 보안 강화 코드 자동 생성
  1. 취약한 접근 제어 (Broken Access Control): 권한이 없는 사용자가 민감한 데이터나 기능에 접근할 수 있도록 허용하는 취약점이다.
  2. 암호화 실패 (Cryptographic Failures): 민감한 데이터가 안전하게 암호화되지 않아 유출될 수 있는 취약점이다.
  3. 인젝션 (Injection): SQL, OS, LDAP 등 다양한 명령어에 악의적인 데이터를 삽입해 시스템을 조작하는 취약점이다.
  4. 불안전한 설계 (Insecure Design): 설계 단계에서부터 보안이 고려되지 않아 발생하는 취약점이다.
  5. 잘못된 보안 구성 (Security Misconfiguration): 서버, 데이터베이스, 애플리케이션 등의 보안 설정이 미흡하거나 기본값을 그대로 사용하는 경우 발생하는 취약점이다.
  6. 취약하고 오래된 구성 요소 (Vulnerable and Outdated Components): 이미 알려진 취약점이 있는 라이브러리, 프레임워크, 소프트웨어 등을 사용하는 경우 발생한다.
  7. 식별 및 인증 실패 (Identification and Authentication Failures): 인증 및 세션 관리가 부실해 공격자가 다른 사용자의 신분을 도용할 수 있는 취약점이다.
  8. 소프트웨어 및 데이터 무결성 실패 (Software and Data Integrity Failures): 무결성을 검증하지 않은 소프트웨어 업데이트, 중요 데이터 변조, CI/CD 파이프라인의 신뢰성 부족 등에서 발생한다.
  9. 보안 로깅 및 모니터링 실패 (Security Logging and Monitoring Failures): 보안 이벤트를 제대로 기록하거나 모니터링하지 않아 공격 발생 시 신속한 탐지와 대응이 어려운 취약점이다.
  10. 서버 측 요청 위조 (Server-side Request Forgery, SSRF): 공격자가 서버를 속여 내부 시스템에 비정상적인 요청을 보내도록 유도하는 취약점이다.
  • 코드 생성 품질 및 웹(사이버) 보안, 프롬프트 보안 관점에서 데이터 큐레이션 및 평가 수행


데이터
  • OpenCodeInstruct (링크):
    • 코드 특화 LLM의 성능을 높이기 위한, 2025년 6월까지 공개된 최대 규모의 Open Code Instruction Tuning 데이터셋이다.
    • 샘플 구조:
      • 프로그래밍 질문(instruction), 코드 솔루션(정답 코드), 자동 생성된 테스트 케이스, 코드 실행 결과(테스트 통과 여부), LLM이 평가한 품질 점수 및 피드백 포함
      • 143만 개의 일반 코딩 인스트럭션 (OSS-INSTRUCT 프레임워크 기반, Python 함수 기반)
      • 2만 5천여 개의 알고리즘 문제 (TACO 데이터셋 기반, LeetCode, AtCoder 등에서 수집)
    • 합성 데이터 생성:
      • SELF-INSTRUCT, EVOL-INSTRUCT 등 최신 합성 기법을 결합한 GENERIC-INSTRUCT 프레임워크 기반 문제/해답 생성
      • 중복 제거, 테스트 통과 여부, LLM 품질 평가로 데이터 품질 관리
      • Qwen2.5-Coder-32B-Instruct 등 고성능 LLM을 이용해 코드 솔루션과 단위 테스트 생성 및 통과율 메타데이터 기록
    • 품질 평가 및 중복/오염 제거:
      • LLM-as-a-judge 방식으로 요구사항 충족도, 논리적 정확성, 엣지 케이스 고려 여부 평가
      • n-gram 기반 중복 제거 및 벤치마크 데이터셋과의 오염(decontamination) 방지
  • Vulnerability-Fix dataset (링크):
    • 각 데이터 항목에 취약한 코드와 수정된 코드 쌍이 존재하여 비교·분석 가능
    • 실제 오픈소스 프로젝트 Git 저장소 커밋 정보 기반
    • 각 취약점은 CVE ID, CWE 유형, 심각도 등 보안 표준 기반 주석 포함
벤치마크
  • Python 코드의 대표적인 정적 분석 도구인 Bandit을 활용한다.
  • OWASP Top 10을 기반으로 직접 제작한 코드 보안 검증 벤치마크를 활용한다.


이론적 계산 및 시뮬레이션

LLM Architecture

  • 모델명: Qwen2.5-Coder-Instruct
  • 기반 구조: Transformer 기반 Code-generation Instruction-tuned LLM
  • 목표: 긴 코드 문맥에 대해 정확하고 문맥 보존이 뛰어난 응답을 생성
  • 특징 구성요소:
    • Rotary Position Embedding (RoPE)
    • SwiGLU (Switchable Gated Linear Unit)
    • RMSNorm (Root Mean Square Normalization)
    • Attention QKV Bias

Rotary Position Embedding (RoPE)

  • 설계 목적
    • 기존의 절대 위치 기반 positional encoding의 한계를 극복
    • 상대적 위치 정보 내재화를 통해 긴 문맥에서도 안정적인 generalization 확보
  • 작동 방식
    • Query 및 Key에 다음과 같은 회전 연산을 적용한다:
RoPE(xi) = Ri * xi
    • 여기서 Ri는 각 위치 i에 대해 구성된 주파수 기반 2차원 회전 행렬이다.
    • 이 회전 행렬은 각 위치에 대한 사인/코사인 주기를 갖는 다차원 주파수를 기반으로 하며, 입력 벡터를 위치에 따라 회전시키는 방식으로 상대 위치 정보를 부여한다.
  • 효과
    • 길이 외삽 능력 향상 (Length Extrapolation)
    • Attention 연산 시 상대 위치 차이를 반영 가능
    • 코드 포맷(들여쓰기, 블록 구조 등)의 위치 관계 유지에 유리

SwiGLU (Switchable Gated Linear Unit)

  • 설계 목적
    • 기존 GELU/ReLU 기반 FFN 표현력 한계 극복
    • 게이트 기반 동적 표현 제어를 통해 정보 흐름 정밀 조절
  • 계산 구조
    • SwiGLU의 계산식은 다음과 같다:

SwiGLU(x) = (ar₁(x) · SiLU(ar₂(x)))

    • 여기서 SiLU(Sigmoid Linear Unit)는 다음과 같이 정의된다:

SiLU(x) = x · σ(x)

    • 두 개의 선형 변환 결과를 곱함으로써 비선형성을 증가시키고, 게이팅 효과를 통해 중요한 정보를 강조한다.
  • 효과
    • 중요 정보의 동적 강조 가능
    • 논리 흐름, 조건문 등 구조적 코드 요소 반영에 효과적
    • 학습 속도 및 수렴 안정성 개선

RMSNorm (Root Mean Square Normalization)

  • 설계 목적
    • LayerNorm의 평균 정규화 한계 및 계산량 문제 해결
    • 간단한 RMS 기반 정규화로 연산 최적화
  • 수식 구조
    • 평균 제거 없이 L2 norm 기반 스케일링 수행

SNorm(x) = x / sqrt((1/d) * Σ_{i=1}^{d} x_i^2 + ε)

    • γ는 학습 가능한 파라미터, ε는 수치 안정성을 위한 작은 상수
  • 효과
    • 계산량 감소 및 메모리 사용 최적화
    • Pre-norm 구조에서 안정적인 학습 가능
    • 코드 토큰의 정보 손실 최소화

Attention QKV Bias

  • 설계 목적
    • Query, Key, Value에 학습 가능한 bias vector 추가
    • 표현력 유연하게 확장
  • 계산 구조
    • Attention 입력에 각각 bias vector를 더하는 방식 적용

Q' = Q + b_Q, K' = K + b_K, V' = V + b_V

    • 여기서 b_Q, b_K, b_V는 각각 Query, Key, Value에 대응하는 학습 가능한 bias vector이다.
  • 효과
    • Attention map의 정밀 조정 및 fine-tuning 가능
    • Instruction과 코드 segment 간 역할 차이 반영
    • 함수, 변수, 키워드 등 토큰의 문법·기능별 Attention 분포 조정 가능

전체 LLM 아키텍처 요소 효과 정리

구성 요소 설계 목적 모델 효과 코드 처리에서의 유용성
RoPE 상대 위치 정보 내재화 긴 문장 대응, 위치 해석 개선 들여쓰기/블록 구조 이해
SwiGLU 동적 게이팅 표현력 향상, 학습 안정화 논리적 흐름 반영
RMSNorm 경량 정규화 연산 최적화, residual 흐름 유지 정밀 표현 손실 방지
QKV Bias Attention fine-tuning 구문 차이 민감도 증가 코드 의미/역할 강조

Supervised Fine-Tuning (SFT)

  • 주요 특징 및 목적
    • 지도학습 기반: 입력(Prompt)과 그에 대한 정답(Output)이 명확히 주어진 데이터셋 사용한다.
    • 도메인 및 작업 특화: 의료, 법률, 고객 상담 등 특정 분야의 전문 용어나 문맥을 이해하도록 모델을 훈련한다.
    • 성능 향상 : 범용 모델보다 특정 작업에서 더 높은 정확도와 적합성을 보인다.
    • 효율성 : 모델을 처음부터 다시 학습시키는 것보다 훨씬 적은 데이터와 계산 자원으로 원하는 성능을 얻을 수 있다.
  • SFT의 데이터 형식
    • 일반적으로 “질문-답변” 또는 “명령-응답” 쌍으로 이루어진 데이터셋을 사용한다.
    • 예시와 같은 형식의 데이터를 수천 ~ 수만 개 모아 학습에 활용한다.
  "instruction": "육아휴직은 얼마나 쓸 수 있나요?",
  "output": "최대 1년까지 가능합니다. 회사 내규를 참고하세요."
  • SFT의 한계 및 고려사항
    • 데이터 품질에 크게 의존하며, 고품질의 라벨링 데이터셋 구축에 비용이 많이 들게 된다.
    • 모든 데이터를 동일하게 다루므로, 데이터 내 중요도나 선호가 반영되지 않는다.
    • 모델의 모든 파라미터를 업데이트하는 Full-parameter Fine-Tuning 방식과, 일부 파라미터만 조정하는 PEFT(LoRA, QLoRA) 방식이 존재한다.


VSCode Extention - Conceptual Design

Use Case Diagram

Castleusecase.png

ERD

Castleerd.png

Package Diagram

Castkepackagde.png

  • 모듈 계층과 역할
    • common– 전역 DTO·상수·예외만 담는 최하위 공용 모듈 (다른 모듈에 의존X).
    • core– 도메인 로직(entity · repository · service) 모듈, common만 참조.
    • infra– 외부 시스템(S3, RunPod, OpenAI) 어댑터 구현, core+common의존.
    • api – controller · security 등 프레젠테이션 계층, infra+core+common 의존.
  • 의존 방향은 common ← core ← infra ← api로만 흐르며, 상위 계층이 하위 계층을 거스르지 않도록 계층 분리를 유지합니다.
System architecture

Castlearchi.png

  • AWS를 사용하여 클라우드 인프라 구축
  • Github Actions를 구성하여 Backend CI/CD구성
  • 이미지 저장, 관리를 위해 S3 사용
  • 이미지 처리를 위해 OPEN AI(GPT-4.1-mini) 사용
  • 대화 기록 관리 및, LLM의 문맥유지, AWS호환성을 고려해 RDS DB 구성
  • Runpod의 기본 Docker Image(worker-vllm)를 커스텀하여 gRPC통신 구성

상세설계

VSCode Extention - Detailed Design

Sequence Diagram
    • Login Sequence Diagram

Castleloginsequence.png

    • User Input Processing Sequence Diagram

Castleinput.png

    • Security Refactoring Sequence Diagram

Castlerefacsequence.png

    • Image Processing Sequence Diagram

Castleimage.png

State Diagram

[대기 & 입력 수신] 백엔드가 클라이언트의 api 요청을 기다리다가 요청 오면 입력을 저장·검증합니다.

[이미지 처리(선택적)] 입력에 이미지가 있으면 GPT OCR을 호출해 추출한 텍스트를 프롬프트에 합칩니다. 이미지가 없으면바로 다음 단계로 넘어갑니다.

[RunPod 호출] 정제된 프롬프트를 REST로 RunPod에게 전송합니다.

[RunPod 응답 & gRPC 스트리밍] RunPod가 LLM응답을 준비한 뒤 gRPC스트리밍을 시작해 토큰 단위로 백엔드에 흘려보냅니다.

[응답 전달 및 저장] 백엔드는 스트리밍된 토큰을 SSE를 통해 클라이언트에게 전달하고, 대화 기록을 DB·세션에 저장합니다.

[대화 종료 또는 지속] 클라이언트가 대화를 끝내면 종료, 아니면 동일 흐름으로 다음 입력을 처리합니다.

Castlestatedia.png

Activity Diagram

[VSCode extension]

1. 사용자가 VSCode확장에 로그인(또는 회원가입)을 수행한다.

2. 보안 리팩토링 요청 or 입력창에 프롬프트 입력

[백엔드 처리]

3. 백엔드가 사용자의 입력을 받는다.

4. 입력 안에 이미지가 포함되어 있는지 확인한다.• 예 → GPTAPI를 이용해 OCR(문자 추출)을 수행한 뒤, 결과 텍스트를 프롬프트에 덧붙인다.• 아니오 → 바로 다음 단계로 진행한다.

5. 완성된 프롬프트를 RunPod서버로 전달한다.

[RunPod 처리]

6. RunPod환경에서 gRPC서버가 동작 중이며, 프롬프트를 수신한다.

7. LLM모델이 해당 프롬프트를 처리후 응답을 생성한다.

8. 생성된 응답을 gRPC스트리밍으로 백엔드에 흘려보낸다.

[응답 후속 처리]

9. 백엔드가 수신한 대화 내용을 데이터베이스(DB)에 저장한다.

10. 사용자(확장클라이언트)에게 응답을 전달한다.

11. 같은 내용을 세션 기록에도 저장한다.

12. 사용자가 응답을 확인하고 작업이 종료된다.

Castleactivityy.png

Class Diagram

Castleaclass.png

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

◇ vscode extension 로그인 화면

Castlelogind.png

◇ code generate 기능

Castlegenerated.png

◇ security refactoring 기능

1. 마우스 우측 버튼 클릭 후 Castle Coder : Security Refactoring 옵션 선택

Castlerefactdor.png

2. 답변 : 보안 취약점이 수정된 코드와 그에 대한 설명 - 보안 리팩토링 시 전체 코드 전송

Castlerefactodrcode.png

- 보안 취약점이 진단 후 수정된 코드

Castlerefactodrout.png

- 진단한 취약점과 그에 대한 보완점 설명

Castlerefactodrexplain.png

설치 (configuration)

Castle Coder

CastleCoderMadrket.png

OWASPCodeEval

OWASPCodeEval.png

관련사업비 내역서

(단위 : 천원)
항 목
(품명, 규격)
수 량 단 가 금 액 비 고
현금
RunPod 충전 1 183.40 183.40
GPT Teams 구독 1 158.92 158.92
OpenAI API 1 7.98 7.98
AWS 서버비 1 21.62 21.62 6월 추가금액 발생|
회의비 1 117.7 117.1
합 계 488.02

완료작품의 평가

평가 항목 평가방법 적용기준 개발목표치 비중 (%) 평가결과
1. 자체 제작 보안 시나리오 318개 보안 시나리오 기반의 취약점 자동 탐지 수행 Vulnerability rate ≤30% 40 32.7%
2. bandit AI가 생성한 코드 대상 취약점 정적 분석 도구(bandit) 실행 Average occurrence ≤ 1 평균 발견 취약점 수 ≤ 0.3건 10 평균 발견 취약점 0.31건
3. 사용자 평가 사용자 설문 사용성, 실용성 7점만점 중 평균 5점 이상 10 5.65
4. 서버 성능 평가
  • Load Test
  • Stress Test
  • Spike Test
  • Overall p95 latency
  • Overall http_req_failed
  • 95% 응답 지연시간 p95 < 60초
  • http_req_failed < 5%
  • 20건의 동시 요청에 대한 안정적 지속 처리
  • 최대 50건의 동시 요청 처리 가능 여부
40
  • p95 = 44.41초
  • http_req_failed = 0%
  • 20건의 동시 요청을 5분동안 안정적 처리
  • 50건의 동시 요청 처리 가능

향후평가

가. 어려웠던 내용들

  • LLM의 code generation의 구현 및 OWASP Top 10 기반 보안성 강화를 올리기 위한 학습 데이터셋 중 공개된 것이 적다.
  • 7B 파라미터 사이즈 이상 code generation LLM을 이용하기 위한 GPU 자원이 부족
  • 학습 데이터 규모 및 파라미터 설정(학습률, 에폭수, 배치사이즈 등)을 블랙박스로 진행하는데 어려움
  • extension을 개발하는 도중에 VSCode에서 사용되는 문법과 특징을 알지 못했기에 어디에서 문제가 발생하는지를 찾기 위해서 많은 시간이 소요
  • Runpod custom의 동작방식: runpod custom을 시작할 때는 runpod의 document가 미흡한 상태였어서 정확한 매커니즘을 계속 시도해보며 찾을 수밖에 없었다.
  • gRPC 서버 생명주기 관리 어려움
  • 비동기 처리 복잡성: gRPC 스트리밍, SSE 푸시, Redis 조회가 모두 비동기로 얽혀 있어, 콜백·Promise 체인이 복잡해지고 예외 처리가 어려웠음.

나. 차후 구현할 내용

  • LLM의 code generation 및 보안성 강화에 특화된 학습 데이터셋 개발
  • LLM의 code generation 및 보안성 강화에 특화된 학습 기법 개발
  • LLM의 code generation 및 보안성 강화 성능을 올리기 위한 프롬프트 엔지니어링 강화
  • 정적 분석을 이용한 보안 그래프토링이 끝나고 서버 기동 조건을 만족 시에 CLI에서 작동하는 동적 분석 툴을 이용해서 최종 진단
  • Qwen 모델의 도구호출 기능과 MCP 통합
  • 현재 EC2 기반 Docker 환경에서, 사용자 증가에 대비해 K8s 클러스터로 전환하여 자동 스케일링·무중단 배포를 지원할 계획
  • 자주 묻는 프롬프트·반복 토큰 시퀀스에 대해 Redis 캐시를 도입하고, 대규모 배치 요청은 큐 기반 비동기 처리로 전환해 처리량을 향상