← 최신 논문
💻 computer science

Taint-Based Code Slicing for LLMs-based Malicious NPM Package Detection

본 논문은 npm 패키지 내의 보안 관련 데이터 흐름을 격리하여 대규모 언어 모델(LLM)을 위한 입력 토큰 수를 획기적으로 줄이는 테인트 기반 코드 슬라이싱 프레임워크를 제안하며, 이를 통해 악성 소프트웨어 공급망 위협을 식별하는 데 있어 단순 토큰 분할 및 CFG 전용 베이스라인보다 뛰어난 87.04%의 탐지 정확도를 달성하였다.

원저자: Dang-Khoa Nguyen, Gia-Thang Ho, Quang-Minh Pham, Tuyet A. Dang-Thi, Minh-Khanh Vu, Thanh-Cong Nguyen, Phat T. Tran-Truong, Duc-Ly Vu

게시일 2026-06-16
📖 3 분 읽기☕ 가벼운 읽기

원저자: Dang-Khoa Nguyen, Gia-Thang Ho, Quang-Minh Pham, Tuyet A. Dang-Thi, Minh-Khanh Vu, Thanh-Cong Nguyen, Phat T. Tran-Truong, Duc-Ly Vu

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

npm 생태계(개발자들이 사용하는 방대한 코드 패키지 라이브러리)를 거대하고 혼란스러운 창고라고 상상해 보십시오. 매일 수천 개의 새로운 상자(패키지)가 도착합니다. 대부분은 유용한 도구들로 채워져 있지만, 일부는 "트로이 목마"입니다. 겉보기에는 정상적인 상자처럼 보이지만, 내부에는 비밀을 훔치거나 컴퓨터를 망가뜨리도록 설계된 숨겨진 함정이 들어 있습니다.

문제는 이 창고가 너무나 거대하고 상자들이 너무 복합적이어서, 보안 요원들이 모든 상자 안에 들어 있는 모든 매뉴얼의 페이지를 하나하나 다 읽어서 함정을 찾아내는 것이 불가능하다는 점입니다.

문제점: 너무 많은 소음, 너무 적은 시간

전통적인 보안 도구들은 상자 전체를 스캔하려고 시도합니다. 하지만 현대의 "나쁜" 상자들은 매우 교묘합니다. 이들은 코드를 혼란스럽게 만들거나(난독화), 텍스트를 뒤섞고, 수천 줄의 무해한 "보일러플레이트" 코드(예: 폭탄이 숨겨진 것과는 아무런 상관이 없는 토스터기 설명서 같은 코드) 속에 함정을 숨깁니다.

만약 이 거대한 패키지의 전체 내용을 대규모 언어 모델(LLM)(코드를 이해하는 초지능형 AI)에 입력하려고 한다면, 두 가지 벽에 부딪히게 됩니다:

  1. 윈도우 제한(The Window Limit): AI는 "짧은 주의력 지속 시간"(컨텍스트 윈도우)을 가지고 있습니다. AI가 한 번에 읽을 수 있는 텍스트의 양은 정해져 있습니다. 패키지가 너무 크면 AI는 뒷부분을 잘라내야 하며, 이 과정에서 함정을 놓칠 수 있습니다.
  2. 비용: 수백만 줄의 코드를 읽는 것은 매우 느리고 비용이 많이 듭니다.

해결책: "코드 슬라이서(Code Slicer)"

이 논문은 AI를 사용하는 영리한 새로운 방법인 **코드 슬라이싱(Code Slicing)**을 제안합니다.

AI에게 혼란스러운 창고 전체를 보여주는 대신, 연구진은 전문 탐정처럼 작동하는 **스마트 필터(슬라이서)**를 구축했습니다. 이 탐정은 매뉴얼 전체를 읽지 않습니다. 대신 특정 "위험 징후"를 찾고 수상한 활동의 경로를 추적합니다.

