[논문 리딩] LLM for Code

hwup·2025년 4월 8일

논문 읽기

목록 보기
3/6

대형 언어 모델(Large Language Models, LMs)이 코드 생성에 사용될 때 발생할 수 있는 보안 문제를 해결하기 위한 모델

두 가지 목표
1. introduce security hardening in order to enhance LM's ability to generate secure code: 보안 강화
2. explore the potential of degrading LMs' security level from an adversarial perspective: 적대적 테스트

controlled code generation

  • 프롬프트 외의 바이너리 함께 주입
  • 해당 바이너리가 코드가 안전한지 확인
  • sentiment, toxity

Challenges

  1. Modularity
    LLM 모델 크기가 크다보니 학습을 반복하는 것은 큰 비용을 수반.
    따라서 분리된 모듈을 이용하여 보안적인 통제 할 수 있도록 함.
    적은 양의 데이터를 학습시키기에 적합
  2. Functional Correctness vs. Security Control
    기능상 문제가 없는 코드는 유지되어야 함.
    Security hardening & adversarial testing 두 가지 만족하는 모델
  3. Ensuring High-quality Training Data

SVEN

LM의 가중치를 수정하지 않고 보안 속성을 조절할 수 있는 경량 모듈형 제어 기법

연속 prefix vectors

  • LM의 입력에 특수한 연속 벡터를 삽입
    해당 prefix는 보안 속성에 따라 상이(SVEN_sec, SVEN_vul)
  • Transformer 내부의 attention 매커니즘을 통해 코드 생성 전반에 영향

-> LM의 본래 파라미터 수정 없이 그대로 사용

SVEN: Interference, Training, and data

  • 기존 LMs의 가중치 건드리지 않고 새로운 연속 벡터를 추가해 모델 제어
  • 보안 속성에 따라 새로운 prefix vectors(연속 벡터)를 활용

학습 방식

  • GitHub Commits

세 가지 손실 함수

  • Conditional Language Modeling Loss(LLM)
    변경된 코드 영역(mask=1)에 보안 속성을 반영
  • Constrastive loss(LCT)
    SVEN_sec은 보안 코드/SVEN_vul은 취약한 코드 생성
    반대 속성(prefix)이 해당 코드를 생성하지 못하도록 학습
  • KL Divergence Loss (LKL)
    변경되지 않은 영역(mask=0)은 원래 모델과 동일하게 유지

-> SVEN은 코드 내 변경된 지역만 타겟팅

데이터셋

  • 9개의 주요 CWE 취약점 범주에 대해 수작업으로 1,696개 프로그램(803쌍) 수집
  • CorssVul, Big-Vul, VUDENC 데이터셋에서 시작해 정재

SVEN:Use cases

GHCP 비교

항목GHCPSVEN
동작 방식코드 생성 후 필터링코드 생성 중 제어
적용 시점후처리(Post-generation)추론 시점(Interference)
지원 CWECWE-089, CWE-022, CWE-798(3개)최근 9개 주요 CWE
오픈 여부비공개오픈 소스

적대적 테스트(Adverserial Testing)

  • LM이 보안 취약한 코드를 생성하도록 유도
  • 모델의 보안성 시험 및 취약점 파악 목적

실험

profile
Level up!

0개의 댓글