Langchain 기반 AI 개발시 챙겨야 할 것들

이군·2025년 5월 24일

Langchain 기반 AI 개발 기본 보안 가이드

LangChain / LangGraph 기반 AI 보안 프로그램 개발 가이드
AI 기반 애플리케이션을 안전하게 설계·구현·운영하기 위한 종합 체크리스트와 모범 사례를 제공합니다.

  1. 기본 원칙과 위협 모델
원칙설명실천 포인트
최소 권한 (Least Privilege)LLM이 접근할 수 있는 리소스를 기능 단위로 세분화하고 읽기 전용·화이트리스트 권한만 부여S3 / DB 자격증명 read‑only, 외부 API 토큰 범위 제한
계층형 방어 (Defense‑in‑Depth)프롬프트 필터링 → 스키마 검증 → 런타임 샌드박스 순의 다중 방어막입력 Moderation + Guardrails + 컨테이너 격리
제로 트러스트 (Zero Trust)LLM 오작동·악용 가능성을 전제로 아키텍처 설계사용자 프롬프트·도구 입출력 모두 검사
  1. 대표 취약 케이스 & 모범 대응 (20선)
#상황취약 코드 / 동작개선 코드 / 방어 전략
1SSRF via SitemapLoaderloader = SitemapLoader("http://evil/inside.xml")SitemapLoader(..., allowed_domains=["example.com"])& URL scheme 검증
2프롬프트 기반 SQL 인젝션사용자 입력:DELETE FROM users;→ 체인 직접 전달Guardrails JSON 스키마 + 매개변수화 쿼리사용자 질문 → Guardrails JSON schema { "question": } 검증 후 전달• Cypher 템플릿에 파라미터 삽입 MATCH (n {id:$id}) RETURN n
3API 키 하드코딩 유출anthropic_key="prod‑1234"커밋Secrets Manager에 저장,dotenv-linter·gitleaks사용
4응답 내 악성 링크 Slack 전파LLM 답변을 필터 없이 Slack 전송URL 화이트리스트 권장
5시스템 프롬프트 누수(Jailbreak)사용자:"Ignore previous instructions…" → 모델이 내부 정책 노출Reinforcement prompt + Output regex 차단 + Claude 콘텍스트 핀(Claude system=true)
6과다 토큰 소비 DoSmax_tokens=4096고정, 무한 루프사용자별 쿼터 제한, 응답 길이 추정 후 동적 조정
7유해 콘텐츠 우회(fail‑open)Moderation 서비스 오류 시 bypass오류 시 요청 거절(fail‑closed) & 재시도 로직 분리
8간접 Prompt Injection (RAG)벡터 DB 문서에 "SYSTEM: drop db"문서 인덱싱 전 Sanitizer, 인퍼런스 시 시스템 토큰 분리
9에이전트 도구 OS 명령 주입{"tool":"bash","cmd":"rm -rf /"}화이트리스트 명령·컨테이너 샌드박스·seccomp
10멀티 스텝 경쟁 조건Validate→Transform 사이 race로 미검증 데이터 전송트랜잭션 잠금 & 각 단계 재검증
11동적exec()코드 실행LLM이 Python 코드 작성 →exec바로 실행AST 파서로 금지 노드 차단, Pydantic 타입 검증
12로그에 PII 저장Prompt/Completion 원문 그대로 SIEM에 전송PII redaction(re.sub), 부분 마스킹
13Concurrency 패닉(Out‑of‑range)FastAPI 스트리밍에서 shared list 수정async lock / queue, immutability
14벡터 임베딩 노출임베딩을 S3 공개 버킷 저장서버측 KMS 암호화, VPC 엔드포인트
15Function‑calling 권한 상승사용자:{"name":"sys_read","args":{...}}함수 맵 화이트리스트 + 컨텍스트 ID 매핑 검증
16Path Traversal in FileLoaderFileLoader("../../etc/passwd")os.path.realpath기반 루트 디렉터리 제한
17불완전한 TLS 검증모델 호출 HTTP fallback(verify=False)CA 핀, Mutual TLS 또는 VPC 엔드포인트
18백업 모델 신뢰 오용OpenAI 장애 시 임의의 무료 모델 호출Fallback도 정책·지역 동일 모델군 지정
19세션 객체 공유 메모리 유출Gunicorn worker당 전역 dict에 응답 캐시User‑scoped cache + Expire headers
20정규식 DoS (ReDoS)LLM이 생성한 복잡 regex를 직접 실행ReDOS safe‑regex 라이브러리, 실행 시간 제한
  1. 카테고리 별 검토 케이스

