mcp

3 개의 포스트

LLM을 이용한 서비스 취약점 분석 자동화 #1 (새 탭에서 열림)

토스 보안 연구팀은 구글의 'Project Naptime'에서 영감을 얻어 LLM 기반의 취약점 분석 자동화 시스템을 구축했습니다. 대용량 코드 처리, 결과의 불확실성, 운영 비용 등 실무 적용 과정에서 마주한 네 가지 핵심 기술적 난제를 단계별로 해결하며 최종적으로 95% 이상의 분석 정확도를 달성했습니다. 기술적 가능성을 넘어 실제 수백 개의 서비스에 지속적으로 적용 가능한 수준의 보안 자동화 환경을 마련했다는 점에 의의가 있습니다. **대용량 소스코드 분석을 위한 MCP 도입** * 단순히 소스코드 전체를 LLM에 입력하는 방식은 토큰 한계와 환각(Hallucination) 문제로 인해 대규모 프로젝트 분석에는 부적합했습니다. * 대안으로 RAG(검색 증강 생성)를 시도했으나 코드 간의 복잡한 연관 관계를 파악하는 데 한계가 있었습니다. * 최종적으로 MCP(Model Context Protocol)를 구축하여 LLM 에이전트가 필요할 때마다 함수 정의나 변수 사용처를 도구 호출(Tool Calling) 방식으로 자유롭게 탐색하도록 설계했습니다. **SAST 결합을 통한 분석 일관성 확보** * 동일한 코드에 대해서도 분석 결과가 매번 달라지는 LLM의 비결정성 문제를 해결하기 위해 정적 분석 도구(SAST)를 결합했습니다. * 빌드 과정이 복잡하고 무거운 CodeQL 대신, 가볍고 빠른 오픈소스 도구인 Semgrep을 활용하여 모든 입력 경로(Source)에서 위험 지점(Sink)까지의 경로를 먼저 수집했습니다. * SAST가 추출한 잠재적 취약 경로를 LLM이 집중 분석하게 함으로써 탐지 누락을 방지하고 분석의 신뢰도를 높였습니다. **멀티 에이전트 체계를 통한 비용 최적화** * 모든 코드 경로를 심층 분석할 경우 발생하는 막대한 토큰 비용을 줄이기 위해 역할을 분담한 세 가지 에이전트를 도입했습니다. * **Discovery 에이전트:** 수집된 경로 중 실제 취약점 가능성이 높은 경로를 1차로 선별하는 거름망 역할을 수행합니다. * **Analysis 에이전트:** 선별된 경로를 심층 분석하여 실제 취약 여부를 판별합니다. * **Review 에이전트:** 최종 결과를 검토하여 오탐(False Positive)을 제거함으로써 분석의 정교함을 더했습니다. **지속 가능한 운영을 위한 오픈 모델 전환** * 상용 클라우드 모델(Claude 등)의 높은 비용 문제를 해결하기 위해 직접 호스팅 가능한 오픈 모델(Open Model)로 전환했습니다. * Qwen3:30B, gpt-oss:20B, llama3.1:8B 등 다양한 모델의 ROI를 비교 분석한 결과, 취약점 분석 정확도와 도구 호출 성능이 가장 우수한 'Qwen3:30B'를 최종 선택했습니다. * 오픈 모델의 성능을 보완하기 위해 프롬프트 엔지니어링과 퓨샷 러닝(Few-shot Learning)을 적용하여 클라우드 모델 못지않은 성능을 구현했습니다. 단순히 최신 기술을 도입하는 것에 그치지 않고, 기업 환경에서 실제 운영 가능한 수준의 '비용 대비 성능'을 확보하는 것이 중요합니다. LLM 취약점 분석 시스템을 구축할 때는 모든 판단을 모델에 맡기기보다 Semgrep과 같은 전통적인 보안 도구로 분석 범위를 좁혀주고, 멀티 에이전트 구조로 단계별 필터링을 거치는 설계가 실무적으로 가장 효과적입니다.

