{"id":55807,"date":"2020-01-29T00:00:00","date_gmt":"2020-01-28T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/uyazvimost-v-opensmtpd-pozvolyayushhaya-udalyonno-vypolnit-kod-s-pravami-root"},"modified":"2020-02-18T14:03:57","modified_gmt":"2020-02-18T11:03:57","slug":"uyazvimost-v-opensmtpd-pozvolyayushhaya-udalyonno-vypolnit-kod-s-pravami-root","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/news\/uyazvimost-v-opensmtpd-pozvolyayushhaya-udalyonno-vypolnit-kod-s-pravami-root","title":{"rendered":"Vuln\u00e9rabilit\u00e9 dans OpenSMTPD permettant l'ex\u00e9cution de code \u00e0 distance avec des droits root","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dans le projet en d\u00e9veloppement du serveur de messagerie OpenBSD <noindex><a rel=\"nofollow\" href=\"https:\/\/opensmtpd.org\/\">OpenSMTPD<\/a><\/noindex> une vuln\u00e9rabilit\u00e9 a \u00e9t\u00e9 identifi\u00e9e <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openwall.com\/lists\/oss-security\/2020\/01\/28\/3\">vuln\u00e9rabilit\u00e9 critique<\/a><\/noindex> (CVE-2020-7247), permettant d'ex\u00e9cuter \u00e0 distance des commandes shell sur le serveur avec les droits de l'utilisateur root. La vuln\u00e9rabilit\u00e9 a \u00e9t\u00e9 d\u00e9couverte lors d'un audit de reprise effectu\u00e9 par la soci\u00e9t\u00e9 Qualys Security (l'audit pr\u00e9c\u00e9dent d'OpenSMTPD <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=43090\">a \u00e9t\u00e9 r\u00e9alis\u00e9<\/a><\/noindex> en 2015, tandis que la nouvelle vuln\u00e9rabilit\u00e9 est pr\u00e9sente depuis mai 2018). Le probl\u00e8me <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mail-archive.com\/misc@opensmtpd.org\/msg04850.html\">a \u00e9t\u00e9 corrig\u00e9e<\/a><\/noindex> se trouve dans la version d'OpenSMTPD 6.6.2. Tous les utilisateurs sont fortement conseill\u00e9s de mettre \u00e0 jour imm\u00e9diatement (pour OpenBSD, le correctif peut \u00eatre install\u00e9 via syspatch).<\/p>\n<p>Deux variantes d'attaque ont \u00e9t\u00e9 propos\u00e9es. La premi\u00e8re variante fonctionne dans la configuration par d\u00e9faut d'OpenSMTPD (acceptation des requ\u00eates uniquement depuis localhost) et permet d'exploiter le probl\u00e8me localement, lorsque l'attaquant peut acc\u00e9der \u00e0 l'interface r\u00e9seau locale (loopback) sur le serveur (par exemple, sur les syst\u00e8mes d'h\u00e9bergement). La seconde variante se manifeste lorsque OpenSMTPD est configur\u00e9 pour accepter des requ\u00eates r\u00e9seau externes (serveur de messagerie acceptant du courrier ext\u00e9rieur). Les chercheurs ont pr\u00e9par\u00e9 un prototype d'exploit qui fonctionne avec la variante d'OpenSMTPD incluse dans OpenBSD 6.6 ainsi qu'avec la version portable pour d'autres syst\u00e8mes d'exploitation (test\u00e9 sur Debian Testing).<\/p>\n<p>Le probl\u00e8me est caus\u00e9 par une erreur dans la fonction smtp_mailaddr(), appel\u00e9e pour v\u00e9rifier la validit\u00e9 des valeurs dans les champs \u00ab MAIL FROM \u00bb et \u00ab RCPT TO \u00bb, qui d\u00e9finissent l'exp\u00e9diteur\/le destinataire et sont envoy\u00e9s lors de la connexion au serveur de messagerie. Pour v\u00e9rifier la partie de l'adresse \u00e9lectronique avant le symbole \u00ab @ \u00bb, la fonction valid_localpart() est appel\u00e9e dans smtp_mailaddr().<br \/>\nFonction valid_localpart(), qui consid\u00e8re les caract\u00e8res \u00ab !#$%\u2019*?\/^`{|}~+-=_ \u00bb comme valides (MAILADDR_ALLOWED), conform\u00e9ment aux exigences de la RFC 5322. <\/p>\n<p>L'\u00e9chappement direct de la cha\u00eene est effectu\u00e9 dans la fonction mda_expand_token(), qui ne remplace que les caract\u00e8res \u00ab !#$%\u2019*?`{|}~ \u00bb (MAILADDR_ESCAPE). Par la suite, la cha\u00eene pr\u00e9par\u00e9e dans mda_expand_token() est utilis\u00e9e lors de l'appel de l'agent de livraison (MDA) \u00e0 l'aide de la commande 'execle(\u00ab \/bin\/sh \u00bb, \u00ab \/bin\/sh \u00bb, \u00ab -c \u00bb, mda_command,\u2026'. Dans le cas de l'insertion d'un courrier dans mbox via \/bin\/sh, la cha\u00eene \u00ab \/usr\/libexec\/mail.local -f %%{mbox.from} %%{user.username} \u00bb est ex\u00e9cut\u00e9e, o\u00f9 la valeur \u00ab % {mbox.from} \u00bb inclut les donn\u00e9es \u00e9chapp\u00e9es du param\u00e8tre \u00ab MAIL FROM \u00bb.<\/p>\n<p>L'essence de la vuln\u00e9rabilit\u00e9 est que smtp_mailaddr() a une erreur logique, entra\u00eenant un code de validation r\u00e9ussi m\u00eame si la partie de l'adresse avant \u00ab @ \u00bb contient des caract\u00e8res non valides, en cas de passage d'un domaine vide dans l'e-mail. De plus, lors de la pr\u00e9paration de la cha\u00eene par la fonction mda_expand_token(), tous les caract\u00e8res sp\u00e9ciaux possibles de la shell ne sont pas \u00e9chapp\u00e9s, seulement ceux permis dans l'adresse \u00e9lectronique. Ainsi, pour ex\u00e9cuter sa commande, il suffit d'utiliser les caract\u00e8res \u00ab ; \u00bb et un espace dans la partie locale de l'e-mail, qui ne sont pas compris dans l'ensemble MAILADDR_ESCAPE et ne sont pas \u00e9chapp\u00e9s. Par exemple:<\/p>\n<p>   $ nc 127.0.0.1 25<\/p>\n<p>   HELO professor.falken<br \/>\n   MAIL FROM:<br \/>\n   RCPT TO:<br \/>\n   DATA<br \/>\n   .<br \/>\n   QUIT<\/p>\n<p>Apr\u00e8s cette session, OpenSMTPD ex\u00e9cutera une commande shell lors de la livraison dans mbox. <\/p>\n<p>   \/usr\/libexec\/mail.local -f ;sleep 66; root<\/p>\n<p>Ainsi, les possibilit\u00e9s d'attaque sont limit\u00e9es par le fait que la partie locale de l'adresse ne peut pas d\u00e9passer 64 caract\u00e8res, et les caract\u00e8res sp\u00e9ciaux \u2018$\u2019 et \u2018|\u2019 sont remplac\u00e9s par \u00ab : \u00bb lors de l'\u00e9chappement. Pour contourner cette limitation, on a utilis\u00e9 le fait que le corps du courrier est transmis apr\u00e8s le lancement de \/usr\/libexec\/mail.local via le flux d'entr\u00e9e, c'est-\u00e0-dire qu'en manipulant l'adresse, on peut seulement lancer l'interpr\u00e9teur de commande sh et utiliser le corps du message comme un ensemble d'instructions. Comme les en-t\u00eates SMTP de service sont indiqu\u00e9s au d\u00e9but du courrier, il est propos\u00e9 de les ignorer en appelant la commande read dans une boucle. L'exploit fonctionnel prend une forme approximativement telle que :<\/p>\n<p>   $ nc 192.168.56.143 25<\/p>\n<p>   HELO professor.falken<br \/>\n   MAIL FROM:<br \/>\n   RCPT TO:<br \/>\n   DATA<br \/>\n   #0<br \/>\n   #1<br \/>\n   \u2026<br \/>\n   #d<br \/>\n   for i in W O P R; do<br \/>\n        echo -n \u00ab ($i) \u00bb &gt; &amp;&amp; id || break<br \/>\n   done &gt; \/root\/x.\u2018id -u\u2019.$$<br \/>\n   .<br \/>\n   QUIT<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Source : <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=52267\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c OpenBSD \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 OpenSMTPD \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c (CVE-2020-7247), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c shell-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f root. \u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0430 \u0432 \u0445\u043e\u0434\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Qualys Security (\u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0430\u0443\u0434\u0438\u0442 OpenSMTPD \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0441\u044f \u0432 2015 \u0433\u043e\u0434\u0443, \u0430 \u043d\u043e\u0432\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u043c\u0430\u044f 2018 \u0433\u043e\u0434\u0430). \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0430 \u0432 \u0432\u044b\u043f\u0443\u0441\u043a\u0435 OpenSMTPD 6.6.2. \u0412\u0441\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-55807","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c OpenBSD \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 OpenSMTPD \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0430\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/news\/uyazvimost-v-opensmtpd-pozvolyayushhaya-udalyonno-vypolnit-kod-s-pravami-root\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 OpenSMTPD, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u0434 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 root | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c OpenBSD \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 OpenSMTPD \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0430\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/news\/uyazvimost-v-opensmtpd-pozvolyayushhaya-udalyonno-vypolnit-kod-s-pravami-root\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-28T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:57+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Vuln\u00e9rabilit\u00e9 dans OpenSMTPD, permettant l'ex\u00e9cution distante de code avec des privil\u00e8ges root | ProHoster","description":"Dans le projet en d\u00e9veloppement du serveur de messagerie OpenBSD OpenSMTPD, une vuln\u00e9rabilit\u00e9 a \u00e9t\u00e9 identifi\u00e9e.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/uyazvimost-v-opensmtpd-pozvolyayushhaya-udalyonno-vypolnit-kod-s-pravami-root","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 OpenSMTPD, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u0434 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 root | ProHoster","og:description":"\u0412 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c OpenBSD \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 OpenSMTPD \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0430","og:url":"https:\/\/prohoster.info\/fr\/blog\/news\/uyazvimost-v-opensmtpd-pozvolyayushhaya-udalyonno-vypolnit-kod-s-pravami-root","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-28T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:57+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55807","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:36:30","updated":"2022-10-09 15:09:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/55807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=55807"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/55807\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=55807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=55807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=55807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}