Антирекорд 2020: в ПО выявили уязвимостей больше, чем в любой другой год

    Этот год для индустрии был, мягко говоря, «непростым» и разработчики крупного программного обеспечения поставили очередной антирекорд 2020: в этом году было выявлено рекордное количество уязвимостей. Всего, согласно данным CISA, всего за этот год в программном обеспечении различных производителей было зафиксировано 17550 уязвимостей, дыр и эксплоитов различного уровня угрозы. К сравнению, в 2019 году это число составляло 17 306 обнаруженных уязвимостей.

    Сообщается, что в 2020 году специалисты нашли 4177 уязвимостей с высокого уровня против 4337 в прошлом году. Основную массу составили «дыры» среднего уровня опасности — 10 776, что ниже прошлогоднего значения в 10 956.

    Общая динамика по росту количество слабостей, обнаруженных в ПО, не радует. Количество эксплоитов и уязвимостей в программном обеспечении растет, и если в процентном соотношении рост составил менее 2%, то в абсолютном выражении речь идет о почти 250 «дырах» в безопасности различных продуктов.

    Если смотреть графики количества найденных уязвимостей, то основной «пик» приходится на 2017 год: именно тогда количество найденных эксполитов увеличилось кратно, почти в 2,5 раза.



    В основном, уязвимости в этом году касались веб-приложений, однако значительный рост объема сомнительного кода был зафиксирован и на других направлениях. Так, дыры в API в 2020 году находили вдвое чаще, чем в предыдущем, а в Android и вовсе втрое чаще. В этом году и изменился характер уязвимостей. Если в предыдущие годы компании активно искали дыры в продуктах на клиентской стороне, о чем свидетельствуют отчеты, то теперь все больше эксплоитов стали находить в инфраструктуре IT-компаний и во внутренних продуктах, которыми пользуются сотрудники. Вероятнее всего, это связано, в первую очередь, с массовой надстройкой «тонких» клиентов и предоставления удаленного доступа сотрудникам, находящимся на изоляции из-за COVID-19. Само собой, привычный периметр безопасности из-за этого был нарушен и наружу поползли старые «болезни» и прочие проблемы софта, которые ранее «заметались под ковер» и глушились внутрикорпоративной ИБ-политикой в плане регулирования доступа и прочим.

    Согласно отчету, основная часть уязвимостей касалась веб-приложений, однако заметен рост и в других сегментах. Например, число обнаруженных дыр в API выросло вдвое, а для Android — втрое. Кроме того, сменились и цели для атак и изучения. Если раньше компании больше беспокоились о проблемах в продуктах, с которыми взаимодействуют их конечные потребители, то теперь внимание уделяется и собственной IT-инфраструктуре, и продуктам, которые используются сотрудниками.

    Нужно понимать, что в 2017 году разработчики по всему миру не стали резко тупее. Вполне возможно, такой ненормальный рост статистики обуславливается тем, что именно в 2017 году различные группы вскрыли огромное количество уязвимостей «нулевого дня» в старых давно существующих продуктах. Немалый вклад в это внесла как минимум инициатива Trend Micro’s Zero Day, которая специализировалась в то время как раз на таких «нулевых» эксплоитах и довела свой счетчик до 382 найденных серьезных эксплоитов против 69 годом ранее.

    Примерно на 2017 год пришелся и рост активности Whitehat-специалистов, которые все активнее и активнее сотрудничали с корпорациями. В тот период только Google выделял на свою Bug Bounty-программу $3 млн, не говоря об инициативах других крупных разработчиков ПО. Все это, в совокупности с растущим сообществом Open Source и «белых шляп» могло привести к взрывному росту статистики по найденным эксплоитам. В конце 2016 года Apple запустила закрытую официальную Bug Bounty-программу по инвайтам с выплатами до $200 тысяч. Открытые программы Microsoft и Facebook тогда вообще не имели официального хардкапа по выплатам и приглашали всех желающих поискать дыры в их проектах.

    Однако отрицать падение общего уровня разработки за последние годы глупо. Все больше и больше продуктов выходят в состоянии «вечной беты» чтобы привлечь инвестиции или оправдать ожидания партнеров.
    Дата-центр «Миран»
    Решения для аренды и размещения ИТ-инфраструктуры

    Комментарии 15

      +5
      Однако отрицать падение общего уровня разработки за последние годы глупо. Все больше и больше продуктов выходят в состоянии «вечной беты» чтобы привлечь инвестиции или оправдать ожидания партнеров.

      Ну правильно, подход «Х… к х… к и в продакшен» стал основным в разработке. А зачем париться тестировать там что то, отлаживать… если денег уже дали. Я вообще не понимаю как можно было ожидать другого если подавляющее большинство «девелоперов» про алгоритмизацию краем уха только слышали, а вместо того что бы подумать как реализовать своими силами какой то алгоритм, хотя бы для общего развития, идут сразу на стек найти вопрос как у него и ответ как подключить очередную раздую либу ради одной функции.
      Меня очень сильно улыбает когда очередная херочка говорит с гордостью «у нас Agile»… неть девочка, у вас «Ср*ли, плакали лепили»… но вы почему то называете это Agile.
        +1
        Вот зря минусуете человека, он всё правильно говорит.
          +4

          Фигню говорит человек. Проблема не в том, что "х-к, х-к и в продакшен", а в том, что сложность инструментов каждый день только растёт: куда ни плюнь — абстракции поверх абстракций, и, чтобы оно в общем случае работало, желательно знать, что там происходит внутри — на N уровней в глубину.

            +1

            Пользуйтесь старыми инструментами, делов то)

              0
              1. Начальство не поймёт, почему я хочу лепить уродливый аппликейшн на WinForms, когда вокруг у всех React, Angular и прочий веб.
              2. Коллеги не поймут — и разбегутся, потому что в глаза этот WinForms не видели, но гугл им подсказывает, что на рынке это не очень востребовано.
                0
                Я просто не согласен с этим веянием 'Раньше было круто — залил файлик на сервер — и всё работает, а сейчас — все эти ваши докеры, редисы и прочее'.

                Все эти 'абстракции поверх абстракций' не берутся из ниоткуда, они позволяют (в общем случае) сделать быстрее и больше ценой скрытия некоторых деталей.

                По WinForms, к сожалению, сказать ничего не могу — не работал с ним, но он вроде, как минимум, в кроссплатформ не может, нет?

                Ну и если Вы не можете убедить коллег — насколько вероятно, что все коллеги не понимают, а один Вы знаете как правильно? Наверняка у них есть аргументы кроме хайпа на новые технологии :)
                  0

                  Я не про "файлик на сервер", а про распространённость и приемлемость инструментов высокого уровня. Дотнет со своим WinForms (а потом и с WPF) давал замечательный фундамент для того, чтобы построить аппликейшн, который примерно "ходит в базу и показывает UI". Были готовые контролы — не только кнопки, но и гриды с виртуализацией. Были готовые библиотечные механизмы для расширения этого всего под свои задачи. Была куча документации о том, как всем этим пользоваться. Программист (один) мог сесть и сделать аппликейшн — потому что вся эта ерунда вполне умещалась в голове. Называется "программист дотнет".


                  Сегодня нельзя просто взять и сделать, чтобы аппликейшн "ходил в базу и показывал UI". Сегодня нужно написать отдельно бэк, отдельно фронт, их взаимодействие. Если с беком всё более-менее прямолинейно, то для фронта нужно ещё выбрать аппликейшн фреймворк и UI фреймворк, а потом долго и мучительно работать с дизайнерами — тратить время на "кнопки, которые выглядят как леденцы, которые так и хочется облизать", на роутинг с сюрпризами, который ни у одного здорового человека не ляжет на мозг, писать с нуля контролы, которые, видите ли, абсолютно необходимы для хорошего UX, и т.д.


                  Расскажите мне теперь как все эти реакты и ангулары здорово помогают сделать хороший UI, где данные грузятся когда надо, где сразу есть виртуализация, чтобы броузер не падал с OOM :-) Нихрена из этого там нет.


                  Я согласен, что "зато кросплатформенно" — это в какой-то степени шаг вперёд, но в плане именно продуктивности — это сотня шагов назад.


                  Ну и если Вы не можете убедить коллег — насколько вероятно, что все коллеги не понимают, а один Вы знаете как правильно? Наверняка у них есть аргументы кроме хайпа на новые технологии :)

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

              –1
              в том, что сложность инструментов каждый день только растёт: куда ни плюнь — абстракции поверх абстракций

              Давайте подумаем как же так вышло. Живет программист N, ему поставили какую то задачу, он нагуглил решение и прилепив либы X и Y закрыл таск. Потом за бокалом смузи он решает, что эти 10 строк кода которыми он слепил X и Y инновационный проект, та самая вещь которая достойна что бы увидеть мир и заливает это на гитхаб. Это находит программист N1 и включает в свой проект еще с какой то либой. Осталось только повторить итерацию несколько раз и мы имеем то что имеем. А ведь можно еще таскать код из других языков… уу какой простор для веселья. Так что осознайте уже, что абстракция поверх абстракции не причина, а следствие ситуации в которой ни N ни N1 не задумались, а полезли искать готовое.
              Я вообще как то проспал революцию в которой умение программировать и умение быстро гуглить стали одим и тем же. Я не заметил в какой момент на человека в команде который предлагает реализовать самим или хотя бы проработать этот вариант смотрят как на чумного, а коллеги по цеху шепчут что бы взял готовое и не наводил тут смуту. С каких пор люди стали так доверять чужому коду и так не верить своему.
              Статья на хабре из 2016:https://habr.com/ru/post/280099/
              Уже тогда все было отвратительно. И с тех пор лучше не стало.
                +3
                А что получается в итоге?
                Компания А выкатала не идеальный, но вполне рабочий продукт еще полгода назад и уже гребет деньги лопатой.
                Компания Б, которая начала разработку приблизительно в то же время, все еще в процессе разработки идеального продукта. Программисты упорно пишут 100500-й велосипед и когда допишут — то продукт быстро обгонит конкурентов (но это не точно)
                  –1
                  А решение тут очень простое. Нашли у компании А ошибку в программе, компания А вернула покупателям 10% стоимости. Нашли второй раз, внесли в список черный. Кто в чёрном списке платит налог не 13% (условно), а 25%. Глядишь, через годик и софт нормальный появится. А то расслабились все, «мы вам продаём штаны, на условиях как есть, ни за что не отвечаем. Если порвутся, сам дурак, не надо было приседать.» PS. Надо было отдельно написать, а то получилось как будто к вам претензия.
                    +2
                    И будете вы пользоваться только калькулятором, oh wait., даже и его не будет.
                      +1
                      Компания условные 12% разницы заложит в цену и выпустит продукт чем быстрее. Потому что это эффективно и работает.
                      И пока компания Б будет биться с первой версией, компания А успеет выпустить еще одну или две улучшенные версии.
                      0
                      Ммм… мой любимый аргумент. А почему в вашем идеальном мире возможно только так? Кто первый выкатил прототип тот и миллионер. И А и Б могли тупо обанкротиться потому что уже была С о которой они не знали или не просчитали рынок. А могла выпустить такой сырой продукт что померла сама. Б могла выйти в лидеры просто прорекламировав то насколько она лучше именно в том в чем А хуже. Вариантов 100500, но мы берем тот что из чернобелого мира и нам так удобен для аргументации.
                      не идеальный, но вполне рабочий продукт

                      Вы давно видели идеальный продукт? Я никогда. Даже просто рабочий уже днем с огнем искать надо. То что выпустит А будет похоже на скайп, но в отличие от него не будет иметь бэка в миллионы пользователей старой версии…
                      Программисты упорно пишут 100500-й велосипед и когда

                      Не надо 100500, один хотя бы напишите. Это уже будет шагом в нужную сторону. И возможно когда то наш рынок прототипов эволюционирует обратно в рынок ПО.

                      Храню как зеницу ока папку с программками которые не требуют установки, просто работают и занимают какие то смешные килобайты места. И я подозреваю, что я не один такой. А вы говорите что даже калькулятора не будет.
              +2

              Сложность ПО растёт, а требования к кадрам снижается, если 15 лет назад все программисты были с инженерными специальностями и хотяб знали дискретную математику, теорию графов и т.п., то сейчас берут гуманитариев после курсов. Которые вместо того что-бы сделать систему взаимодействия из компонентов просто накидывают свалку кода. Вместо того что-бы воспользоваться матрицей переходов лепят из if/else тысячи строчек кода обработки смены состояний. Я не говорю уже о том что используют везде int не думая об ОДЗ, как результат храним данные с излишком или выходим за пределы.

                0
                Антирекорд 2020: в ПО выявили уязвимостей больше, чем в любой другой год

                Разучились программировать или осознанные действия?
                Как говорили в стародавние времена:- Мастерство не пропьешь. А если его нету?!

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое