Les développeurs ont corrigé une bibliothèque Ruby populaire pour l’analyse et la conversion des fichiers AsciiDoc afin de protéger les serveurs contre une vulnérabilité d’injection de commande récemment découverte.

Les vulnérabilités d’injection de commande permettent à un attaquant d’exécuter des commandes arbitraires du système d’exploitation sur le serveur qui exécute une application, entraînant généralement la compromission complète de l’application et de toutes ses données.

La bibliothèque Ruby en question, asciidoctor-inclure-ext, est une extension pour la bibliothèque Asciidoctor qui ajoute la possibilité d’inclure des URL distantes et des fichiers locaux dans les documents AsciiDoc. Il a été conçu pour être une bibliothèque extensible.

Transférer des commandes malveillantes

Joern Schneeweisz, ingénieur en sécurité chez GitLab, a découvert qu’il pouvait forcer asciidoctor-include-ext à exécuter des commandes arbitraires en fournissant des chaînes d’entrée spécialement conçues à l’outil.

« [asciidoctor-include-ext] a utilisé `open`/`IO.foreach` pour inclure des fichiers et des URL. Les deux méthodes peuvent être utilisées pour exécuter des commandes lorsque vous ajoutez un symbole de pipe comme `|some_command –some argument` pour lire à partir de la sortie standard de cette commande au lieu d’un fichier », a déclaré Schneeweisz. La gorgée quotidienne.

Une attaque réussie fournirait à un adversaire tous les droits accordés au processus compromis rendant le fichier AsciiDoc. Le bogue a reçu une critique 10.0 CVSS score.

« C’est un peu inquiétant car la vulnérabilité peut être déclenchée dans le rendu normal des documents asciidoctor qui utilisent cette extension », a déclaré Schneeweisz. « L’exploit lui-même est assez facile, un échantillon a été publié dans le message de validation pour le correctif.

Vecteur vieux de plusieurs décennies

Fait intéressant, cette classe de vulnérabilité a été identifiée pour la première fois en 2015. À l’époque, le chercheur en sécurité Egor Homakov détaillé dans un article de blog comment les bibliothèques d’encapsulation Ruby telles que celles utilisées dans asciidoctor-include-ext pourraient être exploitées pour des attaques d’exécution de code à distance (RCE).

« Le comportement par défaut d’open-uri de Ruby est très dangereux et sujet à des bogues RCE comme celui-ci », a déclaré Homakov. La gorgée quotidienne.

«Il aurait certainement dû être supprimé ou divisé en différentes fonctions, par exemple openSystem (avec pipe |), openURI (pour URI) et openFile (pour les fichiers) pour supprimer l’ambiguïté et les risques de sécurité. Je suppose que personne ne s’en souciait assez pour le réparer. De telles choses restent « statu quo » jusqu’à ce qu’une vulnérabilité très critique soit trouvée pour agir. »

«Je pense que la façon d’avoir un | [pipe] ajouté pour lire une commande au lieu d’un fichier n’est tout simplement pas un comportement trop connu dans ces méthodes Ruby », a déclaré Schneeweisz. « C’est facile à manquer et aussi facile à exploiter dans la plupart des cas. »