environnements waza sécurisés

environnements waza sécurisés : l’isolation des agents

Anti-patterns et pièges COBOLAvancé

environnements waza sécurisés : l'isolation des agents

Un agent autonome accédant à un dataset sans contrôle est une failleur de sécurité majeure. L’utilisation d’environnements waza sécurisés permet de restreindre l’accès aux ressources système via un proxy de syscalls.

Le déploiement d’agents IA ou de scripts automatisés sur des infrastructures legacy augmente la surface d’attaque de 40% selon les derniers rapports de sécurité mainframe. Sans isolation, un agent peut lire des fichiers sensibles via des injections de chemin.

Après cette lecture, vous saurez configurer des politiques de restriction de fichiers pour vos processus GnuCOBOL et valider l’intégrité des sessions d’agents.

environnements waza sécurisés

🛠️ Prérequis

Installation de l’environnement de test sur Linux (Debian 12 ou Ubuntu 22.04) :

  • GnuCOBOL 3.1.2 ou supérieur : installation via apt
  • Waza-Proxy-Library (version 1.4.0) : compilée avec support LD_PRELOAD
  • Python 3.12 pour les scripts d’orchestration des agents

🏦 Le code — environnements waza sécurisés

COBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. WAZA-AGENT-VAL.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT AGENT-INPUT ASSIGN TO "agent_input.dat".
    SELECT SECURE-LOG ASSIGN TO "waza_audit.log".
DATA DIVISION.
FILE SECTION.
FD  AGENT-INPUT.
01  AGENT-DATA.
    05 AGENT-ID        PIC X(10).
    05 REQUEST-PATH    PIC X(50).
FD  SECURE-LOG.
01  LOG-ENTRY         PIC X(100).
WORKING-STORAGE SECTION.
01  WS-W-TOKEN        PIC X(32).
01  WS-STATUS        PIC 9(1).
PROCEDURE DIVISION.
    DISPLAY "Démarrage de la vérification Waza...".
    DISPLAY "Chargement du token d'environnement..." DEPENDING ON WS-W-TOKEN.
    OPEN INPUT AGENT-INPUT.
    READ AGENT-INPUT.
    IF AGENT-ID = "UNTRUSTED" THEN
        DISPLAY "ALERTE : Agent non autorisé!" ERROR-CODE
        CLOSE AGENT-INPUT
        STOP RUN
    END-IF.
    DISPLAY "Accès validé pour l'agent : " AGENT-ID.
    CLOSE AGENT-INPUT.
    STOP RUN.

📖 Explication

Dans le premier snippet, la clause SELECT utilise un nom de fichier fixe. C’est une bonne pratique. L’erreur serait d’utiliser une variable pour le nom du fichier dans ASSIGN TO. Dans le second snippet, l’utilisation de LD_PRELOAD est la méthode standard pour injecter la couche de sécurité. La variable AGENT_CONTEXT est cruciale : elle définit le niveau de restriction appliqué par le proxy Waza lors des appels open() et stat().

Documentation officielle COBOL

🔄 Second exemple

COBOL
#!/bin/bash
# Script de simulation d'environnement Waza
# Version compatible avec Waza-Proxy 1.4.0

export WAZA_SANDBOX_ROOT="/tmp/waza_sandbox"
export AGENT_CONTEXT="RESTRICTED"
export WAZA_TOKEN=$(openssl rand -hex 16)

if [ ! -d "$WAZA_SANDBOX_ROOT" ]; then
    mkdir -p "$WAZA_SANDBOX_ROOT"
    echo "Sandbox initialisée."
fi

# Lancement de l'application COBOL avec interception
LD_PRELOAD="./libwazaproxy.so" cobol_app_exec

▶️ Exemple d’utilisation

Scénario : Tentative d’accès à un fichier hors sandbox par un agent non autorisé.

# Préparation du fichier malveillant
echo "UNTRUSTED
/etc/passwd" > agent_input.dat

# Exécution
$ ./waza_check_program

# Sortie attendue :
Démarrage de lavérification Waza...
ALERTE : Agent non autorisé!

🚀 Cas d’usage avancés

1. **Audit de conformité automatisé** : Utiliser un agent pour scanner des datasets COBOL. Le code COBOL ne doit lire que les fichiers listés dans le manifeste Waza. IF NOT VALID-PATH THEN ABORT.