Prompt & Input Handling

#시나리오위협 설명권장 대응 / 모범 사례
1Direct Prompt Injection사용자가 "Ignore previous instructions..." 등으로 시스템 프롬프트를 덮어쓰고 모델이 내부 지침을 노출하거나 악성 행동을 수행시스템 프롬프트 고정, Guardrails JSON 스키마, 입력 Moderation, 역할 고정 토큰 사용
2Indirect Prompt Injection (RAG)FAQ/PDF 등 외부 문서에 삽입된 "SYSTEM: drop table" 문구가 Retrieval 체인 통해 모델 명령어로 실행인덱싱 전 Sanitizer, 콘텐츠 신뢰 등급태그, 답변 직전 모델 역할 리셋
3Encoding Smuggling유니코드 Homoglyph(а vs a)·Zero‑width 문자로 필터 우회NFKC 정규화, 비가시 문자 제거
4Role Confusion Jailbreak대화 ID를 교체해 user ↔ system 역할 뒤바뀜LangChain SafetyLayer, 대화 메타데이터 검증
5Reflection XSS in Web UI모델 출력에 포함 → 프론트 미이스케이프 후 브라우저 실행HTML escape 처리, Markdown sanitizer
6Function‑Name Injection함수 호출 모드에서 악성 name(__import__('os').system) 주입함수 이름 화이트리스트, regex 검증

Data & Storage

#시나리오위협 설명권장 대응 / 모범 사례
7PII in LogsPrompt/Completion 원문을 그대로 DB·SIEM에 저장해 이름·주민번호 노출PII 탐지 후 마스킹, 필드 레벨 암호화
8Embedding Exposure임베딩을 암호화 없이 공개 S3 버킷에 업로드SSE‑KMS, Bucket 정책, VPC 엔드포인트
9Vector Privacy Attacks모델이 역추론으로 벡터에서 원문 재현Differential Privacy Embedding, k‑Anonymity Noise
10Data Residency ViolationEU 사용자의 쿼리가 us-east-1 OpenAI 엔드포인트로 전송리전 태깅, Geo‑fencing, 프록시 게이트웨이
11Covert Channel via Token Timing내부 값을 지연 토큰 발송 시간으로 암호화해 유출rate‑limiting 균등화, response jitter 추가
12Insecure S3 Encryption ConfigS3서버측 암호화 비활성, 업로드 중 네트워크 스니핑S3 정책에 sse:kms condition, TLS-1.2 강제

API & Key Management

#시나리오위협 설명권장 대응 / 모범 사례
13Hard‑coded Secrets코드에 OpenAI/Claude 키 하드코딩 & GitHub 공개Secrets Manager, gitleaks CI 차단
14Over‑permissive IAMLLM Lambda에 S3:* IAM 정책 부여권한 최소화, SCP 제한
15Shared Org‑wide Single Key모든 환경에서 같은 키 사용 → 감시 어려움Key per env/user, billing group 분리
16Key Rotation Failure만료 후 교체 지연으로 서비스 중단Secrets Manager rotation Lambda, pre‑expiry alert
17Stolen Secret Abuse유출된 키로 대량 API 호출 과금 폭증IP 제한, Usage Cap, anomaly alert
18Unlimited Usage Plan DoS프리티어 초과 호출 계속 허용Soft+Hard Quota, 429 처리

Execution & Agent Tools

