Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-26198-analysis — Python의 Ormar ORM에서 발견된 심각한 SQL 인젝션에 대한 심층 분석 — 재현, 수정, 그리고 테스트 | Kitploit
도구/GitHubGitHub/sergicortesabadia/cve-2026-26198-analysis
Vulnerability AnalysisCode AnalysisWeb SecurityPapers & ResearchLearning & Education
GitHubsergicortesabadia/cve-2026-26198-analysis

CVE-2026-26198-analysis

Python의 Ormar ORM에서 발견된 심각한 SQL 인젝션에 대한 심층 분석 — 재현, 수정, 그리고 테스트

저장소 보기
5개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-26198 — Ormar ORM의 SQL 인젝션

Python 비동기 ORM의 치명적인(CVSS 9.8) SQL 인젝션 취약점에 대한 심층 분석 — 재현, 분석, 수정 포함.

취약점

Ormar는 FastAPI 및 Starlette와 함께 자주 사용되는 인기 있는 Python용 비동기 미니 ORM입니다. 0.9.9부터 0.22.0까지의 버전에는 min() 및 max() 집계 메서드에 SQL 인젝션 취약점이 있습니다.

근본 원인은 "부분 구현" 버그입니다. sum() 및 avg()는 열 매개변수가 실제 숫자 필드를 참조하는지 검증하는 반면, min() 및 max()는 이 검사를 완전히 건너뛰고 사용자 입력을 sqlalchemy.text() — 원시 SQL 싱크 — 에 직접 전달합니다.

공격자는 "열" 매개변수로 하위 쿼리를 주입할 수 있습니다:

root@kitploit:~
# 예상 사용법
await Item.objects.max("price")  # → SELECT max(price) FROM items

# 공격 페이로드
await Item.objects.max("(SELECT password FROM users LIMIT 1)")
# → SELECT max((SELECT password FROM users LIMIT 1)) FROM items
# 관리자의 비밀번호를 반환합니다!

빠른 요약

속성값
CVE IDCVE-2026-26198
CVSS 점수9.8 (치명적)
CWECWE-89: SQL 인젝션
영향 버전ormar 0.9.9 – 0.22.0
수정 버전ormar 0.23.0
공개일2026년 2월 24일
인증 필요?없음 — 인증 불필요

프로젝트 구조

root@kitploit:~
├── README.md               ← 현재 위치
├── vulnerable_app.py       ← 취약한 패턴이 포함된 최소 FastAPI 앱
├── exploit_demo.py         ← 인젝션 동작을 보여주는 안전한 PoC
├── patched_app.py          ← 입력 검증이 포함된 수정 버전
├── test_vulnerability.py   ← 취약점 존재 및 수정 효과를 증명하는 테스트
├── requirements.txt
└── analysis/
    └── root_cause.md       ← 버그에 대한 상세 코드 수준 분석

데모 실행

root@kitploit:~
git clone https://github.com/YOUR_USERNAME/CVE-2026-26198-analysis.git
cd CVE-2026-26198-analysis
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt

# 테스트 실행 (외부 DB 불필요 — SQLite 사용)
python -m pytest test_vulnerability.py -v

# 대화형 익스플로잇 데모 실행
python exploit_demo.py

수정 방법

수정은 열 매개변수가 sqlalchemy.text()에 도달하기 전에 모델의 실제 필드와 일치하는지 검증합니다. 이는 화이트리스트 접근 방식을 통해 수행됩니다: 모델의 필드 정의에 존재하는 열 이름만 허용됩니다.

구현은 patched_app.py를, 전체 분석은 analysis/root_cause.md를 참조하세요.

핵심 시사점

  1. ORM은 자동 SQL 인젝션 보호 기능이 아닙니다. ORM 메서드가 원시 문자열을 받아 텍스트 절에 전달한다면, 원시 SQL을 작성하는 것만큼 위험합니다.
  2. 부분 검증은 검증이 없는 것보다 더 나쁩니다. sum()/avg()는 검증되었지만 min()/max()는 검증되지 않았다는 사실이 잘못된 안전감을 조성했습니다.
  3. 블랙리스트가 아닌 화이트리스트를 사용하세요. 수정은 악성 패턴을 필터링하려는 대신 알려진 정상 열 이름에 대해 검증합니다.

참고 자료

  • GitHub Advisory (GHSA-xxh2-68g9-8jqr)
  • NVD 항목
  • Ormar 저장소

라이선스

MIT

도구 다운로드