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.
🛠️ 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
📖 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
▶️ 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.
SELECT FILE ASSIGN TO WS-FILENAME.
SELECT FILE ASSIGN TO "fixed_secure_path.dat".
⚠️ Token manquant
Ne pas vérifier l’existence du token Waza au démarrage.
DISPLAY "Processus démarré."
IF WAZA_TOKEN IS NULL THEN STOP RUN.
⚠️ Injection de variable
Confier la gestion du PATH à l’agent.
SET PATH TO AGENT-INPUT-PATH.
SET PATH TO "/usr/bin:/usr/local/bin".
⚠️ Contexte non restreint
Lancer l’agent avec AGENT_CONTEXT= »FULL_ACCESS ».
export AGENT_CONTEXT="FULL_ACCESS"
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 DIVISIONde vos programmes COBOL. - Implémentez une vérification systématique de l’identité de l’agent via le
WAZA_TOKENdès lePROCEDURE DIVISION. - Configurez le
LD_PRELOADde manière immuable dans vos scripts de déploiement CI/CD. - Ne logguez jamais le contenu du
WAZA_TOKENdans les fichiers de log standard. - Limitez les permissions du répertoire de sandbox à l’utilisateur dédié à l’agent (UID spécifique).
- 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.