Многочисленные критические уязвимости в антивирусах Symantec/Norton

    Опубликован рабочий эксплоит для всех версий антивирусов. Вскрыт факт заимствования кода под GPL




    Вчера Тэвис Орманди (Tavis Ormandy) из хакерского подразделения Project Zero компании Google выложил в открытый доступ информацию о многочисленных уязвимостях в антивирусных программах Symantec, в том числе уязвимостях с удалённым исполнением кода.

    Некоторые специалисты говорят, что установленная на компьютере антивирусная программа, учитывая её максимальный уровень привилегий в системе, может стать дополнительным вектором атаки, то есть дополнительной брешью в общей безопасности системы. Пример Symantec демонстрирует это настолько явно, насколько такое возможно. В некоторых случаях под Windows вредоносный код загружается прямо в ядро операционной системы, что ведёт к повреждению памяти ядра.

    Программы Symantec используют одинаковое ядро, так что описанные методы работают для всех программ Symantec, в том числе для антивирусов, которые продаются под брендом Norton. Среди них:

    • Norton Security, Norton 360 и другие полученные в наследство продукты Norton (все платформы)
    • Symantec Endpoint Protection (все версии, все платформы)
    • Symantec Email Security (все платформы)
    • Symantec Protection Engine (все платформы)
    • Symantec Protection for SharePoint Servers
    • И другие

    Тэвис Орманди из Project Zero обнародовал примеры некоторых уязвимостей, чтобы всем стала понятна суть проблемы.

    В случае с антивирусами проблема в том, как они проверяют исполняемые файлы, запакованные упаковщиками вроде UPX. Чтобы проверить такие файлы, в антивирусах используются специальные распаковщики файлов, чтобы вернуть «экзешник» к исходному виду. Это помогает со стандартными упаковщиками, а для остальных приходится прибегать к эмуляции.

    Тэвис Орманди пишет, что все эти методы порождают излишнюю сложность и чрезвычайно подвержены уязвимостям, потому что очень сложно сделать такой код безопасным. «Мы рекомендуем использовать песочницу и Security Development Lifecycle, но вендоры часто срезают здесь углы», — пишет Тэвис. Из-за этого распаковщики становятся огромным источником уязвимостей, как уже было в случаях с Comodo, ESET, Kaspersky, Fireeye и многими другими.

    В случае с Symantec ситуация ещё хуже, потому что в её программах распаковщики работают в ядре!

    Например, её распаковщик для ASPack допускает тривиальное переполнение буфера, если значение SizeOfRawData больше, чем SizeOfImage. Когда такое происходит, Symantec переносит «лишние» байты в буфер с помощью memcpy. Соответственно, мы можем легко запустить на исполнение на уровне ядра произвольный код, используя такой метод:

        char *buf = malloc(SizeOfImage);
    
        memcpy(&buf[DataSection->VirtualAddress],
               DataSection->PointerToRawData,
               SectionSizeOnDisk);

    Уязвимость CVE-2016-2208 подробнее описана в баг-трекере. В операционных системах Linux, macOS и Unix она приводит к чистому переполнения на уровне рута в процессе Symantec или Norton, а в операционной системе Windows — к повреждению памяти ядра.

    Поскольку Symantec использует специальный драйвер для перехвата всех системных прерываний, то для эксплуатации уязвимости достаточно просто отправить жертве файл по электронной почте или ссылку на эксплоит. Жертве не нужно открывать файл или переходить по ссылке, антивирус всё сделает самостоятельно. Это открывает возможность даже для автоматического распространения червя по всем системам с установленным антивирусом Symantec/Norton!

    Таким образом можно легко заразить большое количество компьютеров в локальной сети предприятия.

    Любопытно, что перед публикацией информации в открытом доступе Тэвис Орманди отправил эксплоит в отдел безопасности по электронной почте в zip-архиве, защищённом паролем, а пароль указал в тексте письма. Но почтовый сервер с установленными «средствами защиты» Symantec извлёк пароль из текста письма, применил его к архиву и в процессе изучения кода эксплоита обрушил сам себя.

    Тэвис Орманди также рассказывает об уязвимостях при парсинге файлов PowerPoint и других файлов Microsoft Office, а также об уязвимостях эвристического движка Bloodhound Heuristics (Advanced Heuristic Protection). Исходный код эксплоита опубликован. Это на 100% рабочий эксплоит, который действует против стандартных конфигураций Norton Antivirus и Symantec Endpoint, и срабатывающий просто при отправке ссылки по почте или публикации ссылки на веб-странице (её не нужно открывать).

    В данном случае уязвимы следующие продукты (здесь перечислены не все потенциально уязвимые программы Symantec, вполне возможно, что эксплоит срабатывает и в других):

    • Norton Antivirus (Mac, Windows)
    • Symantec Endpoint (Mac, Windows, Linux, Unix)
    • Symantec Scan Engine (все платформы)
    • Symantec Cloud/NAS Protection Engine (все платформы)
    • Symantec Email Security (все платформы)
    • Symantec Protection for SharePoint/Exchange/Notes/etc (все платформы)
    • Все остальные Symantec/Norton Carrier, Enterprise, SMB, Home и прочие антивирусные программы
    • И другие

    Под Windows это приводит к исполнению кода на уровне SYSTEM, в остальных операционных системах — с правами рута.

    Некоторые из программ Symantec не обновляются автоматически, поэтому системным администраторам необходимо предпринять срочные меры для защиты своих сетей. Официальная информация от Symantec здесь.

    UPD. Как выяснилось, Symantec заимствовала код из open-source библиотек libmspack и unrarsrc — и не обновляла их как минимум семь лет!
    Support the author
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 23

      –3
      В случае с Symantec ситуация ещё хуже, потому что в её программах распаковщики работают в ядре!

      В ядре чего? Операционной системы или в антивирусных базах? Скорее всего логично последнее, но как иначе? Антивирус это в первую очередь универсальный распаковщик всего и вся, распаковщик, который вытащит файл, даже если стандартные разархиваторы не справятся. Поэтому для антивирусов распаковка должна находиться в постоянно обновляемых базах, чтобы можно было на лету добавить/обновить алгоритмы распаковки/анализа

      Поскольку Symantec использует специальный драйвер для перехвата всех системных прерываний

      Тоже вариантов нет — нужно перехватывать все ниже вредоносных программ

      Тоесть вопрос не архитектуры, на что наезд, а качества программирования в компании
        +3
        Я так понял, что распаковка производится в упомянутом драйвере. Это следует из фразы «мы можем легко запустить на исполнение на уровне ядра произвольный код». Обычно, когда говорят про «уровень ядра» имеется ввиду именно ядро ОС.
          –2
          Если так, то это крайне неоптимально, тогда любое обновление этой части антивирусных баз потребовало бы перезагрузки для замены драйвера. Плюс драйвер перехватов может быть не один — нет смысла в каждый драйвер засовывать свою копию баз.
            +2
            А причем тут антивирусные базы? Драйвер от них не зависит в общем случае. Драйвер осуществляет перехват набора ядерных функций, через это контролируется поведение запущенных приложений.
            В случае с Symantec — оказалось, что этот драйвер помимо, собственно, перехвата, еще занимался распаковкой сжатых/зашифрованных исполнимых файлов.
            Чтобы распаковать такой файл надо либо воспользоваться готовым распаковщиком (как с тем же UPX), или пишут эмулятор, который имитирует запуск программы, чтобы она сама себя распаковала: «Это помогает со стандартными упаковщиками, а для остальных приходится прибегать к эмуляции.». Что, по-вашему, храниться в базах в этом случае?
            И вот именно этот эмулятор, судя по всему, и является частью драйвера в случае Symantec. Вопрос о разумности такого решения можно оставить открытым, стоит только отметить, что написание драйвера, в общем случае, сложнее, чем написание обычного приложения, а раз так, то у них (у разработчиков из Symantec), вероятно, были веские причины для такого решения.
              –1
              https://www.symantec.com/security_response/securityupdates/detail.jsp?fid=security_advisory&pvid=security_advisory&year=&suid=20160628_00

              Parsing of maliciously-formatted container files may cause memory corruption, integer overflow or buffer overflow in Symantecs Decomposer engine. Successful exploitation of these vulnerabilities typically results in an application-level denial of service but could result in arbitrary code execution. An attacker could potentially run arbitrary code by sending a specially crafted file to a user.
                0
                И? Про базы тут, опять же, ни слова нет.
                  +1
                  В описании уязвимости говорится, что уязвимость не на уровне ядра, а уровне приложений. Значит не в драйвере, а в самой программе. Обычное место расположения анпакеров в антивирусах — базы. А вот как они обновляются — тут зависит от архитектуры конкретного антивируса. Антивирусное ядро может входить в состав баз или входить в состав самого антивируса
                    0
                    Нет, там указано, что отказ в обслуживании может быть на уровне приложения, а не то, что сама уязвимость на этом уровне. То есть, уязвимость в драйвере может привести к отказу основного приложения. Это уже не говоря о том, что там не указано, что именно считается приложением, может имеется ввиду, что отказ не-аппаратный.
        +3
        Мда, послать подальше антивирусы 10+ лет назад — было правильным решением.
          +1
          По-моему, антивирусы больше вредят системе, чем вирусы — в том смысле, что при грамотно настроенной системе и осторожной, аккуратной работе риск «заразиться» невелик, тогда как наличие антивируса безусловно нагружает систему постоянно. Это напоминает страховку — вероятность пожара невелика, но страховые взносы должны платиться регулярно.
            0
            Антивирус тоже стОит выбирать такой, чтобы настраивался. Тогда чем он будет постоянно нагружать систему, если все проверено и только трафик проверяй. Но из бесплатных ничего не впечатляло, проц был одноядерный, файрволл работает исправно, за компом кроме меня никто не работает. Вот и смысл в том антивирусе? Еще одно ПО, которому можно слишком многое. Обойдусь. И действительно, никаких проблем.
              +1
              > Тогда чем он будет постоянно нагружать систему, если все проверено
              Резидентные антивирусы контролируют все происходящее в системе — трафик, дисковые операции и т.д. Или теперь антивирусы не такие агрессивные?

              Лично я отказался от резидентных АВ, предпочитая VirusTotal и раз в месяц CureIt ради профилактики. Для контроля системы еще пользуюсь Anvir Task Manager. Тоже, примерно за 10 лет, не заметил подхваченной заразы. То ли не подхватил, то ли не заметил :)
                –2
                На диске 100 000 файлов. Установив антивирус, вы выполнили полную проверку. В дальнейшем по всей логике нет нужды ПЕРЕпроверять то, что не менялось. Сканируется новое / изменяемое. В «грамотно настроенной системе» (с). А антивирус — это часть системы. Он тоже должен быть грамотно настроен. Есть такие, которые можно гибко настраивать, есть такие, которые нельзя.

                >> Или теперь антивирусы не такие агрессивные?

                При грамотной настройке — агрессивны в пределах необходимости. Если вы заносите НОВЫЙ 200-метровый архив-экзешник, логично потерпеть его проверку. Желательно при этом видеть соответствующее сообщение.

                Меня совсем другие их недостатки напрягали.
              0
              К сожалению, аккуратных и грамотных пользователей гораздо меньше, чем рабочих мест, оборудованных компьютером.
            –2
            Воистину, чем сложнее система, тем более она хрупка. Т.е. любое «лишнее» установленное приложение повышает потенциальную уязвимость машины в целом. И да, антивирусы тоже, ведь они тоже программы. Даже виртуальные машины, как программы, наверняка уязвимы и существует возможность просочиться заразе на хост-систему.
            Что еще хуже — антивирусы вынуждены работать с повышенными привилегиями, следовательно — уязвимости в них наиболее опасны. Иронично, что антивирусы по идее должны повышать безопасность системы, но нет, реальность доказывает ошибочность и даже опасность иллюзии защищенности у пользователя, поставившему себе антивирус.

            Потому, на мой взгляд, гораздо эффективнее система ограничения прав доступа на всех уровнях системы — чем более изолированы и автономны компоненты системы, тем меньше шансов на то, что в случае выхода из строя одного компонента не выйдет из строя вся система — в случае с вредоносным софтом «заражена» и прочее.
              +8
              Контекстная реклама Symantec Antivirus от Яндекс.Директа особенно хорошо дополняет эту статью.
              Для тех, у кого AdBlock

                +2
                Интересные подробности: https://googleprojectzero.blogspot.com/2016/06/how-to-compromise-enterprise-endpoint.html
                Symantec dropped the ball here. A quick look at the decomposer library shipped by Symantec showed that they were using code derived from open source libraries like libmspack and unrarsrc, but hadn’t updated them in at least 7 years.


                opennet напоминает в http://www.opennet.ru/opennews/art.shtml?num=44694, что libmspack распространяется по условиям GPL2:
                При этом данный код не синхронизировался с оригинальными библиотеками уже 7 лет и содержит все устранённые в них за это время уязвимости. Libmspack распространяется под лицензией GPLv2, поэтому ещё не раскрытым остаётся вопрос возможного нарушения лицензии GPL.


                PS: баг https://bugs.chromium.org/p/project-zero/issues/detail?id=820 открыт May 6, 2016, публично доступен с 17 мая. Здесь уже был пост 18 мая: https://geektimes.ru/post/275962/. CVE-2016-2208 "The kernel component in Symantec Anti-Virus Engine (AVE) 20151.1 before 20151.1.1.4 allows remote attackers to execute arbitrary code ..."
                  0
                  > или публикации ссылки на веб-странице (её не нужно открывать).
                  Ничего не понимаю. То есть антивирус открывает все ссылки на всех открытых мной веб-страницах, и те ссылки, которые оказались на файлы — сам скачивает и распаковывает? Или как еще можно использовать уязвимость в распаковщике без открытия ссылки?
                    +2
                    В современных браузерах есть prefetch. Но вообще странно. Хотя можно ещё наверное сделать так: img src=badfile.exe.jpg и браузер его сам скачает
                    0
                    И давно это антивирусы читают (буквально) почту и вытаскивают оттуда пароли к приаттаченным файлам?
                    Кто вообще до такого додумался?
                      0

                      Тот же гугл просто запретил пересылать зашифрованные архивы, вложенные архивы и большую пачку типов файлов, которые потенциально могут быть опасны.

                      • UFO just landed and posted this here
                          0
                          Достоверно неизвестно. Несколько антивирусов, в том числе собственный. Вероятно, один из сторонних движков пробовал ряд типичных паролей к архивам. У них с 2012 года есть Virustotal с множеством движков, но для почты его не используют.
                          Несколько источников
                          https://cloud.google.com/security/whitepaper "Google Security Whitepaper. This whitepaper applies to Google Cloud Platform products described at cloud.google.com."
                          Google makes use of multiple antivirus engines in Gmail, Drive, servers and workstations to help identify malware that may be missed by antivirus signatures.


                          https://cloud.google.com/appengine/docs/java/mail/ App Engine Mail API Overview
                          Mail that matches a known signature for spam, viruses, or other malicious content may not be accepted for delivery.


                          Для Google Web Security for Enterprise в рекламе упоминались "несколько сигнатурных движков": http://www.gpartner.eu/documents/web_security_for_enterprise.pdf
                          Its patented security technology employs multiple reputation and behavior analysis techniques and vast amounts of daily web data to detect new threats. Its signature-based detection utilizes multiple, industry-leading anti-malware engines with hourly and emergency signature updates, two-hour signature response times, and the largest global malware research laboratories and collection networks.
                          Google Web Security for Enterprise is built on a proprietary security platform that detects new and known malware threats through the use of multiple signature-based anti-malware scan engines, multiple reputation and behavior detection engines, and automated machine-learning technologies. This combination of multiple detection technologies, heuristics, and the industry’s largest web data
                          set...


                          В статье сотрудников Google "The Ghost In The Browser Analysis of Web-based Malware" 2007 года про онлайн-угрозы есть такое о классификации:
                          https://www.usenix.org/legacy/events/hotbots07/tech/full_papers/provos/provos.pdf
                          To classify the different types of malware, we use a majority voting scheme based on the characterization provided by popular anti-virus software. Employing multiple anti-virus engines allows us to determine whether some of the malware binaries are actually new, false positive, or older exploits. Since anti-virus companies have invested in dedicated resources to classify malware, we rely on them for all malware classification.… As many anti-virus engines rely on creating signatures from malware samples, adversaries can prevent detection by changing binaries more frequently than anti-virus engines are updated with new signatures.


                          В http://www.ghettoforensics.com/2014/02/google-actively-scanning-malware-emails.html были комментарии от (предположительно) представителей — комбинация неназванных сторонних решений и собственных разработок (одно из внешних решений одно время пыталось применить ряд паролей к архивам):
                          Alex Petit-Bianco 19 February, 2014 13:26
                          Hey — to protect our users from downloading malicious files, we use a combination of third party antivirus software and internal virus scanning solutions to detect whether or not attachments or other downloadable files may be harmful. Your post alerted us to the fact that one of our third party software components was checking for encryption using 'infected.' as a password.

                          As a result, it decrypted a limited set of zipped payloads in attempts to search for malware. We're currently working on disabling that feature and appreciate you bringing it to our attention.
                          • Alex Petit-Bianco, Google Antivirus Infrastructure.



                          Известно, что на 2014 год gmail не использовал VirusTotal (сервис мигрировал в google app engine в конце 2011 и был куплен google в сентябре 2012, но изначально сохранял независимость):
                          This is Bernardo Quintero, VirusTotal's manager. Google is not using VT for scanning all emails for malware, we have nothing to do with what you mentioned. Could you update your post to clarify it? and let me know if you need more info about VirusTotal (I have no idea how Gmail scans for malware, but it's not related to VT).

                          Недавние новости про VirusTotal
                          В недавнее время (май 2016) VirusTotal начал ограничивать доступ к базе VirusTotal, пока производители антивирусов не интегрируют свои продукты в онлайн-сервис VT:

                          http://blog.virustotal.com/2016/05/maintaining-healthy-community.html?spref=tw "Maintaining a healthy community" — 4 MAY 2016
                          all scanning companies will now be required to integrate their detection scanner in the public VT interface, in order to be eligible to receive antivirus results as part of their VirusTotal API services.


                          http://www.csmonitor.com/World/Passcode/2016/0509/Google-shakes-up-antivirus-industry "Google shakes up antivirus industry — MAY 9, 2016"
                          Google is in the process of limiting access to a widely used database of computer viruses and malicious software in a move that is having a ripple effect across the cybersecurity industry.

                          VirusTotal, a subsidiary of the search giant, said last week that it was attempting to curtail abuses of the database by mandating that any companies that access it must also participate in the service to help it grow.… VirusTotal receives about 1.2 million files each day from its free… Companies pay to receive access to those files full of potentially new viruses and data on the consistency of malware scanners. Until the policy change, VirusTotal did not require companies to participate in scanning new files, meaning they did not add to the larger pool of malware information for the industry.

                          … industry insiders worry that access to VirusTotal let some antivirus companies develop software that only checked to see if VirusTotal had encountered the file before, rather than root out new strains of malware to protect their customers.

                    Only users with full accounts can post comments. Log in, please.