사내 AI 리터러시를 향상하기 위한 AI Campus Day를 개최했습니다 (새 탭에서 열림)

LY Corporation은 전 직군의 AI 리터러시를 높이고 실무 적용을 독려하기 위해 사내 실습 행사 'AI Campus Day'를 개최했습니다. 외부 강사 대신 사내 전문가인 'AI 멘토'를 활용하고 실습 중심의 핸즈온 세션을 구성함으로써, 보안 가이드라인과 사내 업무 환경에 최적화된 실질적인 AI 활용 노하우를 성공적으로 전파했습니다. 이번 행사는 단순한 교육을 넘어 축제 형태의 운영 방식을 도입하여 임직원들이 자발적으로 AI 기술을 탐색하고 업무 생산성을 높이는 계기를 마련했습니다. **실무 역량 강화를 위한 수준별 핸즈온 세션** * **직군별 맞춤 트랙 운영:** 'Common', 'Creative', 'Engineering'의 3개 트랙으로 나누어, 기초 프롬프팅부터 MCP(Model Context Protocol) 서버 구축과 같은 심화 주제까지 총 10개의 세션을 제공했습니다. * **단계별 난이도 설계:** 참가자의 AI 활용 수준에 맞춰 3단계 레벨을 설정하여, 비개발 직군부터 엔지니어까지 누구나 자신의 수준에 맞는 학습이 가능하도록 했습니다. * **철저한 실습 지원 체계:** 흐름을 놓치지 않도록 상세한 '세션 가이드'를 제작 배포하고, 세션마다 2~3명의 조교(총 26명)를 배치하여 현장에서 발생하는 기술적 문제를 즉각 해결했습니다. * **Slack 기반의 소통:** 각 세션별 채널을 통해 실습 결과물을 실시간으로 공유하고 질의응답을 진행하여 참여도를 높였습니다. **사내 콘텍스트를 반영한 AI 멘토링** * **내부 전문가 활용:** 외부 강사 대신 사내에서 이미 AI를 적극적으로 활용 중인 동료 10명을 멘토로 선발하여 현장감 있는 지식을 공유했습니다. * **최적화된 도구 활용:** ChatGPT Enterprise, Gemini, Claude Code 등 사내에서 허용된 도구와 보안 수칙을 100% 반영하여, 배운 내용을 즉시 업무에 적용할 수 있는 환경을 구축했습니다. * **체계적인 콘텐츠 검토:** 운영진은 멘토 가이드를 제공하고, '주제 검토 - 최종 자료 리뷰 - 리허설'로 이어지는 다단계 프로세스를 통해 교육 콘텐츠의 완성도를 확보했습니다. **자발적 참여를 유도하는 축제형 운영** * **캠퍼스 테마 도입:** 수강 신청, 등교, 스탬프 랠리 등 대학교 캠퍼스 컨셉을 활용하여 학습에 대한 심리적 장벽을 낮추고 즐거운 분위기를 조성했습니다. * **몰입형 이벤트 부스:** Gemini를 활용한 AI 포토존, 자체 개발 AI 업무 지원 솔루션 체험, AI 에이전트 콘테스트 홍보 등 다채로운 부스를 운영하여 AI의 효용성을 직접 경험하게 했습니다. * **리더십의 전폭적 지지:** 경영진의 축전 영상을 통해 '업무 대신 AI와 함께 노는 하루'라는 메시지를 전달함으로써, 임직원들이 심리적 부담 없이 행사에 몰입할 수 있는 환경을 만들었습니다. 성공적인 사내 AI 전환(AX)을 위해서는 단순한 도구 보급을 넘어, 사내 보안 가이드와 업무 맥락을 정확히 이해하는 내부 전문가 중심의 실습 교육이 필수적입니다. AI Campus Day와 같이 학습을 '숙제'가 아닌 '축제'로 인식하게 만드는 운영 전략은 구성원들의 자발적인 기술 수용도를 높이는 데 매우 효과적인 접근 방식이 될 것입니다.

AI와 글쟁이의 동행: 코드 주면 API 레퍼런스 써드려요 (새 탭에서 열림)

기술 문서 부족 문제를 해결하기 위해 엔지니어링 관점에서 접근한 이 글은, 생성형 AI를 활용해 사내 기술 컨텍스트와 스타일 가이드가 반영된 API 레퍼런스를 자동 생성하는 프로젝트 과정을 소개합니다. 일반적인 코딩 어시스턴트의 한계를 극복하기 위해 프롬프트 워크플로를 최적화하고, 특정 IDE에 종속되지 않도록 MCP(Model Context Protocol)를 도입하여 범용성을 확보했습니다. 최종적으로 AI가 생성한 결과물은 높은 품질을 보였으나, 기술 문서의 특성상 정확성을 담보하기 위한 인간의 검토 단계가 필수적임을 강조하며 결론을 맺습니다. ## 기존 AI 도구의 한계와 도큐먼트 엔지니어링의 목표 * 기술 문서는 항상 부족하며, 개발자 교육만으로는 시간과 관심의 부재라는 근본적인 원인을 해결하기 어렵다는 판단하에 자동화 프로세스를 구축했습니다. * GitHub Copilot과 같은 기존 도구는 코드 파악 능력은 뛰어나지만, 사내 전용 기술 용어나 특수한 스타일 가이드, 프로젝트별 컨텍스트를 반영하지 못하는 단점이 있습니다. * '사내 정보를 참고해 스타일 가이드에 맞는 API 주석을 작성하고, 이를 한곳에서 배포하기'를 목표로 테크니컬 라이터의 노하우를 자동화 공정에 이식했습니다. ## 프롬프트 최적화와 단계별 워크플로 구성 * 초기에는 방대한 지시 사항이 담긴 긴 프롬프트를 사용했으나, LLM이 복잡한 지시를 놓치는 문제가 발생하여 실행 단계를 세분화했습니다. * 처리 속도와 정확도 사이의 타협점을 찾기 위해 '프로그래밍 언어 인식', 'API 파악 및 예제 작성', '설명 및 파라미터/응답 값 작성'의 3단계 워크플로로 압축했습니다. * LINE의 고유 식별자인 'MID'를 단순한 약어(Member ID 등)로 오해하지 않고 사내 정의에 맞게 설명하도록 컨텍스트를 주입하여 일반 AI 도구와 차별화된 품질을 구현했습니다. ## 범용성 확보를 위한 MCP(Model Context Protocol) 도입 * 초기 프로토타입은 VS Code 익스텐션으로 제작했으나, IntelliJ 등 다양한 IDE를 사용하는 개발자들의 요구를 수용하기 위해 MCP 기반으로 전환했습니다. * MCP 서버는 클라이언트와의 통신에만 집중하므로, UI 구현에 드는 비용을 줄이고 언어 판별이나 코드 블록 선택 같은 부가 기능을 MCP 호스트(IDE 등)에 위임할 수 있습니다. * 사용자가 AI와 대화하며 파라미터를 입력하는 방식은 현대적인 AI 사용 경험에 부합하며, 특정 도구에 종속되지 않는 범용적인 문서화 솔루션을 제공합니다. ## AI 문서화의 성과와 실질적인 한계 * 자체 평가 결과, 생성된 주석의 88%가 기준을 만족했으며 78%의 사례에서 GitHub Copilot보다 우수한 품질의 설명을 생성하는 성과를 거두었습니다. * 그러나 AI는 확률 기반으로 작동하므로 100%의 정확성을 보장하지 못하며, 단 한 줄의 오류가 문서 전체의 신뢰도를 떨어뜨리는 API 레퍼런스의 특성상 위험 요소가 존재합니다. * 따라서 AI를 '완벽하지 않은 동반자'로 정의하고, AI가 초안을 대량으로 빠르게 생산하되 마지막 단계에서는 반드시 담당 개발자가 내용을 검토하는 '사람 중심의 검증' 프로세스를 권장합니다.