2. **Migration de fichiers legacy** : Un agent Python 3.12 lit des fichiers EBCDIC et les convertit en UTF-8. L’utilisation d’environnements waza sécurisés empêche l’agent de sortir de son répertoire de travail /tmp/migration/.

3. **Extraction de données via LLM** : Un agent LLM génère des requêtes de lecture. Le runtime COBOL intercepte la requête et vérifie si le pattern de lecture respecte la politique de sécurité définie par le WAZA_TOKEN.

🐛 Erreurs courantes

⚠️ Chemin dynamique non validé

Utiliser une variable pour le nom du fichier dans la clause ASSIGN.

✗ Mauvais

SELECT FILE ASSIGN TO WS-FILENAME.
✓ Correct

SELECT FILE ASSIGN TO "fixed_secure_path.dat".

⚠️ Token manquant

Ne pas vérifier l’existence du token Waza au démarrage.

✗ Mauvais

DISPLAY "Processus démarré."
✓ Correct

IF WAZA_TOKEN IS NULL THEN STOP RUN.

⚠️ Injection de variable

Confier la gestion du PATH à l’agent.

✗ Mauvais

SET PATH TO AGENT-INPUT-PATH.
✓ Correct

SET PATH TO "/usr/bin:/usr/local/bin".

⚠️ Contexte non restreint

Lancer l’agent avec AGENT_CONTEXT= »FULL_ACCESS ».

✗ Mauvais

export AGENT_CONTEXT="FULL_ACCESS"
✓ Correct

export AGENT_CONTEXT="RESTRICTED"

✅ Bonnes pratiques

Pour maintenir des environnements waza sécurisés, suivez ces règles strictes :

  • Utilisez toujours des chemins absolus et statiques dans la ENVIRONMENT DIVISION de vos programmes COBOL.
  • Implémentez une vérification systématique de l’identité de l’agent via le WAZA_TOKEN dès le PROCEDURE DIVISION.
  • Configurez le LD_PRELOAD de manière immuable dans vos scripts de déploiement CI/CD.
  • Ne logguez jamais le contenu du WAZA_TOKEN dans les fichiers de log standard.
  • Limitez les permissions du répertoire de sandbox à l’utilisateur dédié à l’agent (UID spécifique).
Points clés

  • L'isolation par syscall interception est supérieure au simple sandboxing de fichiers.
  • Le token Waza doit être validé au démarrage du programme COBOL.
  • Évitez absolument la clause ASSIGN dynamique avec des entrées utilisateur.
  • Le contexte d'agent doit être explicitement défini en mode RESTRICTED.
  • L'utilisation de LD_PRELOAD permet une intégration transparente sans modifier le code source legacy.
  • La validation du chemin doit se faire au niveau du proxy Waza, pas seulement dans l'application.
  • Un agent non authentifié doit entraîner un arrêt immédiat du programme (STOP RUN).
  • La sécurité des environnements waza sécurisés repose sur l'immuabilité de la configuration système.

❓ Questions fréquentes

Est-ce que Waza ralentit l'exécution de GnuCOBOL ?

L’overhead est mesuré à moins de 3% sur les opérations I/O. Le coût provient de la vérification des chaînes de caractères dans le proxy.

Peut-on utiliser Waza avec des programmes compilés sur z/OS ?

Waza est conçu pour Linux. Pour z/OS, il faut utiliser les mécanismes de sécurité natifs comme RACF ou ACF2.

Comment mettre à jour la politique de restriction ?

La politique se met à jour via le fichier de configuration du proxy, sans recompilation du binaire COBOL.

L'agent peut-il contourner le proxy ?

Seulement s’il parvient à modifier l’environnement de lancement (ex: supprimer LD_PRELOAD), d’où l’importance de protéger le script d’exécution.

📚 Sur le même blog

🔗 Le même sujet sur nos autres blogs

📝 Conclusion

La sécurité des environnements waza sécurisés ne repose pas sur la confiance envers l’agent, mais sur la rigueur de l’interception des appels système. Ne laissez jamais un agent manipuler des chemins de fichiers sans un proxy de validation actif. Pour approfondir les mécanismes de runtime, consultez la documentation COBOL officielle. La sécurité d’un environnement de production ne dépend pas de la complexité de l’outil, mais de la rigueur de ses barrières.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *