요약 - 프로그램 코드 분야에서 생성형 AI를 이용한 코드 생성 및 보정, 번역이 활발히 진행중
- 생성형 AI를 이용해 프로그램 소스코드의 취약점 탐지
내용 - 언어모델(Language Model)
> 인간의 언어를 이해하고 이를 생성하려는 모델
> 사전학습: 대용량의 데이터를 학습해 언어 이해를 위한 파라미터를 구축
> 미세조정 학습: 실제 사용자의 목적에 맞는 입·출력 데이터를 학습

- 프로그램 코드를 작업하려면 코드와 자연어를 함께 이해하는 언어모델이 필수
> 대표적 언어모델: CodeBERT, CodeT5, PLBART 등
> 코드 요약, 코드 생성, 코드 번역, 코드 유사성 검사, 소스코드 취약점 탐지 등의 역할
① 코드 요약
> 입력된 코드에 대한 자연어로 구성된 설명을 생성
> 사용자는 코드를 직접 읽지 않고 코드 요약을 받을 수 있음

② 코드 생성
> 코드의 자연어 설명에 기반해 프로그램 코드를 생성

③ 코드 번역
> 입력받은 코드를 다른 프로그래밍 언어의 코드로 생성

④ 코드 유사성 검사
> 입력된 두 코드의 유사성을 탐지
> 구조는 다르나 의미상 비슷한 코드도 탐지 가능

⑤ 소스코드 취약점 탐지
> 기존 정적ㆍ동적 소스코드 취약점 보다 상대적으로 짧은 시간에 취약점 탐지 및 사전 대응 가능
> 구별형 모델을 이용한 방식과 생성형 모델을 이용한 방식은 탐지 과정에 차이를 보임

⒜ 구별형 언어모델 활용(Ex, BERT 모델)
> 구별형 언어모델은 입력된 언어를 바탕으로 분류나 회귀 분석에 사용

> 학습 단계
 - 취약점과 해당 취약점이 포함된 코드 데이터를 수집 및 전처리(불피요한 부분 제거, 연관성 없는 변수 대체) 후 최종 코드 데이터 구축
 - 구축된 취약점과 코드 데이터는 임베딩 과정을 통해 벡터로 변환
 - 언어모델의 미세학습 과정을 통해 모델 구축 및 별도 평가 데이터로 모델 성능 평가

> 탐지 단계
 - 실제 사용자가 제시한 코드를 입력 받아 전처리 및 임베딩 과정 후 취약점 유무와 예상되는 취약점 도출
※ 취약점 탐지에 중요한 코드 구조를 놓칠 수 있어 코드를 벡터로 변환 시 코드 내 변수별 관계성을 표현하는 방법이 제안 -> 정확한 취약점 부분을 예상

⒝ 생성형 언어모델 활용
> 전처리 -> 프롬프트 튜닝 -> 학습 단계 -> 탐지 단계
> 프롬프트 튜닝
 - 사전에 입력과 모델의 답변 형태를 지정해 모델이 원하는 답변을 유도하기 위함
 - 코드 질의와 취약점 응답 형식의 데이터 쌍을 만드는 과정을 진행
 - Zero-shot Prompting과 Few-shot Prompting로 나뉨

> 학습 단계
 - 프롬프트 튜닝을 거친 데이터의 임베딩 과정 후 미세조정 학습
 - 모델의 답변에서 취약점을 추출하는 후처리 과정으로 성능 평가
 ※ 성능에 따라 추가적인 전처리 및 학습 방법 변경 후 재학습 혹은 탐지 모델 구축

> 탐지 단계
 - 프롬프트 튜닝과 같은 과정을 거침
 - 이후 사용자가 제시한 코드를 질문 형태로 변환 후 임베딩 과정을 거쳐 질의해 의심 취약점을 제시
 - 대용량의 사전학습 단계를 진행한 모델이 사용돼 구별형 언어모델보다 유현한 답변을 얻을 수 있음
기타 - 소스코드 취약점 탐지 기술
> 코드 내 취약점을 사전에 탐지해 외부 공격을 방지하는 목적으로 연구

 

보안뉴스

 

[테크칼럼] 소스코드 이해해 취약점을 탐지하는 AI 언어모델

‘생성형 인공지능(생성형 AI)’의 시대다. 2022년 오픈AI(OpenAI)가 챗GPT를 공개한 이래 마이크로소프트 코파일럿(Copilot), 구글 제미니(Gemini)가, 국내에서는 네이버의 클로바X(CLOVA X), SK텔레콤의 에

www.boannews.com

 

+ Recent posts