실시간 코드 보안을 위한 단계별 보상 모델 SecCodePRM
초록
SecCodePRM은 코드 작성 과정에서 단계별로 보안 점수를 부여하는 프로세스 보상 모델이다. 정적 분석기와 전문가 라벨을 이용해 단계 수준의 학습 데이터를 생성하고, 위험‑중심 가중합을 통해 전체 코드와 부분 코드 모두에서 취약점을 탐지한다. 또한, 후보 생성 단계에서 누적 보상을 기준으로 탐색을 재배치함으로써 안전한 코드 생성을 실시간으로 지원한다. 실험 결과, 기존 정적 분석·LLM 기반 방법보다 취약점 탐지와 안전한 코드 생성 모두에서 우수한 성능을 보이며, 기능적 정확도는 유지한다.
상세 분석
SecCodePRM은 “프로세스 보상 모델”(Process Reward Model, PRM) 개념을 코드 보안에 적용한 최초 시도라 할 수 있다. 핵심 아이디어는 코드가 한 줄씩 혹은 논리적 블록 단위로 작성될 때마다 해당 단계가 보안에 미치는 영향을 정량화하는 점수 rₜ를 산출하는 것이다. 이를 위해 저자들은 정적 분석 도구(CodeQL 등)와 인간 전문가가 제공한 라벨을 활용해 단계‑레벨 안전 라벨 yₜ를 자동 생성한다. 라벨링 파이프라인은 AST 기반 토큰화와 코드 블록 구분자를 이용해 원본 코드를 의미론적으로 일관된 단계로 분할하고, 각 단계에 대해 ‘안전’(+)과 ‘취약’(–) 두 클래스의 로짓 마진을 softmax로 변환한 뒤 차이를 rₜ=softmax(hₜ⁺)−softmax(hₜ⁻) 형태로 정의한다. 이 마진은 –1에서 +1까지의 범위를 가지며, 급격한 하락은 새로운 취약점이 도입됐음을 의미한다.
탐지 단계에서는 모든 rₜ를 위험‑중심 가중합 R=∑ₜ wₜ·rₜ 로 집계한다. 여기서 wₜ=exp(–rₜ/τ)/∑ⱼexp(–rⱼ/τ) 로 정의된 온도 파라미터 τ는 낮은 점수(높은 위험)일수록 큰 가중치를 부여한다. 따라서 전체 코드가 완전하든 부분 코드 프리픽스이든 위험도가 높은 구간이 전체 판단에 크게 반영된다.
생성 단계에서는 PRM을 “인퍼런스‑타임 스케일링”에 활용한다. 후보 토큰 K개를 생성한 뒤, 각 후보에 대해 rₜ를 계산하고 평균 E
댓글 및 학술 토론
Loading comments...
의견 남기기