이 비유가 작동하는 방식은 다음과 같습니다:

  • "나쁜 것": 범죄자가 다이아몬드(민감한 데이터)를 훔쳐서 달아나려는(데이터 유출) 상황을 상상해 보십시오.
  • "좋은 것": 창고 안에는 그저 돌아다니며 커피를 마시거나 서류 작업을 하는 사람들이 가득합니다(무해한 코드).
  • 슬라이서: 슬라이서는 모든 사람을 감시하는 대신, 다이아몬드에 추적기를 답니다. 그리고 다이아몬드가 선반에서 도둑의 주머니로 이동하는 경로만을 추적합니다. 그 외의 다른 사람들은 무시합니다.

기술적인 용어로, 연구진은 민감한 JavaScript API(파일 삭제, 숨겨진 코드 실행, 인터넷으로 데이터 전송 등 악의적인 행위에 자주 사용되는 특정 명령들)의 목록을 만들었습니다. 그리고 Joer라는 도구를 사용하여 코드의 구조를 파악하고, 이 민감한 명령들과 연결되지 않는 모든 것을 잘라냈습니다.

결과: 불필요한 부분 제거

이 "슬라이싱"의 결과는 극적이었습니다:

  • 엄청난 감소: AI가 읽어야 할 텍스트의 양을 평균 99.75% 줄였습니다. 이는 1,000페이지짜리 소설을 가져와서 살인이 일어나는 딱 3페이지만 AI에게 주는 것과 같습니다.
  • 더 나은 정확도: AI가 수천 페이지의 지루하고 무해한 코드에 의해 방해받지 않게 됨으로써, 악당을 찾아내는 능력이 훨씬 향상되었습니다.
    • 단순히 텍스트를 무작위 조각으로 나누는 "나이브(naive)"한 방식은 약 **75%**의 정확도를 보였습니다.
    • 새로운 "슬라이싱" 방식은 약 **87%**의 정확도를 보였습니다.

주의사항: "마술적 기법(Magic Trick)"의 한계

이 논문은 주요한 한계점을 솔직하게 밝히고 있습니다. 이 "슬라이서"는 코드를 *정적(static)*으로(실행하지 않고 텍스트를 읽는 방식으로) 분석하여 작동합니다.

하지만 일부 악성 패키지는 **마술적 기법(동적 코드 생성)**을 사용합니다. 이들은 "실행될 때까지 기다렸다가, 그때 함정을 직접 만들겠다"라고 말하는 코드를 작성합니다. 함정이 아직 텍스트 파일 형태로 존재하지 않기 때문에, 슬라이서는 이를 볼 수 없습니다.

  • 연구에서 약 **44%**의 악성 패키지는 너무 복잡하게 꼬여 있거나 동적으로 작동하여, 슬라이서가 "수상한 경로"를 찾지 못하고 빈 결과를 반환했습니다.
  • 논문은 이러한 특정 까다로운 사례들의 경우, 실제로 코드를 실행하여 무엇이 일어나는지 확인할 수 있는 다른 도구(예: 동적 샌드박스)가 필요하다고 인정합니다.

요약

이 논문을 도서관의 책들을 검사하는 첨단 금속 탐지기를 도입한 것이라고 생각하십시오. 숨겨진 칼을 찾기 위해 모든 책을 처음부터 끝까지 읽는 대신, 이 탐지기는 칼의 금속 신호를 구체적으로 스캔하고 페이지 사이의 경로를 추적합니다.

  • 하는 일: "신호(수상한 데이터 흐름)"만을 남기기 위해 99%의 "소음(무해한 코드)"을 제거합니다.
  • 중요한 이유: 이를 통해 AI 보안 검사를 더 빠르고, 저렴하며, 훨씬 더 정확하게 만듭니다.
  • 한계점: 책을 펼친 이후에 만들어지는 함정(동적 코드)은 감지할 수 없으므로, 이러한 유형의 악의적인 행위자를 잡기 위해서는 다른 도구의 도움이 필요합니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →