GHSA-38CW-85XC-XR9X: 정체성 위기: SQL 인젝션을 통한 Veramo의 디지털 지갑 덤프

발행: (2026년 1월 17일 오전 10:03 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

취약점 개요

  • 취약점 ID: GHSA-38CW-85XC-XR9X
  • CVE: 해당 없음
  • CVSS 점수: 6.8 (중간)
  • 공개일: 2026-01-16
  • CWE: CWE‑89 (SQL Injection)
  • 공격 벡터: 네트워크 (인증된 사용자)
  • 영향: 높음 – 개인 키와 검증 가능한 증명서의 기밀성 및 무결성

Veramo 프레임워크의 데이터 저장 계층에 심각한 SQL 인젝션 결함이 존재합니다. 인증된 공격자는 API 요청의 order 파라미터를 조작해 ORM이 임의의 SQL을 실행하도록 만들 수 있으며, 이로 인해 DID, 개인 키, 검증 가능한 증명서를 포함한 전체 데이터베이스를 추출할 수 있습니다.

영향을 받는 구성 요소

패키지영향을 받는 버전수정 버전
@veramo/data-store< 6.0.26.0.2
@veramo/data-store-json< 6.0.26.0.2

취약한 함수는 data-store-orm.ts 파일의 decorateQB() 입니다.

패치 상세

--- a/packages/data-store/src/data-store-orm.ts
+++ b/packages/data-store/src/data-store-orm.ts
@@ -1,4 +1,5 @@
+import { ALLOWED_COLUMNS } from './constants'
...
-      qb = qb.addSelect(
-        qb.connection.driver.escape(tableName) + '.' + qb.connection.driver.escape(item.column),
-        item.column,
-      )
+      if (!ALLOWED_COLUMNS.includes(item.column)) {
+        throw new Error('Invalid column')
+      }

주요 변경 사항

  • 컬럼 이름에 대한 허용 목록(ALLOWED_COLUMNS)을 추가했습니다.
  • ORM은 예상치 못한 컬럼이 요청될 경우 오류를 발생시켜 악의적인 정렬 절을 방지합니다.

완화 조치 단계

  1. 패키지 업그레이드

    # npm 사용 시
    npm install @veramo/data-store@^6.0.2 @veramo/data-store-json@^6.0.2
    
    # yarn 사용 시
    yarn add @veramo/data-store@^6.0.2 @veramo/data-store-json@^6.0.2
  2. Veramo 에이전트 재시작 – 업데이트된 라이브러리를 로드합니다.

  3. 맞춤형 데이터 스토어
    decorateQB를 오버라이드한 경우, 컬럼 이름에 대해 동일한 허용 목록 검사를 수행하도록 합니다.

  4. 최소 권한 원칙 적용된 데이터베이스 접근

    • Veramo 에이전트가 사용하는 데이터베이스 사용자가 private-key 테이블을 읽을 필요가 없는 경우 접근을 제한합니다.
    • 개인 키를 별도의, 보다 엄격하게 제어되는 백엔드에 저장하는 것을 고려하십시오.

참고 자료

전체 기술 분석, 인터랙티브 다이어그램 및 익스플로잇 상세 내용은 공식 웹사이트의 권고문을 참고하십시오.

Back to Blog

관련 글

더 보기 »

기술은 구원자가 아니라 촉진자다

왜 사고의 명확성이 사용하는 도구보다 더 중요한가? Technology는 종종 마법 스위치처럼 취급된다—켜기만 하면 모든 것이 개선된다. 새로운 software, ...

에이전틱 코딩에 입문하기

Copilot Agent와의 경험 나는 주로 GitHub Copilot을 사용해 인라인 편집과 PR 리뷰를 수행했으며, 대부분의 사고는 내 머리로 했습니다. 최근 나는 t...