Анализатор исходного кода Microsoft Application Inspector

    image

    Компания Microsoft выпустила «Microsoft Application Inspector», кросс-платформенный опенсорсный (!) инструмент для анализа исходного кода.


    Application Inspector отличается от традиционных инструментов статического анализа тем, что он не пытается определить «хорошие» или «плохие» паттерны; он сообщит о том, что обнаружит, по исходному набору из более чем 500 шаблонов правил для обнаружения функций, включая функции, влияющие на безопасность, такие как использование криптографии и т.д.


    Основной целью Application Inspector является систематическая и масштабируемая идентификация функций исходного кода, которых нет в других типичных статических анализаторах. Это позволяет разработчикам и специалистам по безопасности проверять предполагаемые цели компонентов, например, что используемая библиотека делает только то, что в ней декларировано.


    Современные приложения в значительной степени зависят от программного обеспечения, написанного за пределами вашей компании, что сопряжено с рисками. Application Inspector может помочь определить интересные характеристики приложения, изучив исходный код, сэкономив значительное время по сравнению с "ручным" анализом.


    Приложение представляет собой клиентский инструмент на основе .NET Core, поэтому оно будет работать в Windows, Linux или macOS и не требует повышенных привилегий, а также локальной базы данных, сетевых коммуникаций или телеметрии. Чтобы запустить его, просто используйте стандартную командную строку dotnet для вызова, например, dotnet ApplicationInspector.dll, если вы работаете в системе Linux или macOS или в Windows AppInspector.exe.


    > dotnet AppInspector.dll or on *Windows* simply AppInspector.exe <command> <options>
    
    Microsoft Application Inspector 1.0.17
    ApplicationInspector 1.0.17
    
    (c) Microsoft Corporation. All rights reserved
    
    ERROR(S):
      No verb selected.
    
      analyze        Inspect source directory/file/compressed file (.tgz|zip) against defined characteristics
      tagdiff        Compares unique tag values between two source paths
      tagtest        Test presence of smaller set or custom tags in source (compare or verify modes)
      exporttags     Export default unique rule tags to view what features may be detected
      verifyrules    Verify rules syntax is valid
      help           Display more information on a specific command
      version        Display version information

    Вы можете добавлять/редактировать/удалять стандартные правила или шаблоны по мере необходимости. Также существует возможность добавить свои собственные правила в отдельный путь к набору по умолчанию и сохранить набор по умолчанию или исключить их с помощью параметров командной строки.


    Области тестирования и применение:


    • Control Flow: Dynamic Code Execution, Process Management.
    • Cryptography: Encryption, Hashing, Secrets, Randomization.
    • OS Operations: File System ,Environment Variables, Network Operations, User Accounts, Windows Registry.
    • Data: JSON/XML, Secrets/Access Keys, Sensitive Personal Data, SQL/ORM.
    • Data Handling: Object Serialization (XML/JSON), Flash, PDF, Silverlight, Audio/Video Media Use or Parsing, Bluetooth, Cellular, RPC.
    • Frameworks: Development, Testing, Dependencies.

    По умолчанию Application Inspector создает отчет на основе html для иллюстрации функций, сводки проекта и обнаруженных метаданных. Также поддерживаются параметры формата вывода JSON и TEXT.


    image


    Страница проекта на GitHub.

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

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

      +13

      Призывается Andrey2008 для тестирования инструмента для тестирования :-) (извините за рекурсию)

        +4
        Это пока не рекурсия, а каламбур. Рекурсией станет в тот момент, когда PVS Studio станет опенсорсом и эти два инструмента начнут тестировать друг друга.

        Первая попытка впечатляет :)
          +2
          Начинания похвальные, но этим ребятам не помешало бы проанализировать собственный код.
          Двойное приведение к float в этой строке явно избыточно:
          int percentCompleted = (int)((float)totalFilesReviewed / (float)_appProfile.MetaData.TotalFiles * 100);
          Ну и очепятки в ресурсах.

          Наконец-то дождался вывода — он довольно подробный, попробую разобраться.
            0
            «processededd» это скорее всего недоочистка терминала при укорачивании строки.
              +1

              Здесь и так и так приведение к float, просто во втором случае можно опустить из-за неявного приведения. Это стилистическая вещь, по аналогии с использованием var, ничего серьезного.

              0
              А если его самого собой?
                0
                74 тега с предупреждениями :)
                Нет, меньше. В анализ попал файл предыдущего анализа другого проекта.
                43 предупреждения по проекту самого анализатора. Возможно, что часть предупреждения появляется из-за того, что сам код анализатора содержит наборы подозрительных кусков кода (правила), но могу ошибаться.
              0
              Это было бы интересно. Взаимный анализ исходников самих анализаторов + сравнительный анализ обоих инструментов на одном проекте.
                +4
                Проверил при помощи PVS-Studio. Ничего интересного не нашлось. Это объяснимо, так как проект очень маленький: 5 непустых КLOC в 44 файлах cs. В общем, пока что искать там нечего.
                  0
                  Тестирования чего? PVS Studio и этот анализатор созданы для разных целей и выполняют разные функции, причём последний не предназначен для нахождения потенциальных уязвимостей или ошибок в коде.
                  +1

                  В 2020 бы заниматься разработкой поиска уязвимостей по регулярным выражениям…
                  Еще в 2012 году такое было.

                    +7

                    Приложение для анализа исходного кода на каком языке? C#? Все .net языки? Все языки мира?

                      0

                      Либо C# не завезли, либо я что-то не то делаю:


                      Analyze command running
                      100% source files processed
                      Preparing report
                      No pattern matches were detected for files in source path```
                      При этом NodeJS-проект проанализировало.
                        +2
                        github.com/microsoft/ApplicationInspector/blob/master/RulesEngine/Resources/languages.json — Судя по всему это список поддерживаемых языков
                          0
                          не вижу pascal и kotlin
                            0
                            Ого — там не только .NET языки
                          +1
                          Основной целью Application Inspector является систематическая и масштабируемая идентификация функций исходного кода, которых нет в других типичных статических анализаторах.
                          Т.е. другие анализаторы это делают не систематически и не масштабируемо?
                            0
                            А другие анализаторы говорят вам какие функции выполняет код? Например, что в каком-то проекте используется доступ к базам данных, криптография, работа с файлами etc?
                            +3

                            Компания Positive Technologies уже давно разрабатывает продукт для выявления уязвимостей и ошибок в приложениях PT Application Inspector. Интересно, в Micorosft перед окончательным именованием искали продукты с аналогичными названиями?

                              +1
                              … кросс-платформенный опенсорсный (!) инструмент...
                              Доброе утро, Майкрософт уже лет шесть-восемь как выпускает кросс-платформенные опенсорсные инструменты.
                                0
                                Ну я бы так не сказал… всё-таки более менее регулярно кросс-платформенные опенсорсные инструменты мелкомягкие стали выпускать всего пару лет назад — ну как началась эпопея с .NET Core и вышла версия 2.0
                                  +3
                                  .NET Foundation основан в 2014, а первая публичная версия Typescript выпущена аж в 2012…
                                    0
                                    Соглсен, но всё-таки в 2012 это было лишь начало пути.
                                    .NET Foundation стараниями Микрософта так и не стал кросс-платформенным
                                    Поэтому именно со времён анонсирования проекта .NET Core Микрософт стал активно развивать и опенс сорс и кросс (не только в рамках .NET Core, просто видимо в это время топ менеджеры окончательно утвердили данный курс вообще в разных областях)
                                      0
                                      Вы перепутали .NET Foundation (благотворительный фонд развития открытого ПО) и .NET Framework (среда исполнения программ).
                                        0
                                        habr.com/ru/post/89511 — статья (твит?) на хабре аж с 2010 года.
                                  0
                                  This report represents the analysis results for the specified source code. It contains features identified from a large variety of common characteristics including security and privacy characteristics, and other attributes to answer the question 'What is in the code?'.

                                  Интересные идея и тула. Может помочь при ревью кода нового проекта. Это не замена SAST-решению, а скорее инструмент аудитору для быстрого понимания из чего (каких функциональных блоков) состоит проект.

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

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