NL PL 경계 정보 흐름 분석

LLM API 호출이 프로그램에 도입되면서 자연어와 프로그래밍 언어 사이에 새로운 데이터 흐름 경계가 생겼다. 기존 정적 분석은 이 경계를 넘을 수 없었지만, 저자들은 양적 정보 흐름 이론에 기반한 24가지 라벨을 갖는 두 차원 분류 체계를 제안한다. 9,083개의 실제 파이썬 코드 샘플에 라벨링을 수행해 신뢰성을 검증했으며, 이를 활용한 타인트 전파와 역슬라이스 실험에서 각각 F1 0.923와 슬라이스 크기 평균 15% 감소라는 실용적 이득을…

저자: Zihao Xu, Xiao Cheng, Ruijie Meng

NL PL 경계 정보 흐름 분석
본 논문은 최근 급증하고 있는 LLM API 호출이 프로그램 내부에 도입되면서 발생하는 새로운 데이터 흐름 장벽, 즉 자연어(NL)와 프로그래밍 언어(PL) 사이의 경계를 정의하고, 이를 정적 분석이 넘을 수 있는 방법을 제시한다. 기존의 정적 분석 기법—타인트 분석, 프로그램 슬라이스, 의존성 분석, 변경 영향 분석 등—은 함수 호출이나 라이브러리 인터페이스와 같이 입력·출력 스키마가 명확히 정의된 경계만을 모델링한다. 그러나 LLM 호출은 내부 토큰 처리 과정이 완전히 불투명하고, 입력된 플레이스홀더가 그대로 복제되기도 하고, 요약·압축·변환·무시 등 다양한 형태로 출력에 반영될 수 있다. 이러한 특성은 기존 데이터 흐름 요약이 제공하지 못하는 ‘NL/PL 경계’를 형성한다. 저자들은 이 문제를 해결하기 위해 양적 정보 흐름(QIF) 이론을 기반으로 두 개의 직교 차원을 갖는 24개의 라벨로 구성된 taxonomy를 설계한다. 첫 번째 차원은 ‘정보 보존 수준’으로, 완전 차단(L0)부터 부분 압축(L1), 요약(L2), 부분 보존(L3), 문자 그대로 보존(L4)까지 5단계로 구분한다. 두 번째 차원은 ‘출력 양식’으로, 자연어 텍스트, 구조화 데이터(JSON, SQL 등), 실행 가능한 코드(파이썬, 셸 스크립트 등)로 나눈다. 이 두 차원을 결합해 8개의 라벨 그룹, 총 24개의 구체적 라벨을 정의함으로써, 특정 플레이스홀더가 LLM 출력에 어떻게 반영되는지와 그 출력이 어떤 형태로 downstream 코드에 전달되는지를 동시에 기술한다. 라벨링 데이터셋 구축을 위해 저자들은 기존 GitHub 파이썬 파일 컬렉션을 활용하였다. 각 파일에 대해 자동화된 ‘콜사이트 재구성’ 파이프라인을 적용해 LLM 호출 위치와 동적 플레이스홀더를 식별하고, 코드 컨텍스트를 기반으로 현실적인 플레이스홀더 값을 추정한다. 그런 다음 완전 재구성된 프롬프트를 동일 모델(GPT‑5.2)로 전송해 실제 LLM 출력을 얻었다. 이 과정을 통해 4,154개의 고유 파일에서 9,083개의 (플레이스홀더, 출력) 쌍을 확보하였다. 두 명의 도메인 전문가가 이 쌍에 대해 taxonomy 라벨을 부여했으며, Cohen’s κ=0.82라는 높은 일치도를 기록했다. 라벨링이 불가능한 경우는 전체의 0.01%에 불과해 라벨링 체계가 실제 코드베이스에 거의 완전 적용 가능함을 보여준다. 다음으로 저자들은 이 taxonomy를 두 가지 실제 분석에 적용하였다. 첫 번째는 타인트 전파 파이프라인이다. 기존 타인트 분석은 LLM 호출을 ‘불투명한 API’로 취급해 모든 반환값을 무조건 타인트로 간주하거나, 반대로 무시한다는 두 극단 중 하나를 선택해야 했다. 여기서는 taxonomy 기반 필터링 단계에서 ‘비전파’ 라벨(예: L0, L1)인 경우를 사전에 차단하고, 남은 경우에 LLM을 재활용해 실제 전파 여부를 검증한다. 이 두 단계 접근법은 353개의 전문가 라벨링 데이터셋에서 F1 점수 0.923을 달성했으며, OpenClaw 프레임워크에 존재하는 6개의 실제 CVE(TypeScript 구현)에서도 동일한 효과를 확인했다. 특히, ‘완전 차단’ 라벨에 해당하는 네 가지 카테고리가 전체 비전파 사례의 87%를 차지한다는 결과는 도구 제작자가 간단히 라벨 기반 규칙을 적용해 false positive를 크게 감소시킬 수 있음을 시사한다. 두 번째는 역슬라이스 실험이다. 역슬라이스는 특정 프로그램 지점에 영향을 미치는 모든 선행 문장을 찾는 과정인데, LLM 호출이 포함된 경우 전통적인 슬라이스는 해당 호출에 사용된 모든 플레이스홀더를 upstream에 포함시켜 슬라이스 크기가 과도하게 커진다. taxonomy에서 ‘비전파’ 라벨이 부여된 플레이스홀더를 슬라이스 대상에서 제외함으로써, 비전파가 없는 경우 평균 슬라이스 크기를 15% 감소시켰다. 이는 개발자가 LLM 호출을 포함한 코드베이스를 이해하고 디버깅하는 데 실질적인 효율성을 제공한다. 논문의 기여는 크게 세 가지로 정리할 수 있다. 첫째, NL/PL 경계에서 정보 흐름을 정량화하고 라벨링할 수 있는 최초의 체계적 방법을 제시했다. 둘째, 이 taxonomy를 활용해 보안 중심의 타인트 전파와 일반적인 프로그램 분석(역슬라이스) 모두에서 실질적인 성능 향상을 입증했다. 셋째, 라벨링 과정이 비교적 자동화 가능하고, 라벨 자체가 직관적이며, 다양한 언어·프레임워크에 확장 가능하다는 점에서 향후 정적·동적 분석 도구에 쉽게 통합될 수 있다. 하지만 몇 가지 한계도 존재한다. 라벨링에 사용된 LLM 모델(GPT‑5.2)과 실제 배포 환경에서 사용되는 모델이 다를 경우 라벨 정확도가 변동할 수 있다. 또한 현재 실험은 파이썬 코드와 TypeScript 기반 OpenClaw 사례에 국한되어 있어, 다른 언어·플랫폼에 대한 일반화 검증이 필요하다. 라벨링 비용을 더욱 낮추기 위한 반자동 혹은 완전 자동화 방법, 그리고 라벨을 활용한 실시간 런타임 모니터링 기법 등은 향후 연구 과제로 남는다. 요약하면, 이 논문은 LLM 통합 프로그램에서 발생하는 NL/PL 경계를 정량적으로 모델링하고, 이를 기반으로 타인트 전파와 역슬라이스 등 기존 정적 분석에 새로운 정보를 제공함으로써, LLM‑기반 소프트웨어의 안전성과 유지보수성을 크게 향상시킬 수 있는 실용적인 프레임워크를 제시한다.

원본 논문

고화질 논문을 불러오는 중입니다...

댓글 및 학술 토론

Loading comments...

의견 남기기