Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sqlite-session-ncol — SQLite 3.53.4 - 높음 - 로컬 - 힙 OOB 쓰기 - 세션 changeset 동일 이름 nCol 증가 | Kitploit
도구/GitHubGitHub/abraxas/sqlite-session-ncol
Memory ForensicsVulnerability AnalysisExploitationFuzzingBinary AnalysisPapers & ResearchDatabase Security
GitHubabraxas/sqlite-session-ncol

sqlite-session-ncol

SQLite 3.53.4 - 높음 - 로컬 - 힙 OOB 쓰기 - 세션 changeset 동일 이름 nCol 증가

저장소 보기
208일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - sqlite-session-ncol

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-session-ncol

분석 문서: https://abraxaslabs.tech/research/sqlite-session-ncol

sqlite-session-ncol

분류: 힙 OOB 쓰기 도달 범위: 로컬

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc)를 -DSQLITE_ENABLE_SESSION으로 컴파일한 환경. 테이블 이름 t를 nCol=2로 사용한 뒤 nCol=64로 재사용하는 두 블록짜리 changeset이 sessionTableInfo 리셋(sqlite3session.c:5619)을 건너뛰고 첫 블록의 aUpdateMask 너머로 memset을 수행한다. sessionUpdateFind에서 크기 12의 ASan WRITE가 발생한다. 대조군은 단일 2열 UPDATE로 apply-rc=0이다.

SESSION이 켜져 있지 않다면 기본 amalgamation에는 해당하지 않는다. CVE-2026-50812 NPD는 3.53.2+에서 종료되었다. 무기화된 RCE 페이로드가 아니다. 오라클은 ASan WRITE이다.

ID아직 CVE 없음
분류힙 OOB 쓰기 (크기 12의 ASan WRITE, RCE는 입증되지 않음)
도달 범위로컬 (sqlite3changeset_apply*를 통한 신뢰할 수 없는 changeset)
CWECWE-787
CVSS높음: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
제품SQLite Session 확장 (Hwaci)
영향받는 버전3.53.4 (b09c88c)를 -DSQLITE_ENABLE_SESSION으로 컴파일한 경우
인증호스트가 신뢰할 수 없는 changeset을 적용함
라이선스GNU Affero GPL v3.0
랩127.0.0.1:18900 전용. 크기 12의 ASan WRITE 증거.

공격자가 할 수 있는 일

두 번째 테이블 블록이 더 큰 nCol로 테이블 이름을 재사용하는 신뢰할 수 없는 changeset을 적용한다. 힙 OOB 쓰기. 확장 기능을 컴파일해야 한다. SESSION이 켜져 있지 않다면 기본 amalgamation에는 해당하지 않는다.

첫 블록은 pIter->nCol을 기준으로 aUpdateMask를 할당한다. 이후 동일 이름 블록은 sessionTableInfo 리셋을 건너뛰고 더 큰 마스크를 기존 할당 위에 memset한다. 랩: nCol=2 이후 nCol=64 UPDATE. sessionUpdateFind에서 크기 12의 ASan WRITE가 발생한다. 대조군은 단일 2열 UPDATE로 apply-rc=0이다.

이 팩을 write-what-where 가젯으로 취급하지 말 것. 크기 12의 ASan WRITE가 오라클이다.

발견 경위

3.53.2 FTS5 / session-NPD 파동 이후 SQLite 3.53.4를 대상으로 스무 차례의 소스 헌팅을 수행했다. CVE-2026-50812는 종료되었다(sessionBindRow가 누락된 값을 SQLITE_CORRUPT로 처리함). Session은 여전히 SessionApplyCtx를 테이블 이름만으로 키잉한다. 동일한 이름과 더 큰 선언 열 수를 가진 두 번째 블록이 aUpdateMask를 재사용한다.

이미 기록된 잘못된 방향: 기본 amalgamation을 범위 내로 간주함(SESSION이 꺼져 있음), CVE-2026-50812 재신고, 2열 스키마에 대해 nCol=64의 단일 테이블 블록 전송(schemaMismatch, 쓰기 없음), 12바이트 memset으로 RCE를 주장함.

랩

cd lab
./run.sh

공식 sqlite-src-3530400 zip의 ASan 아말감. 추가로 -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK를 컴파일합니다. 상태 확인은 127.0.0.1:18900에서 수행합니다. 루프백에 바인딩합니다.

SUCCESS sqlite-session-ncol how=asan-heap-write-sessionUpdateFind write-size=12 control-apply-rc=0 SQLITE-SESSION-NCOL-WITNESS

수정

이후 변경 집합 테이블 블록이 이름을 재사용할 때, 새 이름이 이미 하는 방식대로 SessionApplyCtx를 재구성합니다: aUpdateMask를 해제하고, sessionTableInfo를 다시 실행하며, 실제 스키마보다 큰 nCol을 거부합니다. 트렁크 3f57024aec / 브랜치-3.53 a1dd7123d8 (2026-08-17)은 이 GA 이후입니다.

참고 자료

  • https://sqlite.org/src 태그 version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite/blob/b09c88c14082339b66c7b7158d609a771e64ca69/ext/session/sqlite3session.c sessionChangesetApply :5619, sessionUpdateFind :4381-4412
  • 포럼 https://sqlite.org/bugs/info/2026-08-16T10:15:25Z
  • CVE-2026-50812 세션 NPD는 3.53.2+에서 종료됨
도구 다운로드