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 증가

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - sqlite-session-ncol

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  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 extra (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 쓰기. extra 컴파일. 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 amalgamation. 추가 컴파일 -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

수정

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

참고

  • https://sqlite.org/src tag 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 session NPD는 3.53.2+에서 종료됨
도구 다운로드