[지디넷코리아]

깃허브 코파일럿, 챗GPT 같은 AI 코드 생성 도구가 다른 사람의 코드를 무단으로 학습했는지 확인하는 기술이 간단한 방법으로 무력화될 수 있다는 연구 결과가 나왔다. 특히 코드에서 변수 이름만 바꿔도 ‘AI가 이 코드로 학습했는지’ 확인하는 탐지 성공률이 최대 10% 이상 떨어지는 것으로 확인됐다. 미국 노스캐롤라이나 주립대학교 연구팀은 AI가 남의 코드를 몰래 학습하고도 들키지 않을 수 있는 심각한 허점을 발견했다고 밝혔다.
변수명 바꾸자 탐지 실패
연구팀이 발견한 문제는 이렇다. AI 모델이 어떤 코드로 학습했는지 확인하는 기술을 ‘멤버십 추론’이라고 부른다. 마치 “이 사진이 AI 학습 데이터에 포함됐나요?”라고 묻는 것과 같다. 그런데 코드의 경우, 변수 이름만 살짝 바꿔도 이 탐지 기술이 제대로 작동하지 않는다는 것이 밝혀졌다. 이때 변수란 프로그래밍에서 데이터를 저장하는 공간에 붙이는 이름표다. 고객 정보를 담는 공간에 customerData(고객데이터)라는 이름을 붙이는 식이다.
실제 예를 들어보자. 원본 코드에 INSTANCE라는 변수가 있다고 치자. 이 코드를 AI가 학습하면, 나중에 “이 코드를 학습했나요?”라고 물었을 때 탐지 시스템이 “네, 학습했습니다”라고 정확히 찾아낸다. 그런데 똑같은 코드에서 INSTANCE를 nggqvDi7ku 같은 무작위 문자로 바꾼 뒤 AI를 학습시키면, 탐지 시스템이 “아니요, 학습 안 했습니다”라고 잘못 판단한다. 코드가 하는 일은 100% 똑같은데도 말이다.
딥시크 코더(deepseek-coder-1.3b)라는 AI 모델로 실험한 결과, 변수명을 바꾼 코드로 학습시키자 탐지 성공률이 95.36%에서 85.17%로 떨어졌다. 무려 10.19%나 감소한 것이다. 반면 AI 모델의 실제 코드 작성 능력은 0.63%밖에 떨어지지 않았다. 다시 말해, AI 성능은 거의 그대로 유지하면서 “남의 코드를 훔쳐 썼다”는 증거만 지울 수 있다는 뜻이다.
코드GPT라는 다른 AI 모델에서도 비슷한 결과가 나왔다. 변수명만 바꿨는데 탐지율이 7.99% 떨어졌고, AI 성능 저하는 1.50%에 불과했다. 연구팀은 경험 많은 프로그래머 4명에게 변수명을 바꾼 코드를 보여줬다. 프로그래머들은 “읽기 어렵다”, “일반적인 코딩 방식이 아니다”라고 평가했다. 즉, 사람이 보기엔 이상하지만 AI는 별문제 없이 학습한다는 것이다.
8개 AI 모델 실험… 큰 모델일수록 속이기 어렵지만 여전히 취약
연구팀은 코드GPT, 코드젠, 딥시크 코더, 스타코더2, 코드라마 등 총 8개 AI 모델로 실험했다. 깃허브에 공개된 자바 코드 약 1만 5천 개를 모아 원본 그대로 학습시킨 AI와, 23가지 방법으로 코드를 살짝 변형한 뒤 학습시킨 AI를 비교했다. 23가지 변형 방법에는 변수명 바꾸기 외에도 ‘for 반복문을 while 반복문으로 바꾸기’, ‘if-else 문장 순서 바꾸기’, ‘상숫값을 수식으로 바꾸기’ 등이 포함됐다. 모두 코드가 하는 일은 똑같지만 겉모습만 살짝 다르게 만드는 기법들이다.
실험 결과 138개 테스트 중 135개에서 AI 성능 저하가 1% 이내였다. 가장 심하게 떨어진 경우도 1.5%에 불과했다. 즉, 코드를 살짝 변형해도 AI는 거의 정상적으로 작동한다는 뜻이다. 흥미로운 점은 AI 모델이 클수록 이런 속임수에 덜 넘어간다는 것이다. 파라미터가 70억 개인 대형 모델(코드라마-7b, 스타코더2-7b)은 모든 변형 방법에 대해 탐지율 변화가 1.54% 미만이었다. 반면 30억 개 이하 소형 모델들은 변형에 더 취약했다. 같은 구조를 가진 스타코더2-3b와 스타코더2-7b를 비교하니, 큰 모델이 훨씬 강한 저항력을 보였다.
그래도 변수명 바꾸기(규칙 1번)는 모든 모델에서 가장 효과적인 회피 방법이었다. 8개 모델 중 6개에서 1등, 나머지 2개에서도 상위 3위 안에 들었다. ‘상수를 수식으로 바꾸기(규칙 13번)’도 강력했다. 딥시크 코더에서 탐지율을 7.24% 낮췄고, 8개 모델 중 6개에서 상위 4위 안에 들었다.
“남의 코드 훔쳐도 안 들킨다”… 오픈소스 생태계 신뢰 위협
이번 연구가 중요한 이유는 AI 업계의 ‘라이선스 준수 감시’에 큰 구멍이 있다는 걸 보여줬기 때문이다. 깃허브에는 수백만 개의 오픈소스 코드가 있는데, 이 중 상당수는 “마음대로 쓰면 안 된다”는 조건이 붙어 있다. 대표적으로 GPL 라이선스는 “이 코드를 쓰면 당신 코드도 공개해야 한다”는 조건을 단다. 그런데 AI 기업들이 이런 제한된 코드를 몰래 학습 데이터로 쓰면 어떻게 될까? 법적으로 문제가 될 수 있다. 이를 감시하기 위해 ‘멤버십 추론’이라는 기술이 개발됐다. “이 코드가 AI 학습에 사용됐나요?”라고 확인하는 일종의 탐지기다.
하지만 이번 연구는 이 탐지기가 너무 쉽게 속는다는 걸 증명했다. 악의적인 개발자가 제한된 코드를 가져와서 변수명만 살짝 바꾼 뒤 AI를 학습시키면, 탐지 시스템은 “문제없습니다”라고 오판한다. AI 성능은 거의 그대로인데 증거만 사라지는 셈이다. 실제로 2024년 다른 연구(Katzy 등)에서는 106개 오픈소스 AI 모델의 학습 데이터를 조사했더니, GPL 같은 제한 라이선스 코드가 대량으로 포함돼 있었다. 또 다른 연구(Majdinasab 등)는 AI가 생성한 코드를 분석해 보니 학습 데이터를 거의 그대로 복사한 경우가 많았다고 밝혔다.
현재 오픈AI의 코덱스(Codex)나 챗GPT 같은 상업용 AI는 학습 데이터를 공개하지 않는다. 무슨 코드로 학습했는지 확인할 방법이 없다는 뜻이다. 연구팀이 이런 모델을 실험 대상에서 뺀 이유도 이 때문이다.
해결책은? 코드의 ‘의미’를 파악하는 새 기술 필요
연구팀은 세 가지 방법을 제시했다.
첫째, 탐지 기술을 똑똑하게 만들어야 한다. 지금 탐지 시스템은 코드를 글자 그대로만 비교한다. 마치 ‘사과’와 ‘apple’을 완전히 다른 단어로 보는 것과 같다. 앞으로는 변수 이름 같은 건 중요하게 보지 말고, 코드가 실제로 ‘무엇을 하는지’에 집중해야 한다. 또 의심스러운 코드가 있으면 여러 방식으로 변형해서 반복 확인하는 방법도 있다.
둘째, AI 자체를 개선해야 한다. 현재 대부분의 AI는 코드를 단어 조각(토큰) 단위로 쪼개서 학습한다. 그래서 customerData를 abc123으로 바꾸면 완전히 다른 것으로 착각한다. 연구팀은 ‘뉴로심볼릭 AI’라는 새로운 방식을 제안했다. 쉽게 말해, 단순히 글자를 외우는 게 아니라 “이 코드는 고객 데이터를 처리하는구나”라고 의미를 이해하는 AI다. 마치 사람이 코드를 읽듯이 말이다.
셋째, 법과 기술 양쪽에서 감시를 강화해야 한다. 코드를 아무리 변형해도 원본을 찾아낼 수 있는 추적 기술이 필요하다. 또 라이선스 위반을 자동으로 잡아내는 도구도 만들어야 한다. 특히 GPL 같은 라이선스는 “내 코드 쓰려면 너도 코드 공개해라”는 오픈소스의 핵심 원칙인데, AI 시대에도 이걸 지킬 방법을 찾아야 한다는 것이다.
연구팀은 이번 실험에 사용한 모든 자료를 공개했다. 다른 연구자들도 이 문제를 연구하고 해결책을 찾을 수 있도록 돕기 위해서다. 이번 연구는 결국 “AI가 남의 코드를 함부로 쓰지 못하게 막는 기술과 제도가 시급하다”는 경고를 보내고 있다.
FAQ (※ 이 FAQ는 본지가 리포트를 참고해 자체 작성한 내용입니다.)
Q. ‘멤버십 추론’이란 쉽게 말해 뭔가요?
A: 특정 데이터가 AI 학습에 사용됐는지 확인하는 기술입니다. 마치 “이 사진이 AI가 배운 데이터에 포함됐나요?”라고 묻는 것과 같습니다. 코드 분야에서는 라이선스 제한이 있는 코드나 회사 기밀 코드가 몰래 AI 학습에 쓰였는지 감사하는 용도로 활용됩니다.
Q. 변수명만 바꿔도 왜 탐지가 안 되나요?
A: 현재 탐지 기술은 코드를 글자 단위로 비교하는 방식이라 변수명이 바뀌면 완전히 다른 코드로 인식합니다. 실제로는 같은 기능을 하는 코드인데도 말이죠. 연구 결과 변수명만 바꿔도 탐지 성공률이 최대 10% 떨어졌습니다.
Q. 이 문제가 왜 심각한가요?
A: 개발자나 기업이 자신의 코드를 AI가 무단으로 학습했는지 확인할 방법이 사실상 없다는 뜻입니다. 특히 GPL 같은 제한적 라이선스 코드를 간단히 변형해서 AI 학습에 쓰면 법적 책임을 피할 수 있어, 오픈소스 생태계 전체의 신뢰가 흔들릴 수 있습니다.
■ 이 기사는 AI 전문 매체 ‘AI 매터스’와 제휴를 통해 제공됩니다. 기사는 클로드 3.5 소네트와 챗GPT를 활용해 작성되었습니다. (☞ 기사 원문 바로가기)
