requirements.txt
Rama main · réplica de lectura del repositorio original.
# fastapi>=0.138.1 — starlette 1.0 지원 첫 릴리스 (include_router → _IncludedRouter 지연 포함).
# 이전 CVE-2024-47874 / CVE-2025-54121(starlette) 패치는 아래 starlette>=1.3.1 로 승계.
# fastapi>=0.138.1 — first release supporting starlette 1.0 (include_router → lazy _IncludedRouter).
# Prior CVE-2024-47874 / CVE-2025-54121 (starlette) fixes are carried by starlette>=1.3.1 below.
# 🔴 0.142.0+ 는 semgrep 과 함께 설치되지 않는다 — 아래 semgrep 주석 · #1733.
# 🔴 0.142.0+ cannot be installed alongside semgrep — see the semgrep comment below · #1733.
fastapi==0.141.1
slowapi==0.1.10
uvicorn[standard]==0.54.0
pydantic-settings==2.16.2
sqlalchemy==2.1.6
alembic==1.20.1
# 온프레미스 프로덕션: psycopg2-binary → psycopg2 + libpq-dev(Ubuntu) / postgresql-devel(RHEL) 설치 권장
# On-premises production: replace psycopg2-binary with psycopg2 + libpq-dev (Ubuntu) / postgresql-devel (RHEL).
psycopg2-binary==2.9.13
PyGithub==2.10.0
httpx==0.28.1
defusedxml==0.7.1
# authlib>=1.7.2 — GHSA-jj8c-mmj3-mmgv (OAuth cache CSRF) fix
authlib==1.9.1
itsdangerous==2.2.0
# starlette>=1.3.1 — PYSEC-2026-161 / CVE-2026-48710 패치 (Host 헤더 미검증 → request.url.path 오염 → 경로 인증 우회; ≤1.0.0 전체 취약, 1.0.1 단독 수정).
# starlette>=1.3.1 — fixes PYSEC-2026-161 / CVE-2026-48710 (Host header not validated → request.url.path poisoning → path-auth bypass; all ≤1.0.0 affected, fixed only in 1.0.1).
starlette==1.10.0
python-telegram-bot==22.8
anthropic==2.3.0
# openai — 머지 검증자(2nd-LLM cross-vendor) 런타임 의존 + (dev) DALL-E 일러스트 도구. 키 미설정 시 비활성
# openai — runtime dep for the 2nd-LLM merge verifier (+ dev DALL-E tool). Inert without OPENAI_API_KEY.
openai==3.41.0
aiosmtplib==5.1.3
pylint==4.1.3
flake8==7.5.0
bandit==1.9.4
# 🔴 semgrep 핀이 전이 의존 넷을 좁게 정한다 — pyjwt · mcp · click · opentelemetry-api.
# 1.170.x 는 pyjwt~=2.13.0 을 강제해 pyjwt 권고가 pip-audit 를 막았고, 1.180.0 은 예외 없이 감사 0건이다.
# opentelemetry-api~=1.37 을 강제해 fastapi 0.142.0+(>=1.44)와 공존할 수 없다 → fastapi 보류(#1733).
# `mcp==1.29.0` 정확 핀이 CVE-2026-59951, `opentelemetry-api~=1.37` 이 CVE-2026-114603 을 막는다
# — 감사 예외와 제거 조건은 ci.yml pip-audit 스텝.
# 🔴 The semgrep pin narrowly fixes four transitives — pyjwt · mcp · click · opentelemetry-api.
# 1.170.x forced pyjwt~=2.13.0 and failed pip-audit; 1.180.0 audits clean with no ignores.
# It forces opentelemetry-api~=1.37, which fastapi 0.142.0+ (>=1.44) cannot share → fastapi hold (#1733).
# Its exact `mcp==1.29.0` pin trips CVE-2026-59951 and `opentelemetry-api~=1.37` trips
# CVE-2026-114603 — exceptions and removal terms live in ci.yml (pip-audit).
semgrep==1.183.0
slither-analyzer==0.11.6
sqlfluff==4.4.0
jinja2==3.1.6
# python-multipart>=0.0.32 — CVE-2026-40347 (preamble/epilogue CPU DoS) fix
python-multipart==0.0.32
yamllint==1.38.0
# cryptography>=50.0.0 — CVE-2026-69247 fix (pkcs7_decrypt_* 가 RecipientInfo 복호 결과를
# 보고해 padding-oracle 성립). 이전 핀 사유: CVE-2026-26007/34073/39892.
cryptography==50.0.2