Microsoft is doing something concrete about container security with the release of the Microsoft Application Inspector, a cross-platform tool whose "primary objective is to identify source code features in a systematic and scalable way not found elsewhere in typical static analyzers" as the creators said in the Wiki.
The idea behind it is to open up the third-party open-source software components that are found in many software packages. The tool's goal is to help developers evaluate the potential security risks that a reused component may pose.
The application is a client .NET Core based tool. This means it will run on Windows, Linux or macOS and does not require elevated privileges. Also, there is no local database or network communications or telemetry required in the tool's operation.
Application Inspector can help identify "interesting" characteristics of an application by examining its source code. This will save significant time compared to performing this kind of effort manually.
Microsoft says that the tool includes hundreds of default identifying patterns for detecting general features like frameworks used, file I/O, OS APIs as well as the ability to detect key security and privacy features of a component.
By default, the Application Inspector will generate an output that is browser based for illustrating the features, project summary and meta-data that is detected for a component. It also has the ability to support JSON and TEXT output format options.
The developers think that Application Inspector is judgement-free, focusing on informing security teams of flagged details that might otherwise go unnoticed in the code review process. The tool looks at the context of code at a feature level, which may be far more important to security efforts than just finding some poorly written code.
Some of the features that the tool examines includes 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), and Service Providers including Cloud Services (Data Storage, Applications, Social Media).
Reports can be customized. This customization involves specifying either custom rules (feature pattern to scan for e.g. regex, language) or a custom report (filter what features to display in the report output).
Operation is fairly simple. Starting the tool involves the standard dotnet command line invocation; i.e. dotnet ApplicationInspector.dll if you are on a Linux or macOS system. AppInspector.exe is used on Windows.
Application Inspector use is also simple. A component can be downloaded to the local testbed in compressed or uncompressed formats. Application Inspector is then run, pointing it at the component source code while specifying the command, report format and other options.
While the tool is not meant to replace security static analyzers or security code reviews, it has a definite place alongside them.
— Larry Loeb has written for many of the last century's major "dead tree" computer magazines, having been, among other things, a consulting editor for BYTE magazine and senior editor for the launch of WebWeek.