SecurityInsider
Le blog des experts sécurité Wavestone

Introduction à la sécurité des Mainframes – Partie 1


Introduction

Le mot « relique » est souvent associé à la technologie Mainframe. Pourtant ces machines portent bien souvent la majeure partie du business des entreprises : transfert de fonds, réservation de billets, stockage de portfolios, etc.

Toute personne ayant utilisé un de ces services a donc de facto déjà interagi avec un Mainframe à une ou plusieurs reprises.
« Affirmer que le mainframe est une relique, c’est traiter Windows 10 d’obsolète car son noyau contient du code datant de Windows NT. ».
En effet, les systèmes d’exploitation Z/OS, Z/VM, etc. sont régulièrement maintenus et mis à jour par IBM. La dernière version de Z/OS étant la 2.1 (2014).

Spécifications matérielles

La série Z a été présentée par IBM dans les années 2000 succédant à la génération OS3xx :

Quelques chiffres sur le modèle H89 de la série Z13 (parue en 2015) afin de mieux illustrer nos propos :
  • 89 processeurs à usage général ;
  • 89 processeurs dédiés à Unix et Z/VM ;
  • 44 processeurs dédiés aux traitements Java et XML ;
  • jusqu’à 3To de mémoire ;
  • 89 processeurs en mode fail-over dans le cas d’une défaillance d’un des processeurs actifs.
Comme le constate le lecteur, le mot relique est peu adapté pour décrire une machine de 3To de RAM.
Aussi, un mainframe gère parfaitement le Web et tous les protocoles et langages qui y sont associés : PHP, JAVA, SOAP, XML, etc.

À titre d’exemple, l’incident Logica en 2012 où des attaquants ont compromis un Mainframe à la recherche d’informations clients, exposait justement une application Web sur Mainframe qui a servi de porte d’entrée aux attaquants. 

Cas d’usage en entreprise

L’apport principal du Mainframe est sa stabilité et sa performance. De ce fait, presque toute application critique pour le business de l’entreprise avec de fortes contraintes de disponibilité tourne sur un Mainframe :
  • la base de données contenant le solde des clients ;
  • l’application de transaction contactée par le distributeur de billets ;
  • l’application de réservation des billets d’avion en ligne ;
  • le système de gestion des employés, etc.

Systèmes d’exploitation

Différents systèmes d’exploitation peuvent être installés sur l’architecture Z :
  • Z/OS : le système d’exploitation de prédilection souvent rencontré sur les Mainframes ;
  • Z/VM : un système d’exploitation en single user qui fait office d’hyperviseur et gère une ou plusieurs machines virtuelles. Ces machines virtuelles peuvent faire tourner un système Linux, Z/OS, Windows, etc. ;
  • z/TPF : Un système d’exploitation orienté gestion des transactions souvent prisé par les compagnies aériennes ;
  • etc.
Nous nous intéresserons dans notre étude presque exclusivement au système d’exploitation Z/OS.

Z dans la nature

Compte tenu de la nature critique de la fonction qu’ils remplissent, exposer des mainframes sur le LAN peut engendrer un certain nombre de risques d’incidents de sécurité. Exposer un Mainframe sur Internet par contre, revient à mettre le coffre-fort d’une banque dans le jardin... du voisin.
Le site Web mainframesproject.tumblr.com contient différents exemples de consoles d’accès au Mainframe exposées sur internet.

Premiers pas avec la console TSO

La console TSO représente le moyen d’accès standard au Mainframe. Développeurs et administrateurs l’utilisent quotidiennement afin de mener à bien leurs tâches respectives.
Il est nécessaire pour cela d’avoir un émulateur 3270 type quick3270 ou bien le package x3270 sur Linux (ou encore le vrai terminal 3270).

Le plus souvent, c’est une interface VTAM qui accueille l’utilisateur et lui propose de renseigner l’application qu’il souhaite lancer, TSO en l’occurence.


VTAM est un système d’interfaçage avec le protocole SNA développé par IBM et principalement utilisé pour la communication entre Mainframes (sysplex) ou périphériques internes.

Le point essentiel à retenir est que le protocole TN3270 utilisé par les émulateurs est  basé sur Telnet, et transite donc par défaut en clair sur le réseau. Une capture Wireshark permet ainsi de récupérer les authentifiants de l’utilisateur :

Il est cependant nécessaire de positionner l’encodage à EBCDIC au lieu d’ASCII afin de visualiser correctement le contenu.

De plus TSO renvoie une erreur verbeuse lorsque l’utilisateur renseigné n’existe pas.

Aspects sécurité

