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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sqlite-fts5-securedel — SQLite 3.53.4 - 높음 - 로컬 - 크래시 - FTS5 secure-delete PutVarint 푸터 오버런 | Kitploit
도구/GitHubGitHub/abraxas/sqlite-fts5-securedel
Static AnalysisMemory ForensicsVulnerability AnalysisExploitationFuzzingBinary AnalysisPapers & ResearchDatabase Security
GitHubabraxas/sqlite-fts5-securedel

sqlite-fts5-securedel

SQLite 3.53.4 - 높음 - 로컬 - 크래시 - FTS5 secure-delete PutVarint 푸터 오버런

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - sqlite-fts5-securedel

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

sqlite-fts5-securedel

분류: 크래시 도달 범위: 로컬

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69) - Hwaci

fts5DoSecureDelete는 nPg = iPgIdx 이후 sqlite3Fts5PutVarint로 FTS5 리프 푸터를 재구성합니다. 푸터에서 디코딩된 키 오프셋이 원본 블롭에 대해 상한이 적용되지 않아, PutVarint 커서가 nn + FTS5_DATA_PADDING (20)을 벗어납니다. 일반적으로 추가 SQLITE_ENABLE_FTS5가 필요합니다. 공격 데이터베이스는 이미 secure-delete를 사용했습니다.

이는 이후 트렁크 Fossil 9cd4f9e920 / Git d9de6eedbe91 / branch-3.53 34171bee08 (2026-08-11, YEONBA)의 잔재입니다. 해당 체크인은 이 GA 이후입니다. 이는 not CVE-2026-11824가 아닙니다: 이 핀에서 fts5LeafRead는 이미 szLeaf<4를 거부합니다.

ID아직 CVE 없음
분류크래시 (ASan 크기 1 WRITE; RCE는 입증되지 않음)
도달 범위로컬 (조작된 FTS5 데이터베이스를 연 뒤 DELETE/flush)
CWECWE-787
CVSS높음: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
제품SQLite (GitHub 미러 sqlite/sqlite)
영향받는 버전3.53.4 SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
인증없음 (신뢰할 수 없는 인덱스 파일)
라이선스GNU Affero GPL v3.0
랩127.0.0.1:18860 전용. ASan 힙 쓰기. RCE 페이로드 없음.

공격자가 할 수 있는 일

이미 secure-delete를 사용한 조작된 FTS5 데이터베이스를 연 뒤 DELETE(또는 secure-delete를 flush하는 모든 쓰기)를 수행하면 fts5DoSecureDelete가 Fts5Data를 넘어 푸터 varint를 씁니다. 크래시 / ASan 크기 1 힙 쓰기. RCE는 입증되지 않음. CVE-2026-11824가 아님.

MATCH만으로는 이 싱크가 아닙니다. 트리거는 DELETE/flush입니다. 조작된 파일은 SQLITE_DBCONFIG_DEFENSIVE를 끌 필요가 없습니다.

발견 방법

다른 데이터베이스 및 HTTP 서버 핀 이후 SQLite 3.53.4에 대한 20회의 소스 헌트. CVE-2026-11822 / CVE-2026-11824는 이 트리에서 닫혀 있습니다 (fts5LeafRead szLeaf<4). YEONBA의 이후 트렁크 바운드는 그렇지 않습니다. 3.53.4 fts5corruptB.test 파일은 여전히 테스트 3.2에서 끝납니다; 트렁크 테스트 4.0은 hexdb에 DELETE FROM t WHERE rowid = 1을 더한 것입니다.

iPgIdx -= nShift;
nPg = iPgIdx;
fts5PutU16(&aPg[2], iPgIdx);

for(iIdx=0; iIdx<nIdx; /* no-op */){
  u32 iVal = 0;
  iIdx += fts5GetVarint32(&aIdx[iIdx], iVal);
  iKeyIn += iVal;
  if( iKeyIn!=iDelKeyOff ){
    int iKeyOut = (iKeyIn - (iKeyIn>iOff ? nShift : 0));
    nPg += sqlite3Fts5PutVarint(&aPg[nPg], iKeyOut - iPrevKeyOut);
    iPrevKeyOut = iKeyOut;
  }
}

ext/fts5/fts5_index.c:5514-5544. iKeyIn은 32비트 int입니다. 이후 트렁크는 원래 nPg를 유지하고, i64 iKeyIn을 사용하며, PutVarint 전에 iKeyIn>nPg를 거부합니다.

잘못된 접근: CVE-2026-11824를 이 버그로 취급; DELETE 대신 MATCH; szLeaf를 범위 내로 유지하고 오버플로하지 않은 라이브 CREATE/INSERT 플랜트; 페이로드 없이 Winter의 WAL-plus-FTS5 체인 RCE라고 부르기.

랩

cd lab
./run.sh

공식 sqlite-src-3530400 zip의 ASan 아말감, -DSQLITE_ENABLE_FTS5. Hexdb lab/yeonba-fts5corruptB-4.hexdb (트렁크 fts5corruptB.test 4.0)가 필요합니다. 루프백 127.0.0.1:18860에 바인드. Compose 프로젝트 sqlite-fts5-securedel.

SUCCESS sqlite-fts5-securedel how=asan-heap-buffer-overflow-write-1-fts5DoSecureDelete db=yeonba-hexdb bytes=5120 SQLITE-FTS5-SECUREDEL-WITNESS

ASan 프레임: fts5PutVarint64 -> sqlite3Fts5PutVarint -> fts5DoSecureDelete / fts5FlushSecureDelete.

수정

원래 nPg를 유지합니다. iKeyIn을 i64로 넓힙니다. sqlite3Fts5PutVarint 전에 iKeyIn>nPg를 거부합니다. 그것이 Fossil 9cd4f9e920 / branch-3.53 34171bee08입니다. 3.53에 체리픽합니다.

참고

  • https://sqlite.org/src 태그 version-3.53.4 Git b09c88c14082339b66c7b7158d609a771e64ca69
  • ext/fts5/fts5_index.c fts5DoSecureDelete, fts5FlushSecureDelete, fts5LeafRead
  • ext/fts5/fts5_varint.c sqlite3Fts5PutVarint
  • 트렁크 수정 Fossil 9cd4f9e920 / Git d9de6eedbe91 / branch-3.53 34171bee08 (2026-08-11, YEONBA)
  • CVE-2026-11824는 닫힌 szLeaf<4 부모이며, 이 잔재가 아닙니다
도구 다운로드