Étude § 04 · Mission Ascend Partners

Audit forensique d’un moteur de scoring (cyber-résilience)

Reverse-eng · VBA→Py · cause racine · 304 tests

Mission Ascend Partners : chez un client engagé dans un arbitrage d’investissement portant sur plusieurs actifs d’infrastructure, les scores de cyber-résilience de ces actifs avaient chuté sans explication.

L’outil à l’origine de ces scores était un moteur de scoring hérité, écrit en VBA, dont il existait trois versions successives.

Avant de pouvoir expliquer la chute, il fallait d’abord la reproduire : la contrainte de méthode était de reconstruire ces moteurs jusqu’à retrouver les scores au centième près, et seulement ensuite chercher la cause.

L’enjeu dépassait le diagnostic technique : la méthode de scoring elle-même était contestée en interne, et la conclusion devait être présentée en comité exécutif du client pour arbitrage d’investissement.

J’ai reconstruit en Python les trois moteurs de scoring successifs à partir du code et des données réelles, jusqu’à reproduire les scores au centième près.

Schéma de l’audit forensiqueUn moteur de scoring VBA hérité est reconstruit en trois moteurs Python indépendants. Une courbe de convergence rejoint la ligne cible du score à plus ou moins zéro virgule zéro un, validée par un harnais de trois cent quatre tests, jusqu’à la cause racine : une requalification des réponses par coefficient combinée à une moyenne géométrique sur huit piliers. Le résultat est présenté en comité exécutif du client pour arbitrage d’investissement.MOTEUR VBAHÉRITÉ3 MOTEURSRECONSTRUITSMOTEUR 1MOTEUR 2MOTEUR 3SCORE CIBLE ± 0,01304 TESTSHARNAIS DEVÉRIFICATIONCAUSE RACINEREQUALIFICATIONPAR COEFFICIENTMOYENNEGÉOMÉTRIQUE· 8 PILIERSCOMEX CLIENTARBITRAGED’INVESTISSEMENTSchéma de l’audit forensiqueUn moteur de scoring VBA hérité est reconstruit en trois moteurs Python indépendants. Une courbe de convergence rejoint la ligne cible du score à plus ou moins zéro virgule zéro un, validée par un harnais de trois cent quatre tests, jusqu’à la cause racine : une requalification des réponses par coefficient combinée à une moyenne géométrique sur huit piliers. Le résultat est présenté en comité exécutif du client pour arbitrage d’investissement.MOTEUR VBA HÉRITÉ3 MOTEURS RECONSTRUITSMOTEUR 1MOTEUR 2MOTEUR 3SCORE CIBLE ± 0,01304 TESTSHARNAIS DE VÉRIFICATIONCAUSE RACINEREQUALIFICATION PAR COEFFICIENTMOYENNE GÉOMÉTRIQUE · 8 PILIERSCOMEX CLIENTARBITRAGE D’INVESTISSEMENT
SCHÉMAMoteur VBA hérité reconstruit en trois moteurs Python, validés par 304 tests jusqu’à la cause racine de l’écart.

La reconstruction a été validée par 304 tests, puis restituée sous forme de visualisations pour le comité.

Une note de gouvernance a accompagné la livraison, pour aligner les équipes sur une méthode de scoring contestée en interne.

Décision clé

Reconstruire les trois moteurs de scoring en Python à partir du code et des données réelles, jusqu’à reproduire les scores au centième près.

Arbitrage

Reproduire d’abord, conclure ensuite. Cause trouvée : requalification des réponses par coefficient plus passage à la moyenne géométrique au niveau pilier.

Huit piliers à pondérations fixes : c’est à ce niveau que s’applique la moyenne géométrique, sur des réponses déjà requalifiées par coefficient.

304 tests, score reproduit au centième. Présenté en comité exécutif du client pour arbitrage d’investissement.

Reverse-engineering de code legacy, méthode de cause racine, et trancher un désaccord méthodologique par la preuve.