La brique sécurité sur Mainframe n’est pas portée par le système d’exploitation, mais par un composant externe qui peut être RACF, CA TopSecret, etc.
RACF étant un produit IBM, il occupe la plus grande part de marché. Il gère les droits d’accès à l’ensemble des ressources : programmes, dataset (fichiers), etc.

RACF impose des limitations sur les utilisateurs et mots de passe qu’il est intéressant de connaître. En effet :
  • les noms d’utilisateurs et mots de passe sont limités à 8 caractères maximum ;
  • la casse n’est pas prise en compte par défaut ;
  • l’algorithme de hashage utilisé est basé sur DES ;
  • le sel utilisé correspond au nom d’utilisateur ;
  • uniquement trois caractères spéciaux sont supportés : #, @ et &  (dits caractères nationaux),
  • les règles de politique de mot de passe sont très limitées : il n’est pas possible d’implémenter les règles suivantes par exemple : « présence d’au moins 1 chiffre dans le mot de passe», « au moins 2 caractères spéciaux », etc.
Couplé avec la possibilité d’énumérer les comptes TSO valides, il est possible de mener des attaques par force brute assez efficaces.

Dans la suite de cette série "back to the future" sur la sécurité des Mainframes, nous déroulerons un scénario de test d'intrusion classique sur Mainframe.
Ayoub ELAASSAL

5 commentaires:

  1. Bonjour,
    Merci pour cet article, très intéressant. J'aurais juste une petite question : est-ce qu'une partie 2 (et éventuellement 3 et 4) est prévue ?
    D'avance merci !

    RépondreSupprimer
    Réponses
    1. Bonjour,
      Une partie 2 est bien prévue, et devrait être mise en ligne très prochainement ;)
      D'autres articles sont également à venir sur le sujet, n'hésitez pas à suivre notre fil Twitter pour ne rien louper des prochaines publications!
      L'équipe SecurityInsider

      Supprimer
  2. Très bon article , interressant. petite nouveauté : la dernière version en date est la V2R2 (28 juillet 2015)

    RépondreSupprimer
  3. les limitations sur les passwords ont beaucoup évolués chiffement AES (au lieu de DES), caractères spéciaux élargi, casse de caractères, et surtout les régles de password peuvent être bien plus compliqués , je vous invites à regarder du côté du new-password exit (ICHPWX01)

    RépondreSupprimer
  4. Bonjour,
    Merci pour le commentaire. Effectivement il y a bien eu un effort (toujours en cours d’ailleurs) de la part d’IBM afin d’améliorer la gestion des mots de passe. Concernant les exits, il est nécessaire de considérer plusieurs facteurs :
    • Beaucoup d’entreprises refusent d’implémenter des exits pour des raisons de performance et surtout de stabilité. D’ailleurs le document officiel d’IBM ftp://public.dhe.ibm.com/s390/zos/racf/rexxpwexit/ichpwx01ReadMe.pdf demande clairement de garder les règles SETROPTS en place dans le cas d’un bug au niveau de l’exit ICHPWX01.
    • L’exit ICHPWX01 doit être modifié pour accepter des caractères spéciaux supplémentaires ftp://public.dhe.ibm.com/s390/zos/racf/pdf/oa43999.pdf
    • Enfin, même si les exits ICHPWX01 et ICHPWX11 sont en place et que l’utilisateur s’authentifie via passphrase, le mot de passe est toujours stocké en DES sur RACF (et réutilisable )

    Pour pallier à cela, IBM a implémenté de nouvelles fonctions dans l’APAR OA43998 dont le détail est ici : ftp://public.dhe.ibm.com/eserver/zseries/zos/racf/pdf/nyrug_2014_11_racf_update.pdf. La configuration par défaut ne change pas (DES et absence de la casse au niveau des mots de passe), toutefois il est possible de durcir cette configuration :
    • L’algorithme KDFAES peut très bien être utilisé au lieu de DES mais il faut penser à convertir tous les mots de passe, supprimer l’historique, etc.
    • Plusieurs caractères spéciaux peuvent être définis
    • Des utilisateurs peuvent uniquement s’authentifier via passphrase.
    • …

    Malgré ces changements le fait est que, pour la plupart des clients, les applications historiques hébergées sur Mainframe risquent de ne pas être compatibles avec ces nouvelles restrictions (la saisie des caractères se fait uniquement en majuscule, le champ de saisie est limité à 8 caractères, etc.) ce qui pourrait entraver le durcissement des règles actuelles. D’où notre propos de faible politique de mot de passe qui reflète ce que nous observons sur le terrain.

    RépondreSupprimer