Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Enhance your Application Security Posture Management (ASPM) through comprehensive risk assessment, strategic prioritization, and protection against attacks and malware infection throughout your Software Supply Chain
You need a Xygeni account to use Xygeni functionalities.
Xygeni trial provides a wide set of features to test the platform during 14 days. The sign up process does not gather any payment information and after the trial period no automatic subscription is executed. If the customer does not subscribe, the account is blocked after the period.
Choose your preferred signup method.
Please, follow our for an easy onboarding to Xygeni platform.
Connect your SCM to Xygeni and start scanning
Scan with Xygeni CLI locally in command line
Quick view of the available Xygeni products
See what is the architecture of Xygeni and how it works
Learn about how to use the Xygeni Web User Interface
Learn about Xygeni CLI and the various scans types
Integrate Xygeni into your own CI/CD pipelines
Secure your build process by setting Security Gates
Generate SBOMs in the format you prefer (SPDX, CyclonDX)
Integrate Xygeni within your own SDLC processes and tools
Manage and configure your Xygeni platform
Leverage Xygeni functionality with the Xygeni REST API
Go to and
Follow the prompts to create a new account. You now have a free Xygeni account and can log in at any time at
If you are new at Xygeni and you want to see its capabilities in the easiest way, please follow these steps.
To scan a repository located in your preferred SCM, the easiest method is to do it directly from the Xygeni Web UI.
You can also follow an alternative approach by using the Xygeni CLI, although it is not as direct as using the Web UI. The Scanner CLI allows you to scan a local directory or a remote repo directly from a command shell or a shell script.
If you only want to see preloaded results, you can load into your account pre-built results of a demo project that will show you representative examples of issues (this option will not scan any source code).
Go to learn how to do it.
If you were the first user in the organization, you are the main administrator (owner) for your Xygeni organization, with full permissions to create new user accounts, edit projects and setup policies. After creation of Xygeni account, the owner of the account will receive a notification email to setup a new password.
If you are a new user of an already created Xygeni account, you should have received the same notification email.
Clicking on Set a new password button will redirect you to Reset Password dialog.
Go to Xygeni Login page :
You will be able to login either by using your Xygeni identifier or using your preferred Authentication system (go to to learn how to integrate authentication through SAML )
If you use Xygeni authentication, you will need to provide a password. In case you are new to Xygeni, please go to .
After creating your password, the will open, with the Security Posture page as the entry point.
The following sections describe the key elements in the Xygeni platform.
After signing up, you will be presented with three options.
"Try out a Demo Project" option allows you to see Xygeni issues with preloaded data, with no need to scan a real repository.
Click on "Try out a Demo Project" and a background process will be started to load demo data.
Click on Close button and you will see that a new project has been created (named "DemoProject") with preloaded data. You can freely browse for any page to see funnel, dashboards, risks, etc.
First, go to Settings >> Managed Scans
Click on New Integration button to create an integration with your SCM. A dialog will open to select your SCM:
For this example, we will use GitHub. So clicking on GitHub will install Xygeni GitHub Application.
As you can see below, the installation procedure will let you specify the scope of the installation (user- or organization-level)
The installation will ask you to grant permission to Xygeni GitHub Application to all or only selected repositories.
After clicking on Install & Authorize button, Managed Scans page will display the new integration.
It also display a table listing the granted repositories (this list depends on previous step).
Clicking on the Scan Now button of any repo will execute a scan on that repo.
If you go now to GitHub, you will see a workflow running the scan:
That's all!!
A Scan is the action performed by the Xygeni Scanner to find security issues over your project.
You can follow below steps for a quick start using Xygeni CLI
An installation script is provided for automated installation.
The recommended, automated way to install the scanner is to use the installation script.
The Xygeni installation script
is provided by Xygeni
as a way to speed up your xygeni experience by setting your scanning environment as fast as possible.
Run the one of the following which better matches your preferences:
An Access Token (also known as 'api token' or 'api key') is used by clients, like the Xygeni Scanner or integrations to access the Xygeni platform API.
Describe what the token will be used for, choose the validity period, and select the permissions granted to the token. Click on the Generate
button:
Each permission enables the client to invoke certain api endpoints. The scanner typically need permissions to upload the scan results.
The token is generated, as shown:
In what follows, XYGENI_TOKEN
names an environment variable holding the Xygeni API token that will be registered in the scanner configuration file for authentication with the service.
To get the options available, run ./install.sh --help
or PS .\install.ps1 --help
.
In its simplest way, you need a file system folder with your project contents (this folder can be a clone of your repo or just a directory with the source code of your project).
Use cd /my/project
to change the current directory and run xygeni scan
command over the contents your project directory. All vulnerabilities identified are listed, including their path and fix guidance.
You can also use below commands:
After you finish your trial period you can subscribe your plan to Xygeni to continue monitoring and improving the security of your applications and organization.
Purchase of your desired plan and daily scans is at Settings > Subscription
Expand the Settings section of the Menú and click on the Subscription section. The following screen will appear
After selecting your desired subscription information, you will be redirected to an external secure payment platform. Xygeni does not store or manage any payment or private information related to your payments and invoicing.
Once the successful payment is confirmed, the license is updated in our platform and you can use Xygeni as planned.
Xygeni provides a quick way to scan your repositories directly from the UI. With this functionality (named ) you will be able to scan your repos and Xygeni will manage everything behind the scenes.
After the scan is completed, you can find the results in the Xygeni . The name of your project will be the same as your repo name.
You can also configure to be notified when the scan is finished. See .
Please, visit for other available options such as to schedule the scan or trigger the scan upon Pull Request creation.
To create a token in the Xygeni Dashboard, go to the Settings >>Administration >> Security tab, then click on the Generate new token
button. Go to for further details.
IMPORTANT: in case you want the scanner performs checks against your repository and organization (see ), ensure that you provide your SCM and/ or CI/ CD systems tokens to the scanner.
See to know more about this topic.
See for the full scanner command-line reference.
After log into the Xygeni , the Security Posture Summary screen as the entry point.
Go to for a guide to browse the Xygeni Web UI.
You can check the complete information of Subscription Section in Settings block in the following page of the documentation:
Click on the Subscribe button to launch the process of selecting the plan and amount of daily scans. You can check details of plans and pricing in the following page:
The Risk Level (RL for short) is a quantitative measure of the current risk with software supply chain attacks, and models the security posture of the DevOps system, according to the scans performed by the Xygeni platform.
In the Xygeni Dashboard, Risk Level is shown, along with the variation with respect to projects' current baseline.
RL is a function of the issues found for the project, with range the interval [0, 100], computed at the project level. When a project has no (detected) issues, its RL is zero. Higher values for RL are worse.
A project is the target for the scans. It can be any unit of software that can be analyzed independently, with any granularity. It could correspond with an application, module, service, microservice, container image, library, component…
A project typically is under version control, and it physically has a set of source files, often grouped as a repository in a Source Code Management (SCM) System.
Xygeni detectors' documentation will help you with examples of how to remedy each security issue, and the recommended steps to follow for determining the impact of a security issue and fixing it.
Examples of remediation actions include revoking leaked secrets, modifying infrastructure playbooks or receipts and updating existing resources, hardening authentication or authorization settings for CI/CD tools, or fixing pipeline configurations.
Xygeni provides mechanisms to automatically remediate/fix certain kind of issues.
Xygeni detectors' documentation will help you with examples of how to remedy each security issue, and the recommended steps to follow for determining the impact of a security issue and fixing it.
Examples of remediation actions include revoking leaked secrets, modifying infrastructure playbooks or receipts and updating existing resources, hardening authentication or authorization settings for CI/CD tools, or fixing pipeline configurations.
The Dashboard offers contextual remediation actions for each security issue or unusual activity alert. The common actions are:
Manage Issue
: A basic handling workflow, for setting a status
Create ticket
: Opens a new ticket in the configured ticketing tool. Full information for the issue is rendered so the ticket could be created with minimal edition work.
Open Pull Request
(PR): Opens a pull request in the configured Source Control Manager, with contextual information on the issue. Commits with changes in source / configuration files could be added to the branch, for automation, so after review the pull request could be approved for merging into the target branch.
Disable Check
: Deactivates the detector that reported the issue, possible for all the policies including it. This action is only available when the user’s roles allows it. This is a quick way to remove detectors that do not apply for the organization, or that are creating issues that should be ignored systematically.
Search Similar
: Opens a view with issues similar to the selected one. Similarity is typically by the specific issue type across all projects. This helps to focus on fixing all of them by applying the recommended fix steps.
Xygeni platform provides a basic handling workflow that helps to trace each issue.
The Status
field may take the following values:
Open
: The initial status: The issue has not yet handled.
Under review
: The issue is under investigation.
Confirmed incident
: The issue is a confirmed security problem, and should be fixed.
For unusual activity, additional states are available:
Incident closed
: The problem was corrected, and any potentially harmful consequences related to the unusual activity were handled.
Normal business
: Internally the issue will be "muted", applying to current issue and current scan.
Only for security issues (secrets, misconfigurations, bad components and IaC flaws):
Muted: False positive
. The issue is not real. If you feel that this is a bug, the checkbox "Create false positive ticket for Xygeni" can be enabled, which opens a bug ticket into Xygeni Support.
Muted: Accept the risk
. The issue is acknowledged, but the risk is assumed instead of trying to fix the issue.
Muted: Other
. When the issue needs to be silenced by other reasons (to be documented in the notes).
The remediation actions could be invoked from the Remediation Actions popup in the Xygeni Dashboard.
To change it for a given security issue, just open the issue and click on "Change Status" (see image below)
Then, a dialog will open where you can the change the status as well as provide any further additional information about the reason of the change.
To change the status of several issues (bulk mode), just select some issues and click on "Change Status" (please note that Change Status action will only appear when some issue(s) are selected)
For more information, read .
See in Inventory
: Shows, in the , the asset where the issue was located.
Every project in Xygeni has a Baseline.
A Baseline is a specific scan of the project considered as the basis for comparison with other scans and mainly used to see evolution of issues in the project.
By default, the baseline of a project is the First scan of the project. Anyway, you can specify a concrete scan as the project baseline.
Xygeni checks compliance of your software with Software Supply-Chain Security Standards and Guidelines.
Xygeni runs automated audits on software projects and DevOps tools for compliance assessment, under standards and guidelines like OpenSSF Scorecard or CIS Software Supply Chain Security among others.
Each standard is composed of a set of checkpoints that are checked against the software project under analysis.A checkpoint belongs to a category, and could be required or optional.The result tells us if the project complies with the standard, with a compliance level.
Modern software is complex, and the build and deployment infrastructure is accordingly complex.
Software is typically built and deployed into production environments using pipelines of commands. A build/deploy pipeline is based on a set of automated processes and tools, involving source control, build tools, continuous integration, testing automation (unit, integration and regression testing), validation, reporting, and distribution.
The assets involved in build/deploy pipeline are named SDLC assets, and in the Xygeni platform an inventory of SDLC assets, for the pipelines used in an organization, is discovered automatically.
Security issues and unusual activity events, as captured by the Xygeni platform, are then mapped to the target SDLC assets.
An SDLC Asset may present misconfigurations, leaked secrets, vulnerabilities and other security issues, and could be abused in software supply chain attacks. Common assets are code repositories, dependencies graphs, package managers, build files, security tools, CI/CD workflows, or IaC templates and provisioning scripts, along with the infrastructure, tools and extensions (like "plugins") used in the build / deploy pipelines.
Security issues and unusual activity events, as captured by the Xygeni platform, are mapped to the target SDLC assets. The Inventory allows to reveal unknown, misconfigured and vulnerable SDLC systems and infrastructure, and perform impact analysis: dependencies between assets may be exploited by attackers to propagate the attack payloads.
The scan findings or security issues represent misconfigurations, flaws or anomalies that increase the risk of the software platform being the target of a successful software supply chain attack.
Each issue could be found by a detector, which can be thought as the unit of analysis. Running a set of detectors over the target software project is a scan. Scans for each issue kind can be analyzed separately or in a single run.
The following are the issue kinds in Xygeni.
A dependency is vulnerable when some programming defect or flaw can be exploited with malicious intent. Do you remember Log4J ? That dependency is not malicious, just vulnerable. Someone found a trick to exploit a flaw in the source code of the dependency that could be used to gain improper access to some resource.
A Suspect Dependency models a dependencies issue, a defect in project dependencies that may open the door to software supply-chain attacks.
A classic example is having an indirect dependency which was compromised by an actor to inject malware in the software that depends on that component. The actor may inject malicious code and indirectly attack the organizations that uses the affected version(s) of the malware component.
A CI/CD misconfiguration is any flaw in the configuration of a tool, that could allow bad actors to perform unintended operations affecting the software pipeline.
There are many systems in the software pipeline that could have a misconfiguration: Source code managers, build tools, package managers and registries, compilers, testing frameworks, IDEs, CI/CD systems, provisioning tools, container frameworks and orchestration tools…
Examples of misconfigurations are:
unprotected delivery code branches,
lack of code reviews,
poor access control practices like the lack of multi-factor authentication,
publicly accessible storage buckets in the cloud infrastructure,
flaws in CI pipelines, critical data not encrypted at rest,
weak password policies and non-rotated encryption keys
... and many more.
When a software supply chain attack occurs, the bad actors may infiltrate malicious code and unintended behaviour, open backdoors and change the software in a way that could be used as a vector for malware delivery.
Malicious Code Evidence comprises indicators of malicious software (malware) that are discovered analyzing statically the target software. Analyzing software for potential supply chain breach complement software security reviews with automation. And as the adversaries try to hide their changes from human review they use obfuscation techniques that in fact could serve as additional evidence of wrongdoing.
From evidence collected, a maliciousness score
for the software under analysis is computed. With enough evidence accumulated, the analyzed software could be classified as potentially malicious.
The Malware Scanner is a tool that checks the files of the software project under analysis, and reports "evidences" according to malware detectors currently active for the policy assigned to the project. Detected evidences could be uploaded to Xygeni platform for consolidation and for enabling response actions.
A secret in this context is any piece of information that allows an actor to gain access to a sensitive resource. Typical secrets are authentication credentials like usernames and passwords, API keys / tokens, cryptographic keys (symmetric or private), pass phrases, and many more.
Secrets gained by bad actors are the cause of major attacks to the software supply chain. Having hardcoded secrets in software source code or configurations, particularly when under source control, is an invitation for bad actors to gain access to organization’s sensitive resources.
Other type of information like personal or private information, business sensitive data, industrial footprints, etc. could be included in this category.
Infrastructure-as-Code or IaC is a method to provision and manage IT/Cloud infrastructure through the use of source code (IaC templates) under version control, rather than through operating procedures and manual processes.
An IaC Flaw represents a "flaw" or "defect" (a non-compliance) for a certain policy, found in an Infrastructure-as-Code (IaC) template.
A Software Supply Chain Standard / Guideline is represented by a Xygeni Standard, which contains a list of Checkpoints. A Checkpoint is a requirement that the software must match.
A checkpoint may belong to a category. Categories break down the standard into a hierarchy of different areas that represent the standard’s relevant parts.
Each checkpoint could be required or optional. A required checkpoint is mandatory and must pass for the project to be compliant with the whole standard. An optional checkpoint, on the other hand, is evaluated but does not affect the global compliance status.
Checkpoint has further metadata, like the severity (which is the impact of a non-compliant checkpoint on the risk for supply chain security), what is the meaning of the checked condition, and what needs to be done for attaining full compliance.
When a standard’s compliance assessment is evaluated, a compliance report is generated, with each checkpoint result and a global compliance status.
The checkpoint result models the result of the evaluation of a checkpoint over the project under analysis. The result has a status (pass, partial, fail, n/a or unknown) with the following meaning:
ok
- the target project is compliant for the checkpoint.
fail
- the target project is NOT compliant.
partial
- the target project is partially (but not completely) compliant.
n/a
- the checkpoint does not apply for the target project.
unknown
- checkpoint evaluation failed, result is unknown / inconclusive / uncertain.
The result provides a compliance level in the 0 … 10 range, with 0 = not compliant, 10 = fully compliant, and 1 … 9 the level of partial compliance attained.
The global compliance status is derived from the checkpoints evaluated, with this scheme:
Optional and n/a checkpoints do not influence in the standard compliance status, they are ignored.
If no checkpoint was run, N/A
is returned.
Otherwise, if at least one mandatory checkpoint is non-compliant or unknown, FAIL
is returned.
Otherwise, if at least one mandatory checkpoint is only partially compliant, PARTIAL
is returned.
Otherwise, if at least one mandatory checkpoint is compliant, PASS
is returned.
If no mandatory checkpoint has a pass / partial / fail status, N/A
is returned.
The global compliance level is the weighted average (with weights based on severity) of the compliance level of all the checkpoints evaluated (required and optional), with the same 0 … 10 range, telling us how far is the current status from full compliance for the target software project.
Unusual activity events represent user actions in the tools or over the critical files that are out of the typical pattern of actions learned for the project.
The platform offers two main types of activity monitoring to detect and respond to potential security incidents or breaches: Critical file modification
and User suspect behavior
.
Xygeni provides vital capabilities to help organizations enforce security procedures and detect unauthorized changes on files marked as critical.
Our platform detects any change potentially leading to Code Tampering in these files when a commit does not match the conditions that must be accomplished for the changes to be accepted.
In such situations, the system launches an alert to notify the change on a subset of the project sources deemed as critical without following the prescribed change process.
Xygeni’s policies and audit enforce best practices in access controls, multi-factor authentication requirements, and role-based permissions applications to limit user access to critical systems and data.
Unusual activity detection performs continuous monitoring by collecting state changes from tools and logs and compiling usage patterns into a user behavior model.
After that learning phase, it identifies anomalies in new operations as deviations from the 'normal' user behavior modeled.
Live notifications for high-severity alerts are provided to the user, as this kind of flaw usually demands immediate action to mitigate the risk and prevent further damage.
A Xygeni policy lays out the set of rules, practices, checks and processes aimed at hardening your software infrastructure for controlling the risk of supply chain attacks. Each policy defines acceptable and unacceptable behaviors, which detectors should be in place, and what is the impact (based on risk scoring) when security issues are introduced.
A software project under analysis has a policy assigned, which could be more or less strict according to organizational criteria. The policy in effect is downloaded at scan time or when raw activity data is received from Xygeni sensors.
The Xygeni platform provides a default policy, tailored to cover a common assessment of the software supply chain security for most organizations.
Go to for further information on how to mark a scan as the project baseline.
See for more information.
Read more about .
The runs on your premises to analyze DevOps tools and software projects, including source code and configurations.
Publicly known vulnerabilities are published as CVEs. Xygeni is able to scan your dependencies to find CVEs from public sources (, and among others )
See , and for more details.
Attacks to the Software Supply Chain often use techniques that exploit flaws in components referenced in software and dependencies descriptors, package manager configurations, and other sources. Attack patters like or Typosquatting even deserve a name.
See and for more details.
See and for further information.
See and for further information.
See and for further information.
See and for further information.
See , and for full documentation on the supported standards and their checkpoints.
See and for further information.
See and for further information.
Read more about .
Xygeni Web UI pages are composed of three elements:
The page content
The Navigation Bar lets you access all the Xygeni functionalities:
The Projects Selector is a UI feature that allows to select a project subset among the available ones in the Xygeni organization. Almost every UI page’s data is related to the selected Project(s).
The subset of projects can vary from a unique project to All projects, passing for any defined subset.
To use the Projects Selector click on it and you can either select an specific Project or a Project group.
The
The
You can also click on the filter icon to open the filter dialog.
When specific rules or special exit codes are required by pipelines or security policies, complex conditions can be defined using guardrail expressions.
Guardrails Gates enables users to customize and specify how a Xygeni command should behave in the presence of certain conditions or criteria, thereby allowing for flexible and tailored handling of failure scenarios.
This screen enables users to:
View some basic statistics regarding the number of projects and issues of the organization
View the list of projects scanned in the organizacion. The projects are ordered by last scan although the user can order them by other criteria clicking in the columns header of the table. For each project, user can see the branch configured as default in Xygeni.
View the Security Posture for each project and a summary of issues by severity. Projects containing any type of malware are remarked with a special symbol (skull)
Access to most usual actions related to projects with one click.
In this screen the Project Selector does not apply. The screen always shows all projects. The screen is shown and described in detail below:
This section shows the number of projects scanned in the organization. Projects is a sum both of repositories and images scanned.
The following box shows a summary of total issues by severity in these projects. In the slide of detail of each project the user can check the stage of the SDLC in which Xygeni located potential malware and go to that section directly.
As usually in all the screens showing any list, the user can customize the list of projects shown in the table applying filters. Here we consider the following criteria:
Alert: Filter by different types of alerts associated to the project as for example containing malware. Only projects with that alert associated will be in the table below
Project Type: to select projects of type ´Repository´ or ´Image Container´
Name pattern: The table shows only projects with the string in the name
Branch pattern: As the previous value, table only shows projects with the default branch containing the string in the filter
Risk Level: Table consider only projects in the risk levels selected. Below you have more details about the Risk Score calculation and values.
Tags: to show only projects with tags containing the string provided in this filter.
When the customer apply any custom criteria, the option ´Clear All´ over the filter boxes becomes red to remark that the filtering criteria is customized. Clicking on that option the filter will be reset to its default options.
The Risk Score (or Risk Level, RL for short) is a quantitative measure of the current risk with software supply chain attacks, and models the security posture of the DevOps system, according to the scans performed by the Xygeni platform.
In the Xygeni Screens we can access to Risk Score of all assets in the SDLC such as Projects but also for components, pipelines, collaborators, etc.
RL is a function of the issues found for the asset, with range the interval [0, 100], computed at the project level. When a project has no (detected) issues, its RL is zero. Higher values for RL are worse.
The RL is qualified in three categories that make more evident how good or bad is the risk for the organization. Each category is encoded with a color following the "semaphore" scheme:
Low: RL between 0 and 33, green color.
Moderate: RL between 33 and 66, yellow color.
High: RL between 66 and 100, blood-red color.
In the section of the list the user finds a table with several details
Last scan date: The date of the latest scan of the information shown in the table
Number of projects from the total items complying with the criteria of the filter. The table uses infinite scroll, so the user only has to scroll on the table to automatically load the next block.
Bulk actions button: It will enable when one or more projects are selected clicking on the check box of the rows and based on the selection will enable applicable operations
User can interact with the rows in different ways
Clicking on a white space of the row, the slide with details about the project will be opened
Clicking on the scan now button will launch an on-demand scan of the project
Note: If the project has been scanned using the CLI and it is not integrated with the managed scans system, this option will not be available and the button will be disabled.
At the end of each row, there is an icon with 3 dots that deploy a contextual menú for one-click access to different options.
Although the operations are self descriptive, below you can find a quick description:
Scan Now: equivalente to click the blue button to launch an on-demand scan if the project is integrated in the managed scan system
View All Issues: equivalente to click on a white space of the row. It opens a slide with additional information as described below
View Dependency Graph: If the user has the inventory license, the system shows the graphical representation of the project that shows all assets with its security posture and the relationship among them
Download SBOM: download the SBOM file in the selected format
Configure Project Settings: Only available for Root and Project Manager users. It opens the slide for configuration of the project without need of going to the settings section.
Go to Repository: If detected, it opens a new window and shows the repository of the project in the corresponding SCM
When customer clicks on the row, or select the option of view details a slide with several sections opens:
The Actions button on the top right area shows the same actions that the menú in each row described above.
The summary view of the projects shows meta information related to the project date, size and location. Second section shows information about the team and most active users. Finally, some statistics from the languages contained in the project are also available.
Important: If the project contains malware a red notices will be shown on the top. Detailed sections containing malware is available in the Findings section.
Second section of the slide of information shows a detailed view of the issues found in each stage of the SDLC. Clicking on the name of the stage, the user will go to the specific list of issues in the corresponding product.
A special symbol (skull) appears before the name of the section, if the system detects malware there. Visiting the specific list of issues will show the malware on top of the vulnerabilities detected.
Note: Malware detection requires ´Premium´ or ´Enterprise´ plan to enable malware detection capabilities.
In the section below the statistics, User can directly see the first 5 issues of the category selected in the selector. For each issue the ´View Details´ option open another slide with details for the issue as in the specific risks screen
Xygeni’s Prioritization Funnels helps you to easily filter and identify those issues most relevant, helping you to concentrate on “fixing what matters”.
Given a full set of security issues, Prioritization Funnels allows you to specify “prioritization criteria” that will be automatically applied to the full set of issues, discarding those issues that don’t meet the criteria. The resulting set after applying the criteria will contain the most important issues to remediate.
Xygeni’s Prioritization Funnels are available for any kind of security risks and are available under the Risks sections and clicking on the Prioritization funnel button .
As you can see in the above example image, after applying some prioritization criteria, the initial 8,450 issues are reduced to 329.
The principal funnel (feed with all types of risks) is available at All Risks menu option (at the top-left). But you can also find risk-specific funnels under any “Risk” option in the different products available at the left-menu (Risks (SAST), Risks (SCA), Risks (CI/CD), Secrets and Infrastructure as code) .
Xygeni comes with some out-of-the-box predefined Funnels
At the top filters of any funnel, click on “Funnel” filter and the available funnels are displayed:
** Xygeni General Prioritization
** Xygeni CI/CD Prioritization
** Xygeni IaC Prioritization
** Xygeni SAST Prioritization
** Xygeni Secrets Prioritization
Select anyone and the funnel will be refreshed with the new criteria.
By default, the funnel will be displayed based on “Severity”, i.e. it will show data grouped by severity (Critical, High, etc.). But (by clicking on “Split by” filter), you can switch the graphics to be based on Category (Malicious Code, IaC, Secrets, CI/CD, Open Source, etc)
You can even further filter by selecting specific Categories
At the bottom of the page, there is a filter box where you can select which issues you want to see.
One of them is Funnel Phase, which allows you to filter by any specific funnel criteria. If you select any of them, the issues list will contain the items filtered until the selected criteria
Once you select one of the funnel phases, the table will list the issues contained into the selected phase. Then, you can further refine your search by selecting additional filters.
The RL has the following properties:
Issues with info
severity are ignored in the computation of the RL. They are just informative, and have no effect on the risk.
In addition, muted issues are also ignored, no effect on the risk.
A single critical issue makes the RL fall in the high risk range RL ≥ Ch; similarly, a single high severity issue makes the RL fall in the moderate risk range RL ≥ Cl. This is the "a chain is as strong as its weakest link" property. This is true for issues on a single project.
Monotonicity: RL should increase when (non-info) issues are added. RL should NOT INCREASE when a single issue is removed. In other terms: if A1 and A2 are sets of issues with A1 ⊆ A2 then RL(A1) ≤ RL(A2).
Also, if a issue changes to a higher severity, the RL should increase: more severe issues implies higher risk.
No issue, no risk: RL(∅) = 0. When no issues found but analyses were run, risk level is zero. Note: When no analysis available for project, then RL is undefined, NOT zero.
Averaged risk across projects is meaningful: For convenience, the RL for a group of projects, or for the organization could be computed using a weighted average on the RL of the projects.
The relative weights for each issue type and severity, and the weight of each project in the global risk for the organization or project could be edited in the xygeni.risk-level.yml
configuration file.
The cutoff values for each risk category could be configured as well:
Xygeni platform is a cloud-based service, accessible via REST API, that keeps findings and metadata from different sources.
The Xygeni platform can be depicted by the following chart:
Xygeni provides integrations for running scans or uploading security issues, performing administrative operations, or exporting findings to communication and reporting tools.
Activity on public repositories is monitored by Xygeni so potential attacks could be detected early. Publishing new packages in popular public repositories is an example of an activity that is monitored by Xygeni. In addition, security advisories are ingressed for modelling new threats and malicious activity on the wild. Xygeni customers may receive alerts when a security issue may affect them.
See for further details.
The Projects Screen is the first page you see when you login to
Finally, there is a quick access to the section, so the customer can configure integration with their SCM and launch the first scan of a project from there. Once the project is scanned and in the platform, the configuration of the project and management of scan can be done from this screen.
See for further information and details.
Clicking on the name of the project, the user goes to section to see all risk of the project
View All Issues: equivalent to click on the name of the project. It goes to the section to access all issues found in the project.
Out-of-the-box funnels are preceded with ** to differentiate to and cannot be modified.
Basically, it's based on a , running into your internal network, that inspect all your infrastructure searching for different types of vulnerabilities (visit for further info on available scanners).
Once the scan is done, you decide either to upload the results to the Xygeni servers (to see the results into the SaaS ) or keep locally the results into your network for further processing.
Xygeni provides a command-line interface (CLI) for running the . The scanner can either run analysis commands separately, like detecting hardcoded secrets or misconfigurations, or run all the analyses at once.
The is java program that can be triggered directly from , from any , (Unix shell script, Windows batch, PowerShell script, etc.), from (pre-commit, pre-receive) or embedded into .
The scanner can be launched to scan a , a , a or group or repos and even a whole .
The Xygeni Scanner can be automatically installed into you repositories or manually embedded into your pipelines. Please visit and for further information.
Scanner findings can be inspected/consumed in the , downloaded via Xygeni , in different formats (csv, json, etc) and also can be notified by creating (Jira, GitHub) or opening team (Slack)
See for further detail
The is the web user interface for showing the results of the scans. The dashboard provides a summary security posture and the breakdown of security issues at the global, group or project levels; plus trends exploration, reporting, and platform administration, among other facilities.
See for further detail
The is the central element in the platform. All elements in the platform use the API as a backbone for reporting findings and receiving the processed information for integration into Xygeni tools, third-party plugins and integrations, or any custom integration for organizations.
See for further detail
See and for further detail
See and for further details.
Xygeni provides two main facilities for monitoring your build & deployment systems: a Scanner that runs on demand or when a certain event occurs, and connects to target system for analysis, and a Sensor that is installed in the target system and notifies to the Xygeni platform when events of interest occur.
The following are the most common scenarios:
You may run a scan from the command line to analyze any local software project, a software repository, or a container image. The scanner discovers the assets and performs static analysis on the source code, package metadata and configurations.
The scanner runs scan steps aiming at each potential security issue class, and generates reports that could be uploaded to the platform.
In a snap, the Xygeni scanner, once installed, could be invoked from the command line like this:
The build pipeline is a good point for running the Xygeni scanner, as it can check early in the build cycle if there are issues that should be resolved before advancing to the next step.
Under Continuous Integration / Continuous Delivery, an event on the source code repository often triggers a pipeline or workflow that builds, tests and perform different checks on the sources and the artifacts built. A Xygeni scan could be one of these checks. This ensures a continuos monitoring on security issues that may compromise the software supply chain.
For streamlined integration, Xygeni provides facilities for integration into build pipelines for the major CI/CD systems.
The Xygeni scanner could be run at client-side, before a commit is applied, by adding a pre-commit
git hook.
If you have control on git hooks at the git server, you may add a pre-receive
hook at server side, so a push may be rejected if the scanner finds critical security issues.
Two examples of common use cases for such hooks are (1) avoiding secret leaks committed to sources, and (2) critical file modifications not following a required change protocol.
Unusual activity may indicate either a running attack or a sloppy change in the security configuration that opens the door to bad actors. To capture the activity as it happens in the software build & deploy systems, Xygeni provides a collection of plugins ("Sensors") that, once installed in the target systems, notifies to the platform the events of interest for correlation and identification of anomalies.
Live notifications for high severity alerts are provided to the user, allowing to take immediate action to mitigate the risk and prevent further damage.
Xygeni prioritization and response can be also used with security findings reported by third-party security tools (namely external scanners), both open-source and commercial. The scanner provides a report-upload
command for uploading the structured reports generated by third-party security tools, in areas like Static Application Security Testing (SAST), Software Composition Analysis (SCA), or Secret Leaks / IaC Flaws Detection.
Imagine that your organization selected tool X for SAST. In your CI/CD pipelines you may have a step where the SAST tool is launched to uncover vulnerabilities in your source code or configurations. The output of the tool could be ingested by Xygeni to normalize the findings, and then use the findings for prioritization and remediation. The workflow can operate both on findings reported by Xygeni scans or by your third-party tool of choice, at least when its output format is supported.
With Xygeni, you can create your own custom Prioritization Funnels
Then, you can either create a New Funnel, Clone the selected funnel or Delete the selected funnel. Out-of-the-box funnels cannot be either modified or deleted.
Click on New Funnel and give a name to that funnel.
You can also use this new funnel as a “default” funnel for whatever type of risk.
After naming the new funnel, you add the criteria by selecting among the available ones in “Select a stage to add” .
Once you select one , clock on the plus sign (+) to add it to the funnel.
You will see some values for the criteria (true and false in the example). You decide which value must be met by any issue to “pass” the criteria. For example, if I select Reachability: true means that any reachable issue will pass this stage of the funnel.
You can add as many criteria (or stage) as you want, but remember that order is important. Criteria are applied from top to bottom. You can drag-and-drop the criteria to change the order.
For those multivalued criteria, selecting several options works as an “OR”
When done, click on Save button and your new funnel will be displayed and among the available ones.
Any funnel is composed of criteria that produce the different stages of the funnel.
Xygeni provides some out-of-the-box criteria, although you can add your own custom criteria.
Additionally to the general meaning of the above prioritization criteria, every criteria has a special meaning depending on the issue type that applies.
Besides the above out-of-the-box criteria, you can create your own custom criteria. To do it, you just need to add custom properties to your applications (projects in Xygeni’s terminology) and those properties will be available as funnel criteria.
The exit code from the scanner could be used for stop the build if the issues found are critical enough, acting as a "".
See the for further details on how to install and run the scans.
See the section for full details.
Xygeni can automatically add a pipeline to run the scanner. please visit for further information.
For full details, read .
To know how the sensors work and how to install them in the target systems, read .
To know the list of external scanners and formats supported, please go to the . For full details on how to upload the results from a third-party scanner using the xygeni report-upload
, read the .
Click on and the Prioritization Funnel Configuration panel will open.
For any criteria with Business nature, its value depends on the value of the property and CUSPs associated to the project. Adjustments are available in the properties of the project in .
See for further info.
Fixable
A vulnerability is Fixable if there is a safe component available remediating the vulnerability. This criteria removes from previous criteria those vulnerabilities with no available fixes.
Always True
Always True
Always True
In application code
The scope of the component is for production, not in test or compile scopes. User can configure specific scopes used in their organization.
The issue is located into a file with a path that does not contain any "test" directory
The issue is located into a file with a path that does not contain any "test" directory
The issue is located into a file with a path that does not contain any "test" directory
Reachability
The vulnerability is reachable because the application code execution reach the vulnerable code in the component
It include issues that represent a security issue such as PPE, confusing names, or issues related to permissions. See each detector information for more details.
The secret is located in: - a file under version control - an image
It includes Iac security issue types (Appsec, Encryption, Gensec, IAM, Network, Secrets...) It discards issues related to best practices (as Convention).
Check detectors documentation for more details
Exploitable
This criteria includes those CVEs with a EPSS score bigger than 0,1
Same as Reachability
Includes any secrets that has been verified or can not be verified.
All secrets that Xygeni verifies as inactive are discarded by this criteria.
Same as Reachability
Active Development
The project has commits in the last 90 days
The project has commits in the last 90 days
The project has commits in the last 90 days
The project has commits in the last 90 days
Deployed
A component's vulnerability is considered as Deployed if Xygeni detects a pipeline or workflow that deploys (checkout) the project, image or package
Always True
A secret is considered as Deployed if it appears in a public repo or image
An IaC issue is considered as Deployed if Xygeni detects a pipeline or workflow that uses the IaC configuration to deploy the infrastructure
Internet Exposed
Any component vulnerability is considered as Internet Exposed if the project Internet Exposed property value is set to true.
The repository with automations is public, or the issue is associated to the infrastructure
The repository, image or package is public
Any IaC issue is considered as Internet Exposed if the project Internet Exposed property value is set to true.
Reachability
Auto
Technical
Issue
Exploitability
Auto
Technical
Issue
Fixable
Auto
Technical
Issue
In application code
Is this vulnerability is app code (i.e. not in tests code)
Auto
Technical
Issue
Deployed
Is this application being deployed ? Xygeni can detect if the application is being deployed to some resource, but you can also manually assign the correct value
Both
Technical
Project
Active Development
Is this application actively under development ? An application is considered by Xygeni as "Active Development" if latest commit is not older than 90 days. You can manually change this value.
Auto
Technical
Project
Internet Exposed
Is this application exposed to the Internet ?
Both
Technical
Project
Legacy
Is this a legacy (i.e. out of active maintenance) application ?
Manual
Technical
Project
Product Unit
To which Product Unit this application belongs ?
Manual
Business
Project
Business Value
What is the Business value of this application ?
Manual
Business
Project
Provider
Who is the provider of this application ?
Manual
Business
Project
Architecture
Which is the technical architecture of this application ?
Manual
Business
Project
Business Area
To which Business Area (or dept) does the application belong to?
Manual
Business
Project
Any custom criteria
Manual
Business
Project
Given we found an issue with a CVE, we should first know if it is reachable (as seen above). But even being reachable, what is the likelihood to be exploited ?
We’re continuously drowning in CVEs — including many high-severity CVEs — but the majority aren’t actually exploitable.
This, of course, can make it difficult to prioritize vulnerabilities as well as to estimate remediation efforts.
CVEs provide a “metric” for such exploitability (based on CVSS). CVSS scores vulnerabilities based on their characteristics and potential impacts but don't consider real-world threat data.
Conversely, EPSS forecasts rely on up-to-the-minute risk intelligence from the CVE repository and empirical data about real-world system attacks.
While CVSS measures the inherent (theoretical) severity of vulnerabilities, EPSS predicts the likelihood of exploitation based on empirical data.
In this context, although Xygeni scores the severity of a CVE issue based on CVSS, the Exploitability criteria add a more reliable criteria to the funnel, thus filtering out those issue with low exploitability likelihood.
You can view the EPSS Score associated to a vulnerability in the Vulnerability Details section.
When a dependency has some vulnerability (i.e. a CVE), is that CVE really affecting my application?
Reachability, in a SCA (or vulnerability analysis) context, is a property of a vulnerability finding that indicates whether it will (or will not) be invoked under the software’s normal operational conditions.
Analyzing the reachability for a large set of vulnerability findings for a software is important.
Most of the SCA scanners works by extracting the dependency graph (direct and transitive/indirect dependencies) from manifest files (pom.xml, package.json etc.), and simply enumerate the known vulnerabilities that are listed in vulnerability databases (NVD and others). This gives many more findings that the real vulnerabilities that a potential adversary can exploit in the real deployed software.
But most of those findings are NOT actually reachable, because although the dependency with the vulnerability V is “imported” (in the component descriptors of the target software S and transitively on its dependencies), it only uses a small portion of those components, not invoking the vulnerable code for V.
By focusing on reachable vulnerabilities only -the ones that exist within the code usage path of S- we focus on the vulnerabilities that can pose an actual risk. By doing so, we disregard the ones that, while present, may never be executed.
Reachable: An issue is flagged as reachable when the application's call graph can access the vulnerable method in the dependency, either directly or indirectly.
Always Reachable: If an issue is flagged as always reachable, it is strongly recommended that the vulnerability be fixed regardless of your application code. This often occurs when the vulnerable part is unrelated to a specific dependency method.
Potentially Reachable: An issue is flagged as potentially reachable when it's impossible to confirm its reachability or unreachability. Common reasons for this include unsupported call graph analysis for certain languages or package managers, insufficient information, and scenarios with dynamic or conditional invocations.
Not reachable: An issue is flagged as not reachable when the application's call graph analysis determines that no function calls directly or indirectly invoke the vulnerable method in the dependency.
Xygeni allows to generate SBOM for a certain project.
Two SBOM formats are currently supported:
To generate it, you have two options:
Once you have selected a project, the Dashboard will present you the Download SBOM option.
You can also generate a SBOM with xygeni CLI. This is useful if you need the SBOM during a build/deploy CI/CD process.
Reports section can be reached from Report at the Menu Bar, and contains following pages
Governance information about issues discovered, remediation, trends, etc.
Historical information related to executed scans
When specific rules or special exit codes are required by pipelines or security policies, complex conditions can be defined using guardrail expressions.
Guardrails enables users to customize and specify how a Xygeni command should behave in the presence of certain conditions or criteria, thereby allowing for flexible and tailored handling of failure scenarios.
Guardrail specification is a subset of Xygeni™ XyFlow Language, tailored for guardrail conditions.
Trends page shows governance information about issues discovered, remediation, trends, etc.
It can be accessed through Reports >> Trends at the Menu Bar.
Top panel shows different metrics by "period" (last month, last 3 months, last 6 months and last year)
Total Issues is the number of Total Open issues at present date.
New Issues is the number of New Issues (i.e. opened) at present date.
Exposure Window is the elapsed time between the creation of an issue and present date (this metric only applies to open issues). Mean Exposure Window is the arithmetic mean of all the open issues' exposure window.
Time to Resolve is the elapsed time between the creation and closing of an issue (this metric only applies to closed issues). Mean Time to Resolve is the arithmetic mean of all closed issues' time to resolve.
Cumulative Pending Issues chart shows information about evolution of issues.
Being X-axis the timeline of the select period, left Y-axis indicates the Number of New / Resolved issues and right Y-axis indicates the Number of Open issues.
Impact of Anomalous Activities chart displays information about frequency of anomalous activities (Critical File Changes and Suspicious Activity)
Issues Exposure Window chart displays information about the number of issues at a certain date falling into three Exposure Window thresholds (<15d, 15-30d and >30d)
Issues Time to Resolve chart displays information about the number of issues at a certain date falling into three Time-To-Resolve thresholds (<15d, 15-30d and >30d)
Metrics By Group table displays metrics for a group of projects. Grouping is based on Projects' Properties. You can select the grouping property and it will display all the property's values with metrics of all the corresponding projects.
Is this vulnerability reachable ? (see for further details)
Is this vulnerability exploitable ? (see for further details)
Is this vulnerability fixable ? (see for further details)
Any custom-defined property defined for a project (see )
Exploitability should be considered as a main criteria for vulnerability prioritization (see )
Reachability should be considered as a main criteria for vulnerability prioritization (see )
cyclonedx
, CycloneDX format (JSON schema).See for full details.
spdx
, the Software Package Data Exchange (SPDX) in JSON serialization format, standard ISO/IEC 5962:2021. See for full details.
Please visit for further information.
Visit for further information.
See , and for further information.
See for a description of every metric.
By Fixable (at least in OS depedendencies) it's meant that, for a certain vulnerability in a version of a dependency, there exists a further version that fixes the vulnerability.
Because not always there exists a fix, Fixable can take different values:
No Fix Available : There does not exist any version that fix the vulnerability
Xygeni allows to be integrated into most of SCMs and CI/CD systems.
The following are examples on how to integrate Xygeni into several SCMs and CI/CD systems:
Xygeni allows to actively monitoring and addressing vulnerabilities and risks as they are detected in the SCM or CI/CD systems.
The following are the provided sensors for SCM and CI/CD systems:
Xygeni allows to create tickets, issues and alerts in the following platforms:
Xygeni allows to configure notifications in the following platforms:
Xygeni allows automatic fixing of certain types of issues in the following platforms:
Organizations may need to customize the Xygeni platform to meet their specific needs. Although Xygeni is designed to provide useful, actionable findings on the security posture against software supply chain attacks from the very start, Xygeni also provides a rich REST API and a set of development tools for special customizations.
A Xygeni detector is a piece of logic that detects a security issue in a scanned target system such as source code, a source code repository or a container image, a CI/CD system or another software too. Xygeni provides a rich set of predefined, off-the-self detectors used in scans, but you may add your own custom detectors.
Xygeni provides a comprehensive development framework for custom detectors, and such custom detectors can be easily integrated into scans using the --custom-detectors-dir
option.
Xygeni provides a framework for developing customized report converters and registering them so they are available in the report-upload
scanner command.
Auto Fix Available : There exists a newer version of the dependency that fixes the vulnerability. Besides, it also means that Xygeni can automatically fix the vulnerability (visit for further information)
Manual Fix Available : There exists a newer version of the dependency that fixes the vulnerability. Differently from Auto-Fix, in this case is not possible due to different reasons (the fix entails a sequence of manual tasks, the package manager fix automation is not supported yet by Xygeni, etc.). In these cases, you should follow the provided recommendations to fix the vulnerability.
Xygeni allows to be integrated with Git Hooks. See for detailed reference.
There is a public GitHub repository, , that contains full documentation and sample sources for different extensions of the Xygeni platform. In this repository you will find detailed instructions and how-to guides for developing custom detectors, sample code and project build templates.
The allows retrieval of security issues, project risk summary, trends in security position, and report generation, plus administration. You may use the API to integrate the security findings into your own tools and systems, or into your pipelines.
See for further detail
For full information, read .
If you need to from a third-party security tool, and the report format is not supported by Xygeni, you may develop your own extension for loading the input report and converting it to one of the available Xygeni reports.
For further details, read .
In other cases, third-party tools do not provide a standardized report to be ingested. For some popular tools an export mechanism (often using the tool api) is provided. See for more details.
At Reports >> Scans you can access all the historical information related to executed scans.
Top panel shows a timeline of the frequency of the scans, splitted by:
In case of error or warning, the slide will display the reason(s).
The list of scans also shows (and filter) the scope of the scan: complete (Full Scan) or partial (Partial Scan)
Most of Risk pages contain a functionality to compare scans. It can be accessed by selecting ChangeLog option.
Xygeni’s Application Security Posture Management (ASPM) enhances how your teams visualize, prioritize, and remediate risks. Xygeni platform delivers real-time visibility and contextualization that simplifies security, ensuring your applications are protected from development through deployment.
Xygeni automates the identification and cataloging of every asset within your software supply chain, enhancing visibility and control over your development and deployment processes.
Furthermore, Xygeni automatically identifies and continuously monitors all assets, assessing their interdependencies and the individual and overall security posture of each asset, application, and customer defined group or category.
This analysis is crucial for managing administrative users, contributors, and collaborators associated with software repositories. By scanning and assessing the roles and activities of individuals involved in the development process, Xygeni supports organizations in achieving the least privilege approach by identifying and mitigating risks related to inactive or overprivileged users.
Some key features are:
Customers can define up to eight stages in their prioritization funnel, tailored not only by severity but also by issue type and category. This flexibility ensures that each organization can focus on the vulnerabilities that pose the highest risk according to their specific security policies and operational needs.
The funnel system supports the integration of customer-defined properties alongside pre-configured stages such as reachability or exploitability, among others. This allows organizations to refine their security focus further and manage vulnerabilities more effectively based on unique criteria important to their environment.
By utilizing Xygeni’s dynamic funnels, teams can optimize their security efforts, ensuring that critical issues are quickly identified and addressed.
Xygeni’s Application Security Posture Management (ASPM) platform enhances its capabilities by easily integrating reports from third-party security tools, including Static Application Security Testing (SAST) and Software Composition Analysis (SCA) tools.
This integration allows organizations to leverage their existing technology stack, providing a comprehensive view of security threats across different tools and platforms.
By consolidating and correlating these reports, Xygeni helps teams understand their security posture in a unified context, ensuring that all potential vulnerabilities are identified, prioritized, and addressed efficiently.
Key benefits of this integration include:
Unified Security Dashboard: Consolidates findings from various tools into a single, comprehensive dashboard for easy monitoring and analysis.
Enhanced Threat Detection: Combines data from multiple sources to provide a more complete assessment of security risks.
Efficient Remediation: Enables quicker and more coordinated responses to security issues by providing centralized management of vulnerabilities.
Xygeni’s Application Security Posture Management platform includes a robust security audit trail feature that provides a comprehensive timeline of events associated with each asset.
This feature tracks and logs all significant activities, such as changes, updates, and security incidents, ensuring that users have a clear and detailed view of the security history for each asset within their software environment. The most relevant capabilities of our security audit trail are:
Event Login: Every modification, update, or security event related to an asset is meticulously logged, creating a chronological record that can be crucial for troubleshooting, compliance audits, and security investigations.
Comprehensive Coverage: The audit trail captures a wide range of events, from code commits and build configurations to deployment activities and configuration modifications, ensuring that all aspects of the asset lifecycle are monitored.
Easy Access and Visualization: Users can easily access and visualize the audit trails through Xygeni’s intuitive interface to quickly find specific events or patterns.
Enhanced Security and Compliance: By maintaining a detailed record of all actions taken on each asset, organizations can enhance their security posture and compliance with regulatory requirements, making it easier to verify that proper processes are followed and to detect potential security breaches early.
Xygeni’s ASPM platform optimizes the remediation process by providing detailed guidelines and automated actions for addressing risks and vulnerabilities. It offers clear, actionable steps tailored to each specific issue, enabling quick and effective resolutions. Integration with ticketing and tracking tools facilitates easy updates to workflows, ensuring vulnerabilities are promptly managed.
ASPM set of options lets you access:
You can either select All or a Project Group, or a specific Single Project at the
Successful scans (SUCCESS)
Scans with errors in analysis (WARNING)
Scans with processing errors (ERROR)
A scan is tagged as if ALL the executed scanner (deps, misconf, etc) were successful.
A scan is tagged as if ANY of the executed scanners have failed.
A scan is tagged as if ALL the executed scanners have failed.
Clicking on the icon of a scan will open a slide with details of the scan
Clicking on the icon of a scan marks that scan as the baseline of the project.
See for further reference.
See for further information on how to compare scans
Below you can find you can find some of the main features of Xygeni's ASPM. For a full description of ASPM in the Xygeni UI please go to
From source control systems to build tools, CI/CD workflows, and distribution mechanisms, Xygeni captures a detailed of assets including code repositories, opensource and private dependencies, package managers, pipelines and jobs, scripts and build files, plugins and tools, Infrastructure as Code (IaC) templates and cloud resources.
See for further details
Xygeni enhances its Inventory capabilities by integrating a comprehensive feature.
: Xygeni scans for all SCM (Source Control Management) user accounts that have read, write, or manage permissions on repositories. It includes permissions assigned directly to users or inherited from groups with access to the repositories.
: The system registers all SCM groups, including any users with significant permissions, ensuring that all potential access points are monitored and controlled.
: Xygeni also identifies git users who are not linked to an SCM account but have made commits to the git history. Xygeni tracks contributions across all branches, providing a complete picture of who has influenced the codebase.
See and for further info.
Xygeni’s prioritization capabilities go beyond standard methods by incorporating that allow for extensive customization and precise filtering.
See for further info
See for further information
See for further information
See and for further information.
the "" page
the modules
the
Xygeni is a platform for improving the Software Supply Chain Security posture for organizations.
The platform protects the integrity and security of your software ecosystem throughout the entire SDLC by providing the following products:
All Risks' Statistics view shows:
Charts for # of issues by severity, by type and by type & severity
A table with the issues (as well as a filter for the table)
You can see issues of a specific type by clicking on the type
You can use filters to select specific issues:
By severity
By explanation
By issue category (cicd, iac, secrets, etc)
By issue type
By project (pattern)
By issue statis (open, confirmed, muted, etc)
By tag
All Assets page shows the full list of assets for a given project of for a set of projects.
Given the high number of different asset types, the Navigation Bar offers several groups for related assets:
Projects
Components
CI/CD Assets
Delivery Assets
System & Tools
Collaborators
This page display the following information:
Number of Assets
Number of Assets at Risk (i.e. with security issues)
Number of systems and tools
Charts for number of issues by severity, category and category & severity (with links to specific assets types)
A table with all the assets (as well as filters)
For every asset, it shows information about:
Risk level of the asset
Variation of the Risk Level from the project baseline
Name of the Asset
System of the Asset
Category of the Asset
Asset type
Issues by severity
Tags
Links to details of the asset
The Pivot Graph shows the direct relationships with other assets. Double-click on any asset to show the pivot graph for the selected asset.
Those assets with a red circle surrounding a number (the risk level for that asset) indicates that there are security risks associated to that asset. Clicking on them it displays the details of the asset together with its issues (Findings tab).
You can also select the Audit Trail tab to see a timeline of all the security issues introduction.
Most of Risk pages contain a functionality to compare scans. It can be accessed by selecting ChangeLog option in the Risks pages.
To compare two scans, you must select the source (FROM) and the target (TO) scans
The source scan (FROM) allows to be selected among:
Pre last scan (the previous to the last executed scan)
First Scan (the first scan of the project, by default it's the project baseline)
A specific scan (selected by execution timestamp)
The target scan (TO) allows to be selected among:
Last Scan (the last executed scan of the project)
A specific scan (selected by execution timestamp)
You can filter the list by type of change (new and/or removed)
Modern software is complex, and the build and deployment infrastructure is accordingly complex.
Software is typically built and deployed into production environments using pipelines of commands. A build/deploy pipeline is based on a set of automated processes and tools, involving source control, build tools, continuous integration, testing automation (unit, integration and regression testing), validation, reporting, and distribution.
The assets involved in build/deploy pipeline are named SDLC assets, and in the Xygeni platform an inventory of SDLC assets, for the pipelines used in an organization, is discovered automatically.
Security issues and unusual activity events, as captured by the Xygeni platform, are then mapped to the target SDLC assets.
An SDLC Asset may present misconfigurations, leaked secrets, vulnerabilities and other security issues, and could be abused in software supply chain attacks. Common assets are code repositories, dependencies graphs, package managers, build files, security tools, CI/CD workflows, or IaC templates and provisioning scripts, along with the infrastructure, tools and extensions (like "plugins") used in the build / deploy pipelines.
Security issues and unusual activity events, as captured by the Xygeni platform, are mapped to the target SDLC assets. The Inventory allows to reveal unknown, misconfigured and vulnerable SDLC systems and infrastructure, and perform impact analysis: dependencies between assets may be exploited by attackers to propagate the attack payloads.
The SDLC inventory allows:
To know which elements are involved during software build & deploy operations.
To understand which pipelines are secure and which are vulnerable or flawed.
To have an insight of how risk propagates across systems, and how an attack might break through systems to affect other parties.
In the SDLC inventory there are relations between assets, so it is important to understand the different kind of assets and their relationships:
Repositories may contain children (modules), each with its own dependencies graph. Many repositories are single-module, anyway.
A module refers to a dependencies graph, and may produce one or more build artifacts (libraries, container images…), that could be published in component registries.
A repository is often built by a CI/CD product, using one or more build workflows (a build workflow may build artifacts from multiple repositories and publish the artifacts in different registries, i.e. a real graph).
Sometimes the pipelines are files under version control along with the repository. Some SCM systems with its own CI/CD tool enforce this pattern, and other external CI/CD tools like CircleCI also do, but others like Jenkins do not.
The CI granularity has also various levels. For most CI/CD systems, a 'build pipeline' for a project has 'workflows', each workflow has multiple jobs, and 'jobs' (which can run in a given build machine or an "array" of them) is a sequence of 'steps' or 'commands'. The graph could present fully this hierarchy or not (keep at a given level of granularity, like the workflow), but at the end the real build commands run are those little steps at the end.
A CD pipeline, on the contrary, is built from IaC configuration (a set of IaC template files under a given framework like Terraform, Azure ARM or Bicep, AWS CloudFormation…) which launches commands to sync the desired state represented by the IaC configuration with the existing assets in the cloud. So the CD pipeline may have multiple workflows based on jobs that, in the end, run the tool’s CLI command (terraform
, aws
, az
, ansible
) to perform the sync or build the assets directly.
There are "contain" dependencies (a "parent" node can break down into "children") and "uses" dependencies ("builds", "runs", "publishes", "deploys"…) that could be represented by the directed graph.
The inventory is compiled automatically by the Xygeni scanner (during runs of the inventory
command) and the integration sensors.
The inventory scan processes configuration and source files for gathering information about the pipeline and resolving the relationship between the assets, including common assets like CI/CD systems and other shared tools.
You can reach the Inventory Projects page either by selecting Projects in the Navigation Bar or selecting the Project tab of the All Issues page.
The Inventory Projects page contents are different depending on if you have selected a group of projects or a single project.
For a group of projects, the page shows:
the total number of projects in the group
the number of files and total size of the group
total number of commits and daily rate
a table with all the projects (as well as filter fields)
For every project, it also display information about the number of issues by Asset Category (coloured by highest priority with issues)
The Summary tab shows general information as well as the possiblity ot download the SBOM for that project. The other tabs (SCM, Package Manager, CI/CD, AppSec and Deploy) show the project's assect by category. Selectin a single asset will show additional info about the asset as well as assocaited security risks.
Number of files and size
Number of commits and daily rate
Creatin date, last code change, etc
Team and Contributors of the project
Programming languages
Bottom panel of Dashboard for a single project shows data about assets of the selected project, grouped by:
SCM (repository platform, issues by severity, # of commits)
Package Manager (pkg managers used by the project, # of packages, issues by severity)
CI/CD (CI/CD platform, # of pipelines, # of plugins, issues by severity)
AppSec (appsec tools used, etc)
Deploy and provisioning (cloud platforms, # of cloud resources defined in IaC files, issues by severity)
By clicking on this panel you can access further details on every group of assets.
By clicking on a specific asset you will see the details of that asset (general data, associated issues, etc)
In you click on the "Dependency Graph", you will see a full graph containing all the assets and relationships of the selected project. You can use the filters to reduce the graph as you need.
Clicking on any asset will open a slide with full information of the selected asset (properties and associated risks)
Selecting "Download SBOM" allows to generate and download the project SBOM in Cyclon DX or SPDX formats.
Unifying Risk Management from Code to Cloud delivering real-time visibility, prioritization, and remediation
Malicious code can be injected into your application code by attackers infiltrating your systems or even by internal attackers.
Minimize Open-Source Risk and Keep you Application Safe From Malicious Packages
Optimize Your CI/CD Ecosystem for Robust Protection
Enable continuous integrity, artifact verification, and attestation to prevent tampering without slowing your development process
Keep Safe Your SDLC Detecting any kind of secret Avoiding committing new ones
Scale Cloud Security Identifying All Cloud Misconfigurations
Prevent Malicious Activity Detecting Behavior-Based Risks
By Funnel Phase (see )
In the issues table, by clicking on the icon of any issue, you will see the details of the issue.
Clicking on the icon will show the Pivot Graph for the selected asset.
Clicking on theicon of any asset will show the Findings and Audit Trail tabs as explained above.
Baseline (the scan tagged as )
For more information, see .
Clicking on the icon of every project will show a slide with detailed information about the project.
In case you have selected a single project into the , the information displayed will be relative to the selected project:
The bottom panel shows aggregated information about the assets of the project. See for further details.
The Inventory's Delivery Assets displays information about cloud assets of your project(s):
Cloud configurations (dockerfiles, kubernetes deployments, etc)
Cloud resources (any kind of cloud resource)
Comprehensive Support for Major Frameworks
Terraform: We provide detectors for a wide range of resources across major cloud providers such as AWS, Azure, and Google Cloud, making it ideal for cloud-agnostic infrastructure setups.
CloudFormation: Managed AWS service integration allows for detailed modeling and provisioning of AWS resources.
ARM and Bicep: Tools for Azure resources, ranging from traditional ARM templates to the newer, more developer-friendly Bicep syntax.
Kubernetes: Whether using basic Pods syntax or complex Helm charts, Xygeni ensures your Kubernetes deployments are secure.
Docker: Our security extends to Docker environments, including Dockerfiles and docker-compose files that define services, networks, and volumes.
The Inventory's Delivery Assets page displays the following information:
Total number of Delivery assets (and number of assets with security issues)
Distribution by type
Cloud Frameworks and Providers detected
A table with a full listing of all the Delivery Assets (as well as filter fields)
The Inventory's Components displays information about components (3rd party dependencies) of your project(s).
The Inventory's Components page displays the following information:
Total number of components (and average per project)
Total number of Direct dependencies (i.e. those explicitly declared in your package manager's manifest files)
Number of components with some security risk
Charts about distribution of components by repository, ecosystem and language
A table with a full listing of all the components (as well as filter fields)
Ecosystem (npm, maven, etc)
Provenance (the parent component in case of a transitive dependency)
Data about the Publisher of the component
Latest available version and publication date
License detected and type
The Issues tab shows information about vulnerabilities of the component.
Clicking on the icon will show the for the selected asset.
Clicking on theicon of any asset will show the for the selected asset.
Another important filter field is Alert Type. This filter allows you to see those dependencies with License warnings, dependencies tagged as with Malware code, or Obsolete dependencies. See for a full description.
Clicking on the icon of any component will open a Summary slide with details of the component:
The Inventory's CI/CD Assets displays information about CI/CD assets of your project(s):
Pipelines
Jobs
Build Scripts (makefiles, pom.xml, etc)
Scripts (shell scripts)
The Inventory's CI/CD Assets page displays the following information:
Total number of CI/CD assets (and number of assets with security issues)
Distribution by type
CI/CD systems detected
A table with a full listing of all the CI/CD Assets (as well as filter fields)
Clicking on the icon will show the for the selected asset.
Clicking on theicon of any asset will show the for the selected asset.
The Inventory's Systems & Tools displays information about systems and tools of your project(s):
Security tools used in your pipelines (bandit, checkov, Checkmarx, Sonarqube, etc)
SCMs (GitHub, Bitbucket, etc)
SCMs plugins
CI/CD systems (GitHub, Jenkins, Tekton, etc)
CI/CD plugins
The Inventory's Systems & Tools page displays the following information:
Total number of Systems & Tools assets (and number of assets with security issues)
Distribution Systems & Tools by type
Distribution of security tools by type
A table with a full listing of all the Systems & Tools (as well as filter fields)
Clicking on the icon will show the for the selected asset.
Clicking on theicon of any asset will show the for the selected asset.
The Inventory's Collaborators displays information about collaborators of your project(s):
SCM Organizations
Users
User Groups
The Inventory's Collaborators page displays the following information:
Total number of organizations
Total number of user groups
Total number of users
A table with a full listing of all the Collaborators (as well as filter fields)
In the Findings tab, you will find detailed information about the collaborator as well as a summary of all the issues introduced by the selected collaborator.
In the Audit Trail tab, you will find a timeline of all the security issues introduced by the selected collaborator.
Clicking on theicon of any asset will show the details for the selected asset.
Health Check page displays useful metrics and details about your Xygeni projects.
There are several sections in this page:
Findings by Category
Projects
Components
System and Tools
Collaborators
Pipelines
Coverage
Findings by Category chart shows a 5-axis spider chart where there is an score about every axis.
Projects section displays two types of information
Inactive Projects, i.e. xygeni projects whose last code change is older than XXXX (TBD)
If you click on the Inactive View >> link, you will see the inactive projects as well as the applied filters:
Obsolete Branches, i.e. repo branches whose last code change is older than XXXX (TBD)
If you click on the Obsolete Branches View >> link, you will see the inactive branches as well as the applied filters:
Components section displays several types of information related to components.
Licensing Issues is the number of components with some kind of issues related to the component's license (mainly, use of a copyleft license).
With different versions is the number of components that are used in 2 or more different versions.
Out of date Versions is the number of components that a newer version is available.
Obsolete components is the number of components whose newer version is older than XXX (TBD), possibly meaning that those components are abandoned or out of maintenance and you should consider to use another component.
If you click on any of the View >> links, you will see the components as well as the applied filters:
Collaborators section displays two types of information
Inactive Collaborators, i.e. repo users whose last activity is older than XXXX (TBD)
If you click on the Inactive View >> link, you will see the inactive projects as well as the applied filters:
Over - privileged Collaborators, i.e. repo users whose performed actions do not need granted permissions (TBD)
If you click on the Over privileged View >> link, you will see the over privileged collaborators as well as the applied filters:
Pipelines section displays information about total number of pipelines and how many of them are inactive (i.e. not executed in the last XXXX TBD)
If you click on the View >> link, you will see the inactive pipelines as well as the applied filters:
Coverage section displays information about total number of projects without Inventory information (i.e. Inventory scanner not executed on those projects)
If you click on the View >> link, you will see the non-inventoried projects as well as the applied filters:
Projects by Size section displays information about average size of projects as well as the number of projects above the average. This information is useful to detect the reasons (most often those over-sized projects include some kind of binary artifacts that should not be stored into the SCM).
If you click on the View >> link, you will see the over-sized projects as well as the applied filters:
The Inventory Scanner is configured in the YAML file conf/xygeni.inventory.yml
.
The scanner configuration file, conf/xygeni.inventory.xml
contains properties for:
Selecting the files to include / exclude. Defaults are provided for common directories to ignore.
Configuration for report output, including the columns / fields to render.
Configuration for each ecosystem analyzer.
Scan configuration properties like mode = sequential or parallel. Parallel model use threads to run the scan in parallel across files and detectors.
Assets for different ecosystems are processed by specific detectors. Each detector process matching files and other sources, and may invoke a tool API, when available, for gathering additional information for the asset.
The following ecosystems are supported:
Source Code Management (SCM) systems: GitHub, Azure Devops, BitBucket, GitLab.
Dependencies Management systems for multiple language ecosystems, including Package managers and Component Registries, like NPM, Maven, Gradle, Bower, Nuget, pip, go.mod, RubyGems, PHP Composer, Swift Package Manager, CocoaPods, Carthage, Cargo, etc.
CI/CD tools: The facility included by the SCM systems listed above, plus specialized CI/CD systems like Jenkins, CircleCI or Travis CI.
Security tools: Many kinds of security tools, as configured in the xygeni.security_tools.yml
configuration file.
Cloud assets, like containers, container orchestrators, Infrastructure-as-Code (IaC) frameworks and provisioning tools, like Dockerfiles, docker-compose, Kubernetes, Terraform, Bicep, Azure Resource Manager, CloudFormation, Ansible, etc.
The following is the list of third-party security scanners and report formats supported. Formats and tools are listed in alphabetical order, and Xygeni does not endorse any vendor or tool.
sca-sarif
<any>
Component vulnerabilities detected by a SCA tool, SARIF format
sca-checkmarx
Checkmarx SCA
CxSCA report, in JSON format
sca-checkmarx-one
Checkmarx One
SCA scanner of Checkmarx One, in JSON format
sca-checkmarx-one-results
Checkmarx One
SCA scanner of Checkmarx One, exported using 'cx results show'
sca-snyk
Snyk
Snyk SCA report, in JSON format
sast-sarif
<any>
Code vulnerabilities detected by a SAST tool, in SARIF format
sast-checkmarx
Checkmarx
CxSAST JSON report
sast-checkmarx-xml
Checkmarx
CxSAST XML report
sast-checkmarx-one
Checkmarx One
SAST scanner of Checkmarx One, in JSON format
sca-checkmarx-one-results
Checkmarx One
SAST scanner of Checkmarx One, exported using 'cx results show'
sast-fortify-fpr
Fortify
Fortify SAST report, in .fpr or .fvdl format
sast-fortify-xml
Fortify
Fortify SAST XML report
sast-kiuwan
Kiuwan
Kiuwan SAST XML report
sast-sonarcloud
SonarCloud
SonarCloud SAST JSON report
sast-sonarserver
SonarServer
SonarServer SAST JSON report
iac-sarif
<any>
IaC vulnerabilities detected by a IaC tool, in SARIF format
iac-checkov
Checkov
Checkov IaC scanner, JSON format
iac-kics
KICS
IaC vulnerabilities detected by KICS, in JSON format
iac-checkmarx
Checkmarx
IaC scanner of Checkmarx, in JSON format
iac-checkmarx-one
Checkmarx One
IaC scanner of Checkmarx One, in JSON format
iac-checkmarx-one-results
Checkmarx One
IaC scanner of Checkmarx One, exported using 'cx results show'
secrets-sarif
<any>
Secrets detected by a secrets tool, in SARIF format
secrets-gitleaks
GitLeaks
Secrets detected by GitLeaks, in JSON format
In addition to the inventory command, an analysis of administrative users, contributors and collaborators related to the repository can be included.
Collaborators analysis will help to identify inactive and overprivileged users, and trace risks introduced by those users.
Collaborators analysis will register groups and users with following criteria:
all SCM user accounts who have read, write, or manage permissions on the repository by directly assigned permission or by inherit from a group with permissions on the repository.
all SCM groups that included any of above users.
all git users not related to a SCM account but who has commits on the git history (on any branch)
By default only user activity for the last 12 months will be considered.
Example:
The report-upload
command may be used to import both findings from third-party tools and from Xygeni scans to the platform for processing.
The command validates the input report(s), normalizes the findings and convert them to the Xygeni standard format for each scan type, so findings from different tools could be processed for prioritization, filtering, workflow and remediation.The converted output could be optionally dumped to the standard output or to a file for validation or for generating a baseline.
The syntax is:
To list a table with the supported third-party tools and formats supported, run xygeni report-upload --show-formats
.
The -n | --name
option provides the project name the report(s) uploaded will be assigned to. It will be inferred if not provided. For a single xygeni report it will be extracted from the report metadata.
Multiple reports could be provided, so the -r|--report
, -f|--format
and -o|--output
could be given in triples. Only -r|--report
is required, the others are optional. The -l|--log-file
only will be used for xygeni scan results and will be ignored otherwise.
The scan logfile could be optionally uploaded to Xygeni, in the --log-file
parameter.
The command returns 0 (OK) exit code when the upload succeeded, or a non-zero exit code when there is an error. When upload is successful, the scan code is printed as the output of the command.
Examples:
List the supported formats:
Upload a Checkmarx SAST report (xml format):
Upload two previously generated xygeni reports:
Convert snyk report into xygeni, but do not upload. This could help to check the conversion performed before set in the CI/CD pipeline.
Upload SCA, SAST and IaC findings from Checkmarx One report exported using cx results show
command:
A build/deploy pipeline is based on a set of automated processes and tools, involving source control, build tools, continuous integration, testing automation (unit, integration and regression testing), validation, reporting, and distribution of software.
The assets involved in build/deploy pipeline are named SDLC assets, and in the Xygeni platform an inventory of SDLC assets and their relations, for the pipelines used in an organization, is discovered automatically. Security issues and unusual activity events, as captured by the Xygeni platform, are then mapped to the target SDLC assets.
For discovering SDLC assets at scan time, the xygeni inventory
scanner command may be used.
Discovery works by extracting the information from the available sources, like project and dependencies descriptors, build files, pipelines describing the CI/CD workflows, IaC templates, possibly complemented via calls to the tools' APIs, that fetch additional information for better qualifying each asset discovered.
The command:
scans software projects for assets related to software build & deploy pipelines, build the inventory and uploads the result to Xygeni platform (where DIR is the directory with the software project to analyze, possibly cloned from a Git repository).
It produces the following output:
The command has the following options:
The most important properties are:
Name of the project, -n
or --name
.
Input, either a directory (-d|--dir
), a repository (-repo|--repository
) or a container image (--image
). If none given, the local current directory is assumed.
Upload results to the service, --upload
. By default, results are not uploaded.
Output file (-o
or --output
) and format (-f
or --format
). If not output file (or stdout / - are used), the standard output is used. Use --format=none
for no output.
Kiuwan is a powerful, end-to-end application security platform. Kiuwan Static Application Security Testing (SAST) product is the tool that detects security vulnerabilities in source code using static analysis.
The problem is that Xygeni does not provide a mechanism in the agent (Kiuwan Local Analyzer) for writing to a local file the findings from the tool.
The Kiuwan scanner (Kiuwan Local Analyzer) by default uploads its findings to the Kiuwan platform.
Once rules and jar uploaded and added to the Kiuwan model, the local analyzer will execute the exporter rule when the output report is given, so it can be uploaded into Xygeni.
Run the Kiuwan Local Analyzer with the path to the report file provided in the KIUWAN_JSON_REPORT
environment variable.
Use the xygeni report-upload
command for uploading the exported report, after normalization to the Xygeni SAST format.
The Malware Scanner is configured in the YAML file conf/xygeni.malware.yml
.
Detectors are configured with different YAML files located under the conf/malware
directory of the xygeni scanner. There is a sample _template.yml_
file that could be used for creating your own detectors.
By clicking on the you will be able to open a ticket on the integrated ticketing system (see for further details)
By clicking on the icon, you will see all the details of the selected project.
By clicking on the icon, you will see all the details of the selected component. See examples below.
By clicking on the you will be able to open a ticket on the integrated ticketing system (see for further details)
By clicking on the icon, you will see all the details of the inactive collaborator (latest activity, permissions and issues)
By clicking on the you will be able to open a ticket on the integrated ticketing system (see for further details)
By clicking on the icon, you will see all the details of the over privileged collaborator (latest activity, permissions, issues and audit trail)
By clicking on the you will be able to open a ticket on the integrated ticketing system (see for further details)
By clicking on the icon, you will see all the details of the over-sized project (latest activity, file count, size, access level, as well as to all of its assets)
Collaborators: it is not active by default. See how can be run and what organization assets are gathered.
The xygeni report-upload
command normalizes and uploads findings from third-party security tools to the Xygeni platform. The input reports are typically export formats (JSON, XML) and may follow common exchange formats like Static Analysis Results Interchange Format () or GitLab’s .
Go to for further details.
For Kiuwan, exporting the findings to a local file needs special configuration, as documented in
For Sonar, json report can be downloaded from issues/search endpoint at , using the parameter additionalField=_all
to get all additional fields from project. If maximum number of issues exceed the limit (500), query should be paginated, …
Collaborators analysis tab can be found in SLDC Inventory page (see )
The formats available are listed in the section.
For additional information on the inventory and how it is used in the Xygeni platform, see .
Issues are linked to inventory assets ONLY when the scans are run together with the inventory step. It is recommended to run a full for inventory processing. Running the inventory
scan alone should be used for configuration and testing.
To export the findings to a local file for uploading into third-party tools like Xygeni, the approach used was to register the custom rule provided that registers a task to export the findings at the end of the analysis, using the standard-provided report formatter for the xml_issues
report, the same format that the agent uses to send the findings to the Kiuwan on-cloud service.
The rule JAR and rule descriptors are already provided in the directory for your convenience. Anyway, the jar with the compile rule could be generated using Maven:
The compilation will copy the jar into dist
and run the script to create a rule descriptor for each technology, which stores all rule desccriptors into .
Next, follow the instructions to upload the and the to Kiuwan.
Read in Kiuwan documentation for full details on how to install rule definitions and their implementations, so the exporter rule may work at your installation. You need also to add the imported rules to an existing model, so the local analyzer will download them.
The Malicious Code page provides a comprehensive view of all the malicious code evidences found in your source code by Xygeni's .
In the issues table, by clicking on the icon of any issue, you will see the details of the issue.
Please read the documentation on .
The SAST Scanner is configured in the YAML file conf/xygeni.sast.yml
.
Detectors are configured with different YAML files located under the conf/sast
directory of the xygeni scanner. There is a sample _template.yml_
file that could be used for creating your own detectors.
A backdoor is a method of bypassing standard authentication procedures to gain access to a system. Attackers can install backdoors to maintain persistent access to compromised systems, allowing them to execute commands and control the system remotely. These are often used to launch further attacks or exfiltrate data over an extended period.
A dropper is a malware designed to install other malicious software onto a target system. Droppers can be standalone programs or embedded within other legitimate software. Once executed, they "drop" additional payloads, including any form of malware such as trojans, ransomware, or spyware.
Evader malware is specifically designed to avoid detection by antivirus software and other security measures. It employs techniques such as code obfuscation, encryption, and polymorphism to hide its presence and actions from security systems, making it difficult to detect and remove.
Generic malware refers to a broad category of malicious software that doesn't fit into a specific subtype but shares common malicious characteristics. These can include unauthorized data access, system damage, and network disruption. Generic malware often serves as a catch-all term for unidentified or novel threats.
Phishing involves tricking users into divulging sensitive information such as login credentials or financial data. This is typically done through fraudulent emails, websites, or legitimate messages. Phishing malware can include keyloggers or other tools to capture the user's input and relay it back to the attacker.
Spyware is designed to gather information about a user or organization without their knowledge. It can include capturing keystrokes, screenshots, browsing habits, and accessing sensitive information stored on the system. Spyware often operates stealthily to avoid detection while continuously collecting data.
Banker malware explicitly targets banking and financial transactions. It aims to steal sensitive information such as login credentials, account numbers, and PINs. Banker malware often uses keylogging, screen capturing, and man-in-the-middle attacks to intercept data during online banking sessions.
A Trojan, or Trojan horse, disguises itself as legitimate software to trick users into executing it. Once installed, it can perform various malicious activities, such as creating backdoors, stealing data, or downloading additional malware. Trojans rely on social engineering to spread, often through email attachments or software downloads.
Keyloggers record every keystroke on a computer, capturing sensitive information such as usernames, passwords, and credit card numbers. The attacker then receives this data. Keyloggers can be hardware or software-based and are often used with other malware to maximize data theft.
Stealer malware is designed to extract specific types of information from a system, such as passwords, cookies, and browser history. It targets stored credentials and sensitive data to transmit back to the attacker. Stealers often focus on web browsers and email clients to harvest valuable information.
A bot is a type of malware that turns an infected computer into a "bot" or "zombie," which an attacker can control remotely. Bots are typically used to form botnets, networks of compromised computers used to conduct large-scale attacks, such as distributed denial-of-service (DDoS) attacks, spam campaigns, or data breaches.
Ransomware encrypts a victim's files and demands a ransom payment for the decryption key. It often spreads through phishing emails or exploit kits. The encryption used by ransomware is typically strong, making it nearly impossible to recover the files without the decryption key provided by the attacker upon payment.
Worms are self-replicating malware that spreads across networks by exploiting vulnerabilities. Unlike viruses, worms do not need to attach themselves to an existing program. They can cause significant damage by consuming bandwidth, overloading servers, and delivering payloads, such as ransomware or trojans, to other systems on the network.
Miner malware uses the infected system's resources to mine cryptocurrencies, such as Bitcoin or Monero, without the user's consent. It can significantly slow down the system and increase power consumption. Miner malware often spreads through malicious websites, infected software downloads, and vulnerabilities in network security.
The Risks (SAST) page provides a comprehensive view of all the SAST security issues at a glance.
You can reach SAST results under Code Security >> Risks (SAST) section.
By default, this page will display all the SAT issues, regardless the tool that found the issues (Xygeni SAST Scanner or any other 3rd party tool).
If you click on More filter fields, you can find the Tools filter where you can select a tool and only those issues reported by the selected tool will be displayed.
When a software supply chain attack occurs, the bad actors may infiltrate malicious code and unintended behaviour, open backdoors and change the software in a way that could be used as a vector for malware delivery.
From evidence collected, a maliciousness score
for the software under analysis is computed. With enough evidence accumulated, the analyzed software could be classified as potentially malicious.
The Malware Scanner is a tool that checks the files of the software project under analysis, and reports "evidences" according to malware detectors currently active for the policy assigned to the project. Detected evidences could be uploaded to Xygeni platform for consolidation and for enabling response actions.
For detecting malicious code evidences found in software project with sources in current directory, the command shown below uploads the results to Xygeni platform.
For exporting the most important malware evidences to CSV for review or for importing the findings into another tool:
The Malware Scanner is launched using the xygeni malware [options]
command.
For a full reference of all the available option, you can issue :
The most important properties are:
Name of the project, -n
or --name
.
Input sources to analyze, either directory with -d
or --dir
or repository with --repo
. Defaults to the current working directory.
Upload results to the service, --upload
. By default, results are not uploaded.
Output file (-o
or --output
) and format (-f
or --format
). If not output file (or stdout / - are used), the standard output is used. Use --format=none
for no output.
The detectors to run could be tailored with the --detectors
/ --skip-detectors
options. A common use-case is to consider only issues with high or critical severity with --detectors=high
.
The resource kinds to be scanned could also be tailored with the --kinds
/ --skip-kinds
options
TBD
For detecting code security vulnerabilities with sources in current directory, the command:
uploads the result to Xygeni platform.
For exporting the most important misconfigurations to CSV for review, or importing the findings into another tool:
The SAST Scanner is launched using the xygeni sast [options]
command.
For a full reference of all the available option, you can issue :
The most important properties are:
Name of the project, -n
or --name
.
Input, either a directory (-d|--dir
) or a repository (-repo|--repository
). If none given, the local current directory is assumed.
Upload results to the service, --upload
. By default, results are not uploaded.
Output file (-o
or --output
) and format (-f
or --format
). If not output file (or stdout / - are used), the standard output is used. Use --format=none
for no output.
The detectors to run could be tailored with the --detectors
/ --skip-detectors
options. A common use-case is to consider only issues with high or critical severity with --detectors=high
.
The Open Source Components page provides a comprehensive view of all your project(s) dependencies :
An important filter field is Alert Type. This filter allows you to see those dependencies with License warnings, dependencies tagged as with Malware code, or Obsolete dependencies.
Filtering by Licensing allows you to see those dependencies with some kind of License warning.
Basically, a Licensing Compliance Alert has to do with usage of Copyleft licenses.
Filtering by Malware allows you to see those dependencies with some kins of malware.
Malware alerts may come from two possible sources:
Open Source Security offers real-time monitoring of your dependencies to detect and mitigate threats before they impact your software.
Recent reports reveal that nearly three-quarters of codebases now contain high-risk open-source components. Vulnerabilities have soared from 48% to 74% in just one year. Even more concerning, 91% of these components are at least 10 versions outdated, significantly heightening security risks. The rise of malicious open-source packages has been meteoric, with growth rates exceeding 300% year-over-year, resulting in over 245K malicious packages detected in 2023. It’s time to take action against these threats.
Given these challenges, Xygeni’s Open Source Security solution is essential. It scans and blocks harmful packages upon publication, dramatically reducing the risk of malware and vulnerabilities infiltrating your systems. This comprehensive monitoring spans multiple public registries, ensuring all dependencies are scrutinized for safety and integrity. Xygeni also enhances your team’s ability to maintain secure and reliable software projects by contextually prioritizing critical issues and facilitating streamlined remediation processes
Xygeni Open Source Security is designed to provide complete protection against vulnerabilities and malicious code, ensuring your applications remain secure and resilient. With a robust suite of capabilities, Xygeni offers unparalleled visibility and control over your open-source components, helping you to manage risks effectively.
Comprehensive Component Identification and cataloging of each open-source component within your software projects.
Continuous Scanning and Vulnerability Management to ensure that every component, whether direct, indirect, or undeclared, is assessed for security vulnerabilities, maintenance issues, and licensing compliance.
Context-aware prioritization based on their severity, exploitability, and potential business impact. This context-aware approach ensures that your security and development teams focus on the most critical issues.
Expanded Security Beyond CVEs by incorporating additional risk factors beyond just CVSS scores. Xygeni prevents the integration of packages that may be CVE-free but still risky.
License Risk Management with instant visibility into potential open-source license issues, helping your team avoid legal complications and ensure regulatory compliance.
The one-click generation of SBOM and VDR in SPDX or CycloneDX formats ensures that your software components are transparent and compliant with regulatory requirements.
At the heart of Xygeni’s Open Source Security is our advanced capability to precisely identify and catalog every open-source component in your software projects. This thorough approach provides complete visibility into your software’s architecture, enabling a detailed assessment of your project’s security posture and compliance status. Your team can make better decisions by understanding exactly what makes up your software.
Xygeni’s software security platform excels in identifying and prioritizing vulnerabilities that pose the most significant risks to your software projects. By systematically analyzing the severity and potential impact of each identified vulnerability, Xygeni enables organizations to focus their resources on mitigating the most critical issues first. Our prioritization is driven by a combination of factors such as vulnerability severity, exploitability, exposure, the potential impact on business operations, and any other custom property defined by customers. Some key features of Xygeni’s prioritization process are:
Continuous Scanning: Xygeni assesses each vulnerability based on its severity and the affected component’s context. This approach ensures that vulnerabilities are not just evaluated in isolation but are considered within the broader scope of the system’s architecture.
Context-Aware Prioritization: Understanding that not all vulnerabilities are created equal, Xygeni prioritizes issues based on their operational and strategic impact. This means vulnerabilities that could lead to significant security breaches are flagged and addressed first.
Customizable Risk Metrics: Xygeni allows organizations to customize how risks are scored and prioritized, aligning the prioritization process with their specific security policies and compliance requirements. This customization capability ensures that the security efforts perfectly sync with organizational priorities and risk
As soon as new packages are published, Xygeni conducts a real-time scan to detect and block malware based on code behavior analysis, alleviating the need for extensive and urgent post-build remediation. Our systematic process sounds like this:
Public Registries Monitored: The service continuously scans multiple public registries like NPM, Maven, PyPI, etc.
Immediate Notification to Affected Users: As soon as a potential threat is detected, the system immediately notifies the affected users, enabling rapid response to mitigate risks. Notifications can be raised through standard Xygeni mechanisms such as email, messaging platforms, and webhooks.
Automatic Blocking of Zero-Day Malware: Upon detection, suspicious packages are automatically quarantined. The customer can use this information to implement guardrails in their CI/CD to prevent the packages from entering the development environment or the broader software supply chain.
Code Review by Security Researchers: A security research team reviews the quarantined package to verify the threat.
Confirmation by Public Registry: If confirmed by our internal team, we communicate it to the public registry, which should confirm the finding and validate the threat level and the nature of the malware or vulnerability.
Disposal: Once a threat is confirmed, the appropriate measures are taken to dispose of the threat safely, ensuring it does not re-enter the ecosystem.
Public Disclosure: The usual details about the malware and its disposal are publicly disclosed through the product, Xygeni blog, or the package registry to inform the wider community and prevent
Xygeni makes navigating the complexities of opensource licensing easy. Our scanning capabilities assess each component’s license, helping your team avoid legal issues and ensure compliance with both organizational policies and external regulations. With Xygeni, you can confidently use open-source software, knowing that all licensing requirements are met.
Xygeni actively monitors and identifies outdated or obsolete components in your software projects. By ensuring your projects always utilize the latest and most secure versions, Xygeni not only reduces potential security risks but also boosts software performance and compatibility.
Xygeni’s Suspect Dependencies Scanner is crucial for identifying and managing suspect dependencies that could be targets for supply-chain attacks. By analyzing the dependency graph, our product can detect issues such as typo-squatting, dependency confusion, and suspicious installation scripts that may indicate a compromise. If a component is recognized as suspicious, Xygeni provides detailed mitigation and remediation strategies to help safely remove or isolate the threat. This includes recommendations for version pinning, using whitelisted components, and blocking suspicious installation scripts.
Prioritizing vulnerabilities that pose the highest risk ensures that remediation efforts are concentrated where they are most needed, optimizing resource allocation and reducing the time and effort spent on lower-risk vulnerabilities. Moreover, Xygeni simplifies the remediation of open-source vulnerabilities by integrating directly into developers’ existing workflows and issue-tracking systems. This seamless integration provides all the necessary context for each vulnerability right within the tools developers already use, facilitating efficient and effective remediation.
Xygeni Open Source Security empowers organizations to maintain complete transparency over their software components with our SBOM generation feature. SBOM facilitates compliance with regulatory requirements and enhances supply chain security by providing a detailed inventory of all software dependencies. Additionally, our Vulnerability Disclosure Report (VDR) generation capability ensures that all stakeholders know potential vulnerabilities, enabling proactive risk management and reinforcing trust throughout the development lifecycle.
Xygeni enhances your software’s security by continuously scanning and analyzing open-source components for vulnerabilities. By connecting directly with the National Vulnerability Database (NVD), other vertical vulnerabilities databases and security advisories, and using Common Vulnerabilities and Exposures (CVE) information, Xygeni ensures fast and accurate detection of potential security issues to protect your software applications promptly and efficiently.
Xygeni provides a comprehensive range of detectors tailored to the unique characteristics of various software package managers, ensuring comprehensive coverage and precise detection of dependencies.
Anomalous Dependencies: Identifies unusual or unexpected dependencies within the context of the project, which may signal a security concern.
Dependency Confusion: This feature detects cases where internal package names may be confused with similarly named packages from public repositories, potentially leading to security breaches.
Known Vulnerabilities: Flags dependencies that contain recognized security vulnerabilities.
Malware: Looks for dependencies known to contain malware, providing critical security alerts to prevent potential harm.
Suspicious Scripts: Monitors for scripts within dependencies that might perform unauthorized or harmful actions.
Typosquatting: Aims to catch potentially malicious typosquatting attempts where package names are slightly altered to trick users into installing them.
Unscoped Internal Components: This is a special detector for NPM that identifies unscoped internal components and thus might be at risk of being publicly exposed or confused with external packages
To accomplish these functionalities, Xygeni provides a Scanner (to search for dependencies and security issues) and a Web UI to view the results.
In response to growing cybersecurity threats, regulatory bodies worldwide are increasingly mandating using Software Bill of Materials (SBOMs). SBOMs provide essential visibility into the components of software applications, facilitating better vulnerability management and compliance with security standards.
Dependencies for each ecosystem are processed by a specific analyzer. The analyzer process dependencies descriptors to extract direct and indirect dependencies, resolve their versions, and gather context information like licensing, provenance and other metadata.
The Open Source Risks (SCA) provides a comprehensive view of all the security issues of the dependencies.
Secrets' Statistics view shows:
Charts for # of issues by severity, by type and by type & severity
A table with the issues (as well as a filter for the table)
You can use filters to select specific issues:
By severity
By issue type
By dependency type (direct or indirect)
By project (pattern)
By issue status (open, confirmed, muted, etc)
By tag
etc.
Vulnerability Details tab shows detailed information about the CVE.
Reachability Analysis tab shows detailed information about the call paths to the vulnerable method(s) of the component.
Summary tab shows detailed information about the component:
Explanation
Component name
Location where defined
Description
Malware evidence tab shows detailed information about the code evidences found:
Cybersecurity solutions often rely heavily on identifying and mitigating known vulnerabilities and Common Vulnerabilities and Exposures (CVEs) to combat malware.
While this approach provides a foundational level of security, it has significant limitations that can leave organizations vulnerable to sophisticated and zero-day attacks.
Relying on CVEs means these solutions primarily react to known threats. New and unknown vulnerabilities, often named zero-day exploits, can remain undetected until a CVE is published. According to some reports, an average of 80% of successful breaches involve new or unknown "zero-day attacks". These attacks exploit undisclosed vulnerabilities or use new/polymorphic malware variants.
Organizations may feel secure because they have addressed all known CVEs. Still, without comprehensive security measures, they remain at risk from unknown threats and sophisticated malware that does not rely on known vulnerabilities. According to the 2023 IBM X-Force Threat Intelligence Index, 29% of security incidents involved malware that exploited unknown or zero-day vulnerabilities, underscoring the limitations of a CVE-focused approach.
Proactive Malware Blocking: Detect and block zero-day malware as soon as new packages are published, preventing malicious code from entering your development environment.
Immediate Notifications: Receive real-time alerts through standard Xygeni mechanisms, enabling rapid response to mitigate risks.
Comprehensive Threat Review: Security researchers review suspicious packages, and findings are confirmed with public registries to ensure accurate threat assessment. Our customers can review them in our Web UI.
Public Disclosure and Community Protection: Confirmed threats are publicly disclosed to inform the wider community and prevent re-entry into the ecosystem.
Xygeni Open Source Security is designed to provide complete protection against vulnerabilities and malicious code, ensuring your applications remain secure and resilient. With a robust suite of capabilities, Xygeni offers unparalleled visibility and control over your open-source components, helping you to manage risks effectively.
In addition to these SCA features, Xygeni offers an Malware Early Warning (MEW) service designed to raise alerts for suspicious packages. This service proactively protects your software supply chain and supports the implementation of security gates to block malware threats before they infiltrate your application.
You can search for dependencies/packages to inspect whether have some kind of malware evidences. For these purposes, Xygeni provides Malware EW, a search engine that queries the MEW database.
Malware EW displays information about:
Number of detected Malicious packages by MEW
A table that lists all the malicious packages detected by MEW
Filtering fields to search by different criteria:
Current status: Quarantine, Confirmed by Xygeni, Confirmed by Registry (see
Component and version pattern (admitting wildcards)
Component's Publisher
Summary tab shows detailed information about the component:
Symmary info
Info about the Publisher
Scoring of the component
Malware detected status
Malware evidence tab shows detailed information about the code evidences found:
Xygeni helps you to automatically fix vulnerabilities into your open source dependencies.
Actionable fixes for supported ecosystems appear in the scan results as shown in the example that follows.
Filtering by Auto fix available you will see which vulnerabilities can be automatically fixed by Xygeni.
If the issue is tagged as Auto Fix, you will see enabled the Fix vulnerability button.
In this example, you can see that the vulnerability (CD-2019-10744) is related to lodash: 4.17.11 and fixed at 4.17.12. Clicking on Fix vulnerability button will open a dialog where you can see the manifest file to be updated as well as what is the modification to upgrade to the fixed version. You can also see the repo and the Pull Request the will be open with the proposed change.
Clicking on Open PR button will create the Pull Request
If you go now to your SCM (GitHub in this example), you will be able to see that a new branch has been created.
The new branch will contain a commit with the proposed changes:
You will also see the created Pull Request, so you can approve it and merge to the protected branch.
The Dependency Scanner (DS) is a useful tool to collect and analyze the dependencies of a software project, aimed at identifying issues related to software supply-chain security. Dependencies are components or packages used in software that will be analyzed for known vulnerabilities or evidences of malware.
For getting the dependencies on third-party components (direct and indirect), and analyzing suspect/risky dependencies that should be reviewed, the command:
uploads the result to Xygeni platform and produces the following output:
The Open Source Dependencies Scanner is launched using the xygeni deps [options]
command.
For a full reference of all the available option, you can issue :
The most important properties are:
Name of the project, -n
or --name
. It will be inferred from input when not given.
Input, either a directory (-d|--dir
), a repository (-repo|--repository
) or a container image (--image
). If none given, the local current directory is assumed.
Output file (-o
or --output
) and format (-f
or --format
). If not output file (or stdout / - are used), the standard output is used. Use --format=none
for no output.
Upload results to the service, --upload
. By default, results are not uploaded.
The Software Bill Of Materials (SBOM) is an inventory of components listing the direct and indirect dependencies and their dependency relations, along with metadata.
The xygeni deps
can be used to generate the SBOM, in the following formats:
First, Xygeni provides a that performs a static analysis over your application code. Please see for further information.
Second, Xygeni also provides the functionality to . This way, you can integrate 3rd party data into Xygeni and benefit from functionalities. The supported SAST scanners are listed in the section.
In the issues table, by clicking on the icon of any issue, you will see the details of the issue.
Malicious Code Evidence comprises indicators of malicious software (malware) that are discovered analyzing statically the target software. Analyzing software for potential supply chain breach complement software security reviews with automation. And as the adversaries try to hide their changes from human review they use obfuscation techniques that in fact could serve as additional evidence of wrongdoing. See ()
Please read the documentation on .
Please read the documentation on .
See for further details
Indeed, this page is an Inventory view of your dependencies, so please go to for a full description.
Components with License alerts can be identified by icon.
Clicking on the icon of a component with License alert will open a Summary slide with details of the component:
Components with Malware alerts can be identified by icon.
Clicking on the icon of a component with Malware alert will open a Summary slide with details of the component:
1.- For "known" malware, Xygeni takes the information from public sources (, and among others )
2.- For "unknown" malware, Xygeni provides a Malware Early Warning functionality that continuously conducts a real-time scan to detect and block malware based on code behavior analysis. See for further details.
Known malware information come from public CVEs (NVD and OSV mainly). Therefore, the details of the issue are according to the public CVE. See for further details.
For malware detected by Xygeni, the details are richer. See for further details.
Please visit for a full description of supported package managers.
Open Source Security provides a comprehensive range of detectors tailored to the unique characteristics of various software ecosystems, ensuring comprehensive coverage and precise detection of suspect dependencies, among others : maven, PyPi, NPM, nugget, etc. See for a complete list.
See and, more specifically, and for instructions on how to execute an Open Source scan.
See and, more specifically, and for instructions on how to execute an Open Source scan.
See and
: A comprehensive view of all your dependencies
: All the security issues of the dependencies at a glance.
: A database of dependencies with malware
Open Source Risks (SCA) page is the same as All Risks but filtered by Open Source category, so please go to for a full description.
By Funnel Phase (see )
By reachability (see )
by fixability (see )
Clicking on the icon of a component with public vulnerabilities will open a slide with details.
Vulnerabilities also show information about Fixability. Please see for further details.
Please see for further details.
Clicking on the icon of a component with malware detected by Xygeni will open a slide with details.
Java
pom.xml
Java, Kotlin
build.gradle, build.gradle.kts, gradle.lockfile, gradle.properties
JavaScript
package.json, package-lock.json
JavaScript
yarn.lock
JavaScript
pnpm-lock.yaml
JavaScript
bower.json
.NET, C#
.nuspec, packages.config, .csproj, project.assets.json, packages.lock.json
Python
requirements.txt, pipfile.toml, pipfile.lock, setup.py, setup.cfg, environment.yml
Python
requirements.txt, pyproject.toml, poetry.lock
Golang (Go)
go.mod, go.sum
PHP
composer.json, composer.lock
Ruby
Gemfile, Gemfile.lock
In addition to SCA features (see ), Xygeni offers a Malware Early Warning (MEW) Service designed to raise alerts for suspicious packages. This service proactively protects your software supply chain and supports the implementation of security gates to block malware threats before they infiltrate your application.
See for further details
If you want to know if you are using some package tagged as malware, you can go to Open Source >> Components (to see all the components that you are using) and filter by Alert Type : Malware (see for further details)
Evidence distribution according to type (see packages)
Likelihood: depending on the , the malware evidences can be tagged as "potential" or high risk")
Clicking on the icon of a component with malware detected by Xygeni will open a slide with details.
To enable this functionality, please configure as explained at
In the issues table, by clicking on the icon of any issue, you will see the details of the issue.
Please see for further information on how to configure auto-remediation
SBOM properties: output file --sbom
and format --sbom-format
. See for an example.
, a lightweight Software Bill of Materials (SBOM) standard designed for use in application security contexts and supply chain component analysis..
, The Software Package Data Exchange open standard (ISO/IEC 5962:2021).
Xygeni’s Supply Chain Security protect your CI/CD pipelines by scanning configuration files, build scripts, and CI job definitions.
Supply Chain's CI/CD detectors identify deviations from security best practices and standards, providing immediate alerts on potential misconfigurations that could lead to unauthorized access or code or pipeline execution compromises.
With a robust set of rules based on the latest security advisories, Xygeni ensures every component of your pipeline adheres to the highest security protocols.
Detected issues may include improper settings in package managers, insecure build file or infrastructure configurations, or risky CI jobs or plugins, all of which are notified for rapid correction to maintain the integrity and safety of your software delivery processes.
Modern software pipelines integrate multiple tools ranging from SCM repositories and build tools to CI/CD systems and configuration management tools. Misconfigurations at these tools open the door to supply chain attacks.
Examples of misconfigurations are:
unprotected delivery code branches,
lack of code reviews,
poor access control practices like the lack of multi-factor authentication,
publicly accessible storage buckets in the cloud infrastructure,
flaws in CI pipelines, critical data not encrypted at rest,
weak password policies and non-rotated encryption keys,
... and many more
Contextualized remediation procedures are provided, so DevOps engineers can quickly fix the misconfiguration and learn how to avoid similar issues in the future.
Avoid data leakage and malicious code injection, hardening SCM repositories and CI/CD tool configurations.
The misconfigurations are detected across the tools in the cycle chain, from development items like code repositories, build tools, CI systems to operations at IaC templates, container images in registries, or cloud platforms.
Detects misconfigured resources in code and vulnerable images before deploying to your runtime environment.
Here’s an integration of the supported systems into the summary of key misconfiguration detectors for Xygeni:
Enforce appropriate permissions and secure configurations across CI/CD tools and workflows, specifically tailored for platforms like GitHub, GitLab, Azure DevOps, Bitbucket, CircleCI, and Jenkins.
Verify the integrity of build processes and prevent unauthorized code or pipeline changes, with specific checks for each platform to ensure compliance and security.
Monitor for unusual activities and ensure encrypted storage and handling of secrets across all supported CI/CD platforms.
Apply best practices in container configurations, such as avoiding running as root and ensuring secure file operations across various CI environments, including Jenkins and CircleCI.
Maintain secure connections by enforcing HTTPS for remote repository access and ensuring proper version control on platforms like GitHub, GitLab, and Azure DevOps.
Support compliance with key standards like CIS, NIST, and OpenSSF, ensuring security policies are adhered to across all integrated platforms.
Secure source code management practices, including enforcing MFA, signed commits, and code review protocols, particularly on platforms like GitHub, GitLab, and Bitbucket.
Detect and prevent insecure webhook configurations, unprotected branches, and insecure dependencies across all supported systems. • Monitor and validate security policies, ensuring continuous compliance and signed releases within the integrated ecosystem.
To accomplish these functionalities, Xygeni provides a Scanner and a Web UI to view the results.
The process of building and deploying modern software is complicated. The attack surface is wide: compilers, source code repositories and tools (build, package managers, artifact registries, testing, security scanners) can be affected to let code / configuration tampering pass undetected, or to implant malicious behavior.
Software artifacts are often opaque blobs that can’t easily be inspected for security. It is easier to reason about how they came to be (provenance), rather than what is in them. So what can be done to harden the build & deploy system? How can an organization attain tamper-proof builds?
Tamper-proof builds, where the focus is to prevent or detect tampering during the build is hard to achieve and needs a strong hardening of the build platform, which is not always possible. Having signed attestations generated by a hosted build platform is a previous stage, with focus on detecting tampering after the build. For software attestations the following is necessary:
(1) generating “attestations”, authenticated metadata about software artifacts produced by each build step, linked with the inputs (“materials”). Each step in the pipeline must conform with a pipeline layout, where an owner defines the steps and conditions to be fulfilled.
(2) storing the attestations in a kind of evidence repository or "ledger" that keeps evidence preserved.
(3) providing verification capabilities downstream so a client can verify the integrity of the artifact(s) from the ledger before installing / running the artifact(s).
Xygeni checks compliance of your software with Software Supply-Chain Security Standards and Guidelines.
Each standard is composed of a set of checkpoints that are checked against the software project under analysis.A checkpoint belongs to a category, and could be required or optional.The result tells us if the project complies with the standard, with a compliance level.
TBD
The scanner configuration file, conf/xygeni.scan-deps.xml
contains properties for:
Selecting the files to include / exclude. For example, in Node ecosystems, it is customary to exclude de node_modules directory to avoid invalid stale dependencies.
Configuration for SBOM and report output.
Configuration for each ecosystem analyzer.
Scan configuration properties like timeouts and mode = sequential or parallel. Parallel model use threads to run the scan in parallel across files and detectors.
Dependencies for each ecosystem are processed by a specific analyzer. The analyzer process dependencies descriptors to extract direct and indirect dependencies, resolve their versions, and gather context information like licensing, provenance and other metadata.
The Misconfigurations Scanner is configured in the YAML file conf/xygeni.suspectdeps.yml
The kind of detectors for this scanner report potential known attacks to software dependencies, like dependency confusion or typosquatting for the vulnerable ecosystems.
In addition, public components exhibiting certain traits like presence of certain installation scripts, anomalies in the commit patterns, the component’s project metadata, or the provenance of its maintainers could also hint on a potential malicious component. Private components with no scope / namespace are also reported as suspect.
External security advisories and security teams may also report known malware components.
The result is the full dependencies graph, which may contain components in different ecosystems, where each component is resolved in terms of name, group/owner/scope and version, along with metadata (license, provenance, tags and more) that could be useful for assessment of the security risk.
Each major ecosystem is handled by a specific analyzer. The following sections describe each analyzer, how it works, and which are the inputs analyzed.
This analyzer fetches the dependencies for maven projects. The analyzer executes mvn dependency:tree
and processes the result.
The analyzer checks if pom.xml files exist in the source code. In this case, the analyzer executes the command:
Xygeni allows to customize mvn
command to suite your specific needs.
One of these usual needs is to specify an alternate location of settings.xml
file (remember that by default mvn
will search for it at $HOME/.m2
).
If you need mvn
to use a settings.xml
located at a different location, you can define a env var named MVN_OPS
and assign additional parameters (in this case --settings
).
As an example, if you run the scanner as shown below, the dependency scanner will use the settings.xml specified by the env var.
Similarly , you can specify whatever other maven additional parameters you may need.
This analyzer fetches the dependencies for gradle projects. The analyzer executes gradlew -q dependencies
or gradle -q dependencies
if the gradlew
does not exist and processes the result.
The analyzer checks if build.gradle or build.gradle.kts files exist in the source code. In this case, the analyzer executes the command:
This analyzer fetches the dependencies for Node projects using npm or yarn package managers. The analyzer uses yarn.lock, npm-shrinkwrap.json, package-lock.json or package.json ("lock" and "manifest") files.
These files are processed in the following order: yarn.lock
> npm-shrinkwrap.json
> package-lock.json
> package.json
. Package lock files are recommended for repeatable builds, as they have all packages and versions resolved in the dependency tree.
When no lock file is found, package.json
is processed and the analyzer generates a yarn.lock
file in a temporary directory by executing the command
If yarn
command is not installed, the analyzer will try to install it in a temporary directory.
This analyzer fetches the dependencies for projects using bower package manager and bower.json manifests. The analyzer runs the command
This analyzer fetches the dependencies for dotnet projects. To obtain this information, the analyzer uses project.assets.json manifests.
To generate these manifests, you should execute dotnet restore
command. You can execute
The analyzed project will not have associated frameworks, but the rest of dependencies will have the associated framework. If a dependency is on two frameworks, it appears twice, once per framework. For example:
Extract dependencies for Go modules, from go.mod
files. The analyzer runs go mod graph
command.
This analyzer fetches the dependencies for python projects. The analyzer uses the setup.py
files to get information for the current analyzed projects and his dependencies.
The analyzer executes pipgrip
library to get the dependencies tree, if the environment has not installed this library the analyzer try to install pipgrip
in a temporal directory to execute the command and after the directory will be deleted. The commands executed is:
This analyzer fetches the dependencies for PHP projects. The analyzer uses the composer.json
files to get information for the current analyzed project and his dependencies.
The analyzer executes the commands:
This analyzer fetches the dependencies for Ruby gem projects. The analyzer uses Gemfile.lock
file to get information about the dependencies.
The ruby gem name for the current project is the directory name that contains Gemfile.lock
file.
If you have selected All projects or a subset of projects, you will see this general view.
You can see the compliance level of all the supported standards for the selected projects group. This charts will provide you with a high level view of the general coverage of checkpoints per standard.
Furthermore, you can see a list with all the projects together with it's respective compliance level for every standard.
Opening the Compliance page for a selected single project will display as below image.
This page will show statistics for every standard that the selected project has been assessed:
Overall view of passed/failed checkpoints
Checkpoints by result
A list of all the checkpoints together with its pass status
The Suspect Dependencies Scanner finds suspect dependencies (suspect deps
for short) that may be the target of supply-chain attacks.
The aim is to detect potential flaws in the dependencies, direct or indirect, in the software project and DevOps tools around, so supply-chain attacks can be prevented.
Once a certain third-party component is known as malware, removing it for all software could be excruciating. Also, tracing what malicious code could have done in the exposure window between the component installation and its detection, often require some soft of forensic analysis.
The detector documentation provides a Mitigation / Fix
section that describes the recommended actions. Some reference practices that help to reduce the risk against dependencies-targeted attacks, like version pinning, using white-listed components from internal package registries, enforcing scoped internal components, or blocking installation scripts in package managers.
For detecting misconfigurations found in software project with sources in current directory, the command:
uploads the result to Xygeni platform.
For exporting the most important suspect dependencies to CSV for review, or importing the findings into another tool:
The Suspects Deps Scanner is launched using the xygeni suspectdeps [options]
command.
For a full reference of all the available option, you can issue :
The most important properties are:
Name of the project, -n
or --name
.
Input, either a directory (-d|--dir
) or a repository (-repo|--repository
). If none given, the local current directory is assumed.
The JSON dependencies model generated from xygeni deps
command could be used as input to the suspectdeps
with the -r
| --report
option. If not provided, the dependencies model is extracted.
Upload results to the service, --upload
. By default, results are not uploaded.
Output file (-o
or --output
) and format (-f
or --format
). If not output file (or stdout / - are used), the standard output is used. Use --format=none
for no output.
The detectors to run could be tailored with the --detectors
/ --skip-detectors
options. A common use-case is to consider only issues with high or critical severity with --detectors=high
.
So, for example, setting --skip-detectors=steps_sbom,signed_commits
will disable the two detectors.
Another use case is to disable issues with info / low severity (--skip-detectors=low
) or equivalently enabling only high or critical issues (--detectors=high
).
See and
See and, more specifically, for instructions on how to execute an Open Source scan.
Xygeni provides the infrastructure for generating software attestations in the software pipelines and verifying them downstream when needed. See for further information.
See
Xygeni runs on software projects and DevOps tools for compliance assessment, under standards and guidelines like OpenSSF Scorecard or CIS Software Supply Chain Security or , among others.
See for more information.
Please read the documentation on .
See for the list of supported package mgrs.
Please read the documentation on .
The extract the software dependencies by analyzing the project descriptors that reference direct dependencies, and getting their dependencies transitively.
You have more information .
You have more information about this .
to get help. You have more information about the dotnet restore
command .
For further information about dependency management in the Go ecosystem, see .
The Compliance page provides a comprehensive view of all your project(s) compliance with .
Clicking on the icon a project will take you to the .
Clicking on icon of any checkpoint will open a slide with the details
The dependency graph (in fact, the result of the ) is analyzed to look for known issues with dependencies. The well-known typo-squatting, dependency confusion or dependencies with suspicious installation scripts are examples of suspect dependencies.
There could be certain detectors that should not be run for a certain project, or because the practice enforced by the detector does not fit with the organization policy. Disabling detectors could be done, in order of prevalence: - by disabling the intended detector(s), listing their IDs in the --skip-detectors
option. - at the level, - by deactivating the detector at the central configuration level (e.g. by setting enabled: false
in the detector YAML configuration).
Xygeni helps you to protect the integrity of your artifacts and build (CI/CD) processes. This is know as Build Security.
The Xygeni platform provides a component for an important part of Build Security: the creation, storage and verification of attestations on the software.
The following sections describe Xygeni SALT (Software Attestations Layer for Trust), the component for generating, registering and verifying software attestations.
Install the SALT command-line tool. The following commands work under Linux/macOS.
Now you can generate sample attestations for your software product: Go to a product repository directory (cd <YOUR_REPO_DIR>
), and run commands for creating an one-shot SLSA attestation (attestation slsa
):
The SLSA Provenance attestation is written in slsa.unsigned.json
file, and the signed envelope (signed with an ephemeral keypair, certified with an ephemeral certificate) is stored in the slsa.json
file.
Now verify the attestation:
A software attestation is an assertion made about a piece of software. A software attestation is an authenticated statement (metadata) about a software artifact or collection of software artifacts.
Software attestations are a generalization of raw artifact/code signing. The attestation is a signed document (in a given format, typically based on JSON) that associates metadata with an artifact. They represent evidence linking inputs (materials) and outputs (artifacts produced) at each build step.
Attestations provide a verifiable record of the steps done for building the final software artifacts, including input materials for each step and the build commands run.
SALT (acronym for Software Attestation Layer for Trust) is the feature in the Xygeni platform for build security. SALT is the infrastructure for creating and verifying software attestations, aiming at different use-cases.
Result upload: The results for the attestation generation are uploaded to Xygeni, so any error or integrity failure is reported and could be notified to DevOps engineers and security management teams.
The following image depicts the main components of SALT:
Salt provides a command-line interface (Salt CLI) with commands for creating the attestation document from the inputs, interacting with the attestations registry, and verifying an attestation with respect to the referenced software product.
salt CMD
, with CMD = attestation | keygen | registry | contract | verify
.
The main commands are:
salt keygen
: Generate key pairs for signing
salt attestation init|add|run|status|commit|reset
: Incremental attestation build
salt attestation provenance
: Provenance for pipeline, in a single shot
salt registry search | get | put
: Operations with Attestation Registry
salt verify
: Verify contract / attestation for SW artifact
salt contract create | from-build | upload | download
: Contract handling
Software attestations are typically created in the same pipeline that builds and/or deploys the software. One or more steps can run Salt CLI commands to either build the attestation either in one shot (salt attestation provenance
) or incrementally at different steps along the pipeline (salt attestation init|add|run|commit
).
Attestations in the IAF are serialized as JSON.
You may need to work with special features or build attestations and handle key materials in a non-standard way. The following are tips & tricks that you may find helpful:
The following are the key concepts in build security. Some are related to desired properties of the build system (like isolation, hermeticity or reproducibility) that help with the idea of tamper-proof builds. They often need a complete redesign of the existing build system.
Other ideas target on captured evidence during the build that could be verified later. This leads to the concept of software attestations.
A software attestation is an assertion made about a piece of software. A software attestation is an authenticated statement (metadata) about a software artifact or collection of software artifacts.
Software attestations are a generalization of raw artifact/code signing. The attestation is a signed document (in a given format, typically based on JSON) that associates metadata with an artifact. They represent evidence linking inputs (materials) and outputs (artifacts produced) at each build step.
Attestations provide a verifiable record of the steps done for building the final software artifacts, including input materials for each step and the build commands run.
Attestations are signed with a keypair for linking the predicate (a claim) to the subject (e.g. a reference to the artifact) so the receiver can verify with the public key that the attestation was not tampered with (integrity), and that the signer created (or approved) the claim about the subject (authentication of origin / non repudiation).
The signed attestation is stored in an attestations registry and can be retrieved when the attestations is needed for verifying the software at a later moment.
The verifying part ("verifier") computes a digest on the software (the "subject") and checks the integrity of the attestation, matching the digest for the subject in the attestation with the one computed by the verifier. Cryptographic integrity (validity of the signature, public key, time when the signing was performed) and further "semantic validation" based on the contents of the attestation and an acceptance policy are performed by the verifier to accept or reject the software.
Provenance is (verifiable) information, or metadata, about how, when and where a software artifact was created. This could include information about what source code, build system, and build steps were used, as well as who and why the build was initiated. Provenance can be used to determine the authenticity and trustworthiness of software artifacts that you use. Provenance is based on software attestations.
When given the same input source code and product configuration, a hermetic build system always returns the same output by isolating the build from changes to the host system.
For build isolation, hermetic builds are insensitive to libraries and other software installed on host machines. They depend on specific versions of the build tools (compilers, linting and security tools) and dependencies (libraries, open-source & third-party packages, etc.). This makes the build process self-contained as it does not rely on services external to the build environment.
Hermeticity has two aspects:
Isolation - Hermetic build systems treat tools as source code. They download copies of tools and manage their storage and use inside managed file trees. This creates isolation between the host machine and local user, including installed versions of languages.
Source identity - Hermetic build systems try to ensure the sameness of inputs. Code repositories identify sets of code mutations with a unique identifier like a SHA code, which refers to an (immutable) source code snapshot. Hermetic build systems use this hash to identify changes to the build’s input.
In other words, the build process and resulting artifacts are unaffected by external influence. To execute a hermetic build, every build step, input (e.g. source code) and dependencies (build tools or external software packages) must be declared using a reference which identifies a unique, immutable artifact. This information must be provided as part of the build definition, and the build process should not accept unverifiable references or weak references which may lead to indeterministic resolution. Each referenced resource must be verified and retrieved from a secure, trusted location. The rest of the build process is executed without network access, ensuring that no external influence can be applied to the build process and resulting artifacts.
One step further from isolated and hermetic builds. A build process is reproducible if, given the same build definition consisting of immutable and verifiable references to build steps, source code, and dependencies the build process produces an identical result.
Reproducible builds are achieved by first creating isolated and hermetic builds. Reproducible builds have many advantages beyond security including more accurate dependency tracking, build caching, and debugging.
Reproducible builds are difficult to attain in the real world, as a single, minimal non-determinism in the build process can break reproducibility (I do love this word!).
To protect against certain attacks, appropriate evidence is captured and signed by the actor at each step in the pipeline.There are different integrity types: layout integrity (the pipeline is executed as specified, with no steps added, removed or reordered), artifact flow integrity (no artifacts are altered in-between steps) and step authentication (only authorized parties can actually perform the steps).Often the signature framework is based on public key cryptography, where intended actors (project owners, functionaries) are identified by their public keys.
Cryptographic keys are essential to software supply chain security, but managing them can be complex and time-consuming.This is especially true for long-lived cryptographic keys.Proper key handling is hard and may lead to key compromises with are difficult to recover from.
An alternative approach is to use short-lived, ephemeral keys that are generated on-the-fly for each signature operation, making them more difficult for an attacker to compromise.However, verifying keyless signatures is more complex than traditional signatures, as the corresponding certificate used to validate the signature may no longer be valid when the signature needs to be verified.
Fortunately, the verification is largely transparent when the software consumer uses the attestation verify
command.
The CI/CD Misconfigurations Scanner is configured in the YAML file conf/xygeni.misconfigurations.yml
.
Detectors are configured with different YAML files located under the conf/misconfigurations
directory of the xygeni scanner. There is a sample _template.yml_
file that could be used for creating your own detectors.
: All the CI/CD security issues at a glance.
: All your project(s) integrity build processes
: Your project(s) compliance with compliance standards.
where PATH_TO_DIR
stands for the directory where the SALT tool will be uncompressed (proceed to for detailed instructions or on a different operating system).
For more information about what software attestations are, what are they used for, the structure of a software attestations and which standards are in place, please refer to section.
A command-line interface (salt
command) is provided for generating attestations in CI/CD pipelines, or for verification of the integrity of the attestations with regard to the software artifacts the attestation refers to. Additional integrations, like plugins, are provided for the most popular CI/CD systems. See for further details.
Xygeni provides an attestation registry based on the combination of the as storage and as transparency log. The public server for the Xygeni-provided attestation registry is at .
For further information, see .
The Salt model contains most of the in-toto specification types for software attestations, as shown in the .
For further information, see .
See for further details.
SALT follows the . The IAF provides a specification for generating verifiable claims about any aspect of how a piece of software is produced. Consumers or users of software can then validate the origins of the software, and establish trust in its supply chain, using in-toto attestations.
See the for details about the general format of signed attestations and their components. For further details on the predicate types, read .
The most popular attestation framework is in-toto, where attestations are signed statements with a subject (an artifact) and a predicate (a fact about the subject). Predicates may follow different standard types, see .
SLSA defines a . A SLSA provenance is an attestation that a particular build platform produced a set of software artifacts through execution of a build definition:
A keyless signature is a digital signature that allows for the secure authentication of a digital message without the need to manage long-lived private keys. The signer generates a key pair on-the-fly and sends the public key to a CA along with a identity token that allows the CA to link the public key with the signer’s identity.Salt uses OIDC-based identity token with the Sigstore , that issues short-lived certificates.These certificates include a subject identity, such as an email address, extracted from the OIDC token, and special Sigstore-specific ASN.1 object identifiers.One of these objects is a signed certificate timestamp (SCT), which serves as proof of the time at which the certificate was issued.
Fulcio publishes all issued certificates to a certificate transparency log (CT) for verifiers to check if their identity has been compromised or mis-issued.However, clients verifying the attestation only check the validity of the SCT, which is embedded in the certificate.The client verifies that the SCT is valid, then it gets the inclusion time for the record created in a public transparency log () corresponding to the artifact it signs, and uses it to verify the signature happened within the validity period of the certificate.
Please read the documentation on .
There are techniques that help to keep the integrity and authentication of each element in a modern software pipeline. At the Source Control Management system, signing commits / tags is a well-known technique.
Regarding the build / deploy pipelines, the build infrastructure should have the same level of security configuration as its generated artifacts' target runtime environment. Jobs (or steps) are the atomic build tasks that run in a single worker/runner (often a provisioned container or VM, but there are other options: serverless, sandboxes, secure enclaves…). To keep the integrity of the build process:
each step should have clearly defined inputs -materials- and outputs -artifacts-,
step logic should be immutable, typically by pinning versions in build tools including plugins, extensions and reusable tasks,
generation of attestations should be done, for out-of-band verification of the build process. This last practice is the goal of SALT.
SALT (acronym for Software Attestation Layer for Trust) is the feature in the Xygeni platform for build security. SALT is the infrastructure for creating and verifying software attestations, aiming at different use-cases.
Result upload: The results for the attestation generation are uploaded to Xygeni, so any error or integrity failure is reported and could be notified to DevOps engineers and security management teams.
Attestations in the IAF are serialized as JSON.
The core of the IAF is the specification for in-toto attestation layers:
In short,
Envelope
is a signed attestation, conveying a Statement
as payload (encoded in base64) and a Signature
.
Envelopes typically have one signature but may have multiple.
A media type of application/vnd.in-toto.<predicate>+dss
is assigned for envelopes.
A Statement
binds a Subject
and a Predicate
, with a predicateType field that unambiguously identifies the type of the predicate via a type URI.
Predicate
is the innermost layer of the attestation, containing arbitrary data about the Statement’s Subject.
The following attestation predicates are supported:
https://slsa.dev/provenance/v1
An attestation that a particular build platform produced a set of software artifacts through execution of the buildDefinition, aligned with modern real-time platforms.
https://slsa.dev/provenance/v0.2
Older provenance format.
https://slsa.dev/provenance/v0.1
The initial provenance format.
https://in-toto.io/attestation/link/v0.3
Every link attestation corresponds to the execution of one step in the software supply chain. The subject field in Statement corresponds to the products of the operation, while materials field in LinkPredicate indicates the inputs to the step.
https://cyclonedx.org/bom
https://spdx.dev/Document
https://in-toto.io/attestation/scai/attribute-report/v0.2
Capturing functional attribute and integrity information about software artifacts and their supply chain. SCAI data can be associated with executable binaries, linked libraries, software packages, container images,software toolchains, and compute environments.
https://in-toto.io/attestation/vulns/v0.1
Holds a vulnerabilities report from security tools, with info about the scanner used, how it was invoked, the vulnerabilities found with their severity scores, the vulnerability databases used, and when the scan was performed.
https://slsa.dev/verification_summary/v1
Verification summary attestations communicate that an artifact has been verified at a specific SLSA level and details about that verification.
https://in-toto.io/attestation/test-result/v0.1
Express the result of running tests in software supply chains.
https://in-toto.io/attestation/runtime-trace/v0.1
Describe system events that were part of some software supply chain step, for example, the build process of an artifact.
In addition, Xygeni adds the following predicates:
Collection
xygeni.io/attestations/collection-predicates/v1
A collection of predicates, allowing composition of multiple predicates for software subjects in a single in-toto Statement.
Command Run
xygeni.io/attestations/command-run/v1
Models a command execution captured with salt attestation run
. Results from the command execution are captured, possibly linking the input and output of command.
Environment
xygeni.io/attestations/environment/v1
Models the system environment where the build/deploy is running. Computed by the environment
attestor in the salt attestation init
command.
Git
xygeni.io/attestations/git/v1
Information about git repository. Includes the last commit (sha1 hash, author and committer, message, commit signature if any), its parents, the git treeHash, and git refs pointing at it
Materials
xygeni.io/attestations/materials/v1
Information about materials (input resources) that were registered as relevant for the pipeline. Created at attestation commit
for materials added in the add / commit
commands.
Products
xygeni.io/attestations/products/v1
Contains a set of products (typically, by-products) that were generated at a certain step in a pipeline.
The Salt CLI is distributed as a zipfile that runs under Linux, macOS and Windows. The installation process downloads the zipfile, unzips the downloaded file, and adds a shortcut for running salt in the target platform.
In brief: Assuming that you want to place the Salt CLI in a given <TARGET_DIR>
directory:
For macOS/Linux (bash):
For Windows (PowerShell):
The following sections describe in more detail each step.
Run the one of the following which better matches your preferences:
For mac/Linux (bash):
On Windows (PowerShell):
To ensure that the downloaded installation script checksum matches the checksum published in Xygeni repository, meaning that probably it was not tampered with:
On mac/Linux (bash):
If under macOS, as sha256sum
is probably not installed in your host, you may:
(2) or use shasum -a 256
instead or sha256sum
if the shasum
command is installed,
On Windows (PowerShell):
TARGET_DIR
is the path where the zipfile contents will be extracted. Replace it with your
For mac/Linux (bash):
On Windows (PowerShell):
In what follows, the location of the Salt CLI is TARGET_DIR/xygeni_salt
The Salt CLI command is either a bash salt
or PowerShell salt.ps1
script under TARGET_DIR/xygeni_salt
. It is convenient to use an alias for running the command without providing its full path. You may add TARGET_DIR/xygeni_salt
to the PATH, or alternatively add an alias or shell function:
For mac/Linux (bash):
On Windows (PowerShell):
The salt CLI is now available for running using salt
alias. Run salt --help
to show the help for the different commands available.
Once installed, you can can execute salt.
Please note that you need to provide a Xygeni Token to salt to make it work.
A CI/CD misconfiguration in any element of the software pipeline, like a package manager, a build file, or a CI job, might open the door to attacks targeted at the organization’s DevOps chain.
The CI/CD misconfigurations Scanner is a tool that checks the configuration of the software project under analysis, and reports any misconfiguration currently active for the policy assigned to the project. Detected misconfigurations could be uploaded to Xygeni platform for consolidation and for enabling response actions.
Fixing a misconfiguration issue often require changes not only in a tool configuration, but also in the activities of the software development process. The detector documentation provides a Mitigation / Fix
section that describes the recommended actions.
For detecting CI/CD misconfigurations found in software project with sources in current directory, the command:
uploads the result to Xygeni platform.
For exporting the most important misconfigurations to CSV for review, or importing the findings into another tool:
The CI/CD Misconfigurations Scanner is launched using the xygeni misconf [options]
command.
For a full reference of all the available option, you can issue :
The most important properties are:
Name of the project, -n
or --name
.
Input, either a directory (-d|--dir
) or a repository (-repo|--repository
). If none given, the local current directory is assumed.
Upload results to the service, --upload
. By default, results are not uploaded.
Output file (-o
or --output
) and format (-f
or --format
). If not output file (or stdout / - are used), the standard output is used. Use --format=none
for no output.
The detectors to run could be tailored with the --detectors
/ --skip-detectors
options. A common use-case is to consider only issues with high or critical severity with --detectors=high
.
CI/CD scanner performs checks against your SCM and CI/ CD systems recover information about your repository and organization, as part of the scanning process to validate if there are misconfigurations affecting them.
For that, it is important to provide tokens with the permissions allowing the scanner to collect the data needed for analyses. If tokens are not provided, the scanner will not be able to assess your repository/organization.
Run a compliance assessment on the project in current directory, using Xygeni Scanner:
which produces an output similar to this:
You may now log in the Xygeni Dashboard and view the Compliance Assessment results.
Compliance Assessment checks compliance with Software Supply-Chain Security standards and guidelines.
A standard
is a list of checkpoints
, arranged in categories. A software project is compliant with a standard ("passes") only when all the standard’s required checkpoints passed.
The assessment report gives a status (PASS, PARTIAL, FAIL) and a compliance level between 0 (not compliant at all) and 10 (fully compliant).
Remember that for a standard to pass, all its required checkpoints must pass.
A non-compliant checkpoint could be verified following its documented Verification
section, and made compliant by following the recommended actions in the Remediation
section.
A Compliance Assessment scan is launched using the compliance
command of the xygeni
executable.
With --help
the usage is displayed:
$XYGENI_HOME
denotes here the path where the Xygeni scanner is installed.
The Compliance Assessment Scanner is configured in the YAML file $XYGENI_HOME/conf/xygeni.compliance.yml
:
Standards are configured with different YAML files located under the $XYGENI_HOME/conf/compliance/standards
directory of the xygeni scanner. Each standard provides some information and the list of checkpoints that are to be checked for compliance assessment.
Checkpoints are configured with different YAML files located under the $XYGENI_HOME/conf/compliance/checkpoints
directory of the xygeni scanner.
This section presents common use-cases for evaluating compliance against a given supply-chain security standard across the software lifecycle.
A common use case is to disable issues with info / low severity (--skip-checkpoints=low
) or equivalently enabling only high or critical issues (--checkpoints=high
).
a) Direct registering script as a git hook
To run Xygeni scanner at client-side, before a commit is applied, you may add a simple pre-commit
executable script like this (example for Linux and macOS):
The --fail-on
option is configured to make the build fail when at least one issue with critical or high severity is found (so the scanner acts as a security gate
).
For running the scan as an optional pipeline check, use --fail-on=never
instead.
This example is a similar security gatekeeper, but commits are allowed only when no scan of the given types has a critical issue (only the scanner execution is shown, for brevity):
When a critical issue is detected in any of the scans for secrets, misconfigurations or IaC flaws, the commit will be aborted.
Use compliance
command to limit the scope of the scan to compliance assessment.
b) Using pre-commit framework
There are some popular frameworks for improving the hook mechanism provided by Git, mainly aimed at sharing the scripts and simplifying the configuration when multiple actions need to be added for a git event.
Then add the following entry to you .pre-commit-config.yaml
:
Or, for running the scanner Docker image:
Then install the git hook scripts using
Xygeni scanner will run before each commit. The configuration given above works for setting Xygeni as a security gate to avoid commits having critical security issues. To avoid break the builds, --fail-on=never
could be used instead.
Use compliance
command to limit the scope of the scan to compliance assessment.
You may use compliance results to block a commit.
The fail_on
is configured to make the build fail when at least one critical checkpoint do not pass. For having the compliance check as optional, use fail_on: never
instead.
Where ID_CHECKPOINT_1
, ID_CHECKPOINT_2
… are the checkpoint identifier. The configuration for each checkpoint is loaded from <custom-standards-dir>/<ID_CHECKPOINT>.yml
file, if available, or from a resource loaded from compliance/checkpoints/<ID_CHECKPOINT>.yml
path.
Command-line example:
CIS Benchmarks are best practices for the secure configuration of a target system. In this case, the target system is the software supply chain.
The Software Component Verification Standard (SCVS) is a community-driven effort to establish a framework for identifying activities, controls, and best practices, which can help in identifying and reducing risk in a software supply chain.
The best practices criteria are divided into three levels, for an incremental adoption:
Passing focuses on best practices that well-run FLOSS projects typically already follow. Getting the passing badge is an achievement; at any one time only about 10% of projects pursuing a badge achieve the passing level.
Silver is a more stringent set of criteria than passing but is expected to be achievable by small and single-organization projects.
Gold is even more stringent than silver and includes criteria that are not achievable by small or single-organization projects.
The set of recommend principles are framed in 5 top-level sections:
Secure product criteria and management
Develop Secure Code
Verify Third-Party Components
Harden the Build Environment
Deliver Code
By following these guidelines, software developers can reduce the risk of supply chain attacks and ensure the security and integrity of their software.
This service begins with continuously scanning public registries to detect suspicious packages as soon as they are published. Once a potential threat is identified, it is automatically quarantined, preventing it from entering your development environment or the broader software supply chain.
The quarantined package is then reviewed by Xygeni's security engineers to verify the threat. If the threat is confirmed, it is communicated to the public registry for further validation and public disclosure. This multi-layered verification process ensures that only verified threats are acted upon, minimizing false positives and ensuring accurate threat detection.
The Malware Early Warning service also includes immediate notifications to affected users. These notifications are sent through various channels such as email, messaging platforms, and webhooks, ensuring the customers are promptly informed of any threats. This rapid response capability allows you to mitigate risks immediately and protect your software projects from potential harm.
In addition to notification and quarantine, the Early Warning service provides a detailed process for handling detected threats. This includes confirming the threat with the public registry, safely disposing of the malicious package, and publicly disclosing the threat to inform the wider community.
Malware Early Warning provides robust mechanisms to protect the software development lifecycle from integrating malicious code into the application.
In this scenario, the build pipeline continues successfully with the safe component version. However, if a new malicious version of the component is released, Malware Early Warning kicks into action.
A continuous scan of public registries detects new packages and updates of existing ones. Xygeni detects the new version of the component, analyzes it, and detects suspicious code, so it notifies the customer immediately about the detected malware evidence and advances in the process. Furthermore, it marks the component version as malware and puts it in quarantine to protect the SDLC infrastructure and build and delivery processes.
Additionally, this technology can be integrated with private registries to implement a blacklisting mechanism that blocks even the availability of the malicious components in the organization.
Continuous monitoring, real-time threat detection, and immediate blocking mechanisms collectively ensure the integrity and security of the software supply chain, protecting the organization's software applications and the security of the final users.
A command-line interface (salt
command) is provided for generating attestations in CI/CD pipelines, or for verification of the integrity of the attestations with regard to the software artifacts the attestation refers to. Additional integrations, like plugins, are provided for the most popular CI/CD systems. See for further details.
Xygeni provides an attestation registry based on the combination of the as storage and as transparency log. The public server for the Xygeni-provided attestation registry is at .
SALT follows the . The IAF provides a specification for generating verifiable claims about any aspect of how a piece of software is produced. Consumers or users of software can then validate the origins of the software, and establish trust in its supply chain, using in-toto attestations.
: Handles authentication and serialization.
: Binds the attestation to a particular subject and unambiguously identifies the types of the predicate.
: Contains arbitrary metadata about a subject artifact, with a type-specific schema.
: Defines a method of grouping multiple attestations together.
Subject
is the set of software artifacts that the attestation applies to. Each software artifact is represented by .
The framework specifies the format and semantics for some .
Software Bill of Materials type following the .
Software Bill of Materials type following the .
Xygeni publishes a SHA-256 checksum of published components in the , so you may verify the integrity of a downloaded artifact.
(1) to install it,
Please see and for further information.
Please see for further information.
See for more details.
You might use the tool for editing standards to be enforced at the organization.
There could be certain checkpoints that should not be run for a certain project, or because the practice enforced by the checkpoint does not fit with the organization policy. The list of checkpoints that should be active for a standard to enforce, according to the organization policy, could be set in the in Xygeni Administration.
Disabling checkpoints could be done, in order of prevalence: - by disabling the intended checkpoint(s), listing their IDs in the --skip-checkpoints
option. - with the runCheckpoints
/ skipCheckpoints
properties in the scanner YAML. - at the level, - by deactivating the checkpoint at the central configuration level (e.g. by setting enabled: false
in the checkpoint YAML configuration).
One of the most popular frameworks is . The list of actions required are listed in a YAML file, and `pre-commit
manages the installation and execution of scripts written in any language.
Follow the instructions given in for installing the framework. Essentially you need python
and pip
, and run pip install pre-commit
in the node where the git commit
will be intercepted.
Under GitHub, you may use , running the compliance command only, and with fail_on
argument configured to fail the build only when important checkpoints do not pass:
A new standard may be created from by simply listing the new standard’s checkpoints in `$XYGENI_HOME/conf/compliance/standards/<my_new_standard>.yml:
The easiest way to define your own standard is using the . This allows to mix-and-match checkpoints from different standards into a new one, possibly changing checkpoint severities and its _optional flag.
An alternative option is to create your standard’s my_standard.yml
file, located in a specific $XYGENI_HOME/conf/compliance/custom_standards
directory, testing it, and then upload the configuration using the .
The provides prescriptive guidance for establishing a secure configuration posture for Software Development Platforms and Pipelines.
Visit for further details on checkpoints evaluated by Xygeni.
Visit for further details on checkpoints evaluated by Xygeni.
The is a set of recommendations from the Open Source Security Foundation (OpenSSF) to help open source developers create and maintain more secure software.
Visit for further details on checkpoints evaluated by Xygeni.
is an automated tool that assesses a number of important heuristics ("checks") associated with software security and assigns each check a score of 0-10. You can use these scores to understand specific areas to improve in order to strengthen the security posture of your project. You can also assess the risks that dependencies introduce, and make informed decisions about accepting these risks, evaluating alternative solutions, or working with the maintainers to make improvements.
Visit for further details on checkpoints evaluated by Xygeni.
The is a set of guidelines aimed at improving the security of software development by reducing the risk of supply chain attacks.
Visit for further details on checkpoints evaluated by Xygeni.
The process begins when a developer introduces a new dependency into the project. The risk appears if there is no version pinning to ensure that an exact dependency version is specified and used in the build process. If the version is unpinned, Xygeni will raise risk (see ) , indicating that any component update will be integrated immediately into the application, which might introduce vulnerabilities or malware.
The security checks (see ) in the CI/CD pipelines detect the component as malicious. They can implement mechanisms to block the build process to ensure only secure dependencies are used. This preemptive action stops the deployment of compromised dependencies, avoiding not only infections but also rework to remove and correct this critical issue.
The Risks (CI/CD) page provides a comprehensive view of all your project(s) CI/CD risks.
Secrets' Statistics view shows:
Charts for # of issues by severity, by type and by type & severity
A table with the issues (as well as a filter for the table)
You can use filters to select specific issues:
By severity
By issue type
By project (pattern)
By issue status (open, confirmed, muted, etc)
By tag
etc.
Secrets' Prioritization funnel view shows default CI/CD funnel.
By Funnel Phase (see )
In the issues table, by clicking on the icon of any issue, you will see the details of the issue.
See for further details