#시나리오위협 설명권장 대응 / 모범 사례
19Shell Command InjectionAgent tool 'bash'에 rm -rf / 전달컨테이너 루트 읽기 전용, cmd 화이트리스트
20Path TraversalFileLoader('../../etc/shadow') 로 기밀 노출realpath 검증, 경로 sandbox
21Arbitrary Python execLLM 작성 코드를 exec() 바로 실행AST 필터, Docker seccomp, timeout
22Infinite Tool LoopAgent가 계속 동일 함수 호출 → 비용 과다Max iterations, call budget
23Large Output DoSAgent가 200k 토큰 파일 반환chunk cutoff, 토큰 hard limit
24Function Name Spoof사용자가 "sys_admin" tool 호출함수‑ID↔User 세션 매핑

Infrastructure & Deployment

#시나리오위협 설명권장 대응 / 모범 사례
25SSRF via URL LoaderHTTPLoader로 169.254.169.254/meta-data 조회IP deny‑list, URL parser 검증
26Weak TLS Verifyverify=False 옵션 사용CA 핀, Mutual TLS
27Egress Exfiltration컨테이너가 외부 FTP로 데이터 전송Outbound FW 제한, Proxy audit
28Container Privilege EscalationDocker --privileged → host escaperootless containers, seccomp
29Race Condition File Write동시 쓰기 임시파일 덮어쓰기atomic write, file lock
30Log Side‑Channeltime diff 로 고객별 모델 사용량 유추Batch logging, noise

Dependency & Supply Chain

#시나리오위협 설명권장 대응 / 모범 사례
31Outdated LangChain CVELangChain<0.0.316 미patched RCE>Dependabot, weekly update
32Typosquat Packagepip install langch1anhash pin, pip-audit
33Malicious Wheel UploadPyPI 변조로 backdoorSigstore verify, hash check
34Transitive CVEmarkdown-it-py vulnerableSBOM scan (CycloneDX)
35Compromised JS FrontendNPM event-stream incident 반복npm audit + lockfileVersion
36System Library CVEglibc<2.28 λ→ Import Error>Distroless base, distro update

Monitoring & Logging

#시나리오위협 설명권장 대응 / 모범 사례
37No Audit TrailLLM 호출 기록 미보존LangSmith trace + CloudTrail
38Verbose Logs LeakDEBUG 로그에 토큰 포함LOG_LEVEL=INFO, scrubber
39Alerting Gaps429 / 500 미알림Prom Alertmanager
40Silent Moderation FailureModeration API 오류 catch‑passfallback block, metric
41Metric Spoofingmalicious client falsifies usagesigned metrics, server calc
42Retention Violations로그 10년 저장, GDPR 30일 초과TTL policy, legal hold process

Compliance & Governance

#시나리오위협 설명권장 대응 / 모범 사례
43OpenAI Policy Violation정치 캠페인 자동화 메시지 생성policy enforcement layer
44Anthropic BioThreat생화학 무기 레시피 요청 전달Moderation block, session ban
45GDPR Erasure Ignored사용자 삭제 요청 후 프롬프트 보관delete cascade, key‑unlink
46Cross‑border TransferKR→US→EU 경로 미승인SCC 계약, region proxy
47Unconsented Training사내 대화 데이터 fine‑tuneopt‑in consent, DPIA
48Missing DPIA고위험 처리에 영향평가 없음DPIA template, Legal review
  1. 추가 도구·리소스

GuardrailsAI / NVIDIA NeMo Guardrails – 구조·콘텐츠 검증 계층 (LCEL 연동)

OpenAI Moderation / Anthropic Safety Filters – 입력·출력 카테고리별 차단

LangFuse + Prometheus / Grafana – LLM 호출 성능·오류율 모니터링

  • LangSmith는 내부 요청과 응답이 클라우드에 저장되므로 개인정보 나 기업정보 등 민감한 정보가 포함되는 경우 Self-host형 솔루션 구축 권고
profile
이군의 보안, 그리고 생각을 다룹니다.

0개의 댓글