GUAC Blog

GUAC Update: October 2024

Welcome to the GUAC Update, a monthly review of what has happened in the GUAC community and what’s coming up. If you have feedback, please let us know. To include something in next month’s update, leave a comment in the issue.

New contributors

Thanks to the following people for making their first contributions in October (the people listed here may have contributed to other parts of the project previously):

Releases

We had several releases for GUAC in October. These releases include performance improvements in certifiers, as well as the addition of batch queries for certain nodes. Version 0.8.9 introduced a compatibility-breaking change to the CLI as well.

Full details for each release are below:

Note: We do not typically publish blog posts for bugfix releases.

Events

If you couldn’t make it to SOSS Fusion in Atlanta, you can watch the recordings:

And be sure to check out these upcoming events:

Coming up

Be sure to join us in the weekly Maintainer Meetings, monthly Community Meeting, or on Slack and office hours, to participate in the conversation.

Tags: guac-update | community | events | releases


GUAC v0.11.0 released

GUAC v0.11.0 is now available, with improved query capabilities. You can now perform batch searches for isDependency, CertifyVuln, and CertifyLegal nodes via a package ID. The following batch searches are now supported in GraphQL:

  • BatchQueryPkgIDCertifyLegalCertifyLegal nodes (licenses)
  • BatchQueryPkgIDCertifyVulnCertifyVuln nodes (known vulnerabilities)
  • BatchQuerySubjectPkgDependencyIsDependency nodes that have the subject package ID
  • BatchQueryDepPkgDependencyIsDependency nodes that have the dependency package ID

This new functionality enables easier reporting of common questions. See the v0.11.0 release page for full details of this release.

Tags: releases


Finding software licenses with GUAC

Licenses are the foundation of open source software. They grant the permissions that we rely on to use, inspect, and modify code. But software licenses can also place obligations on you. This is why it’s important to know what licenses exist in your dependency graph.

GUAC records the license information provided in your software bills of materials (SBOMs) into a CertifyLegal node. That information isn’t always complete, though, so GUAC augments with information from deps.dev and ClearlyDefined. This gives you a lot of information to work with. For example: you can find packages where ClearlyDefined’s scan yields a different set of licenses than what the project reports.

To start, you can use a GraphQL query to return all packages and source locations with a CertifyLegal node:

{
  CertifyLegal(certifyLegalSpec: {}) {
    discoveredLicense
    declaredLicense
    subject {
      ... on Package {
        namespaces {
          namespace names{
            name
          }
        }
      }
      ... on Source {
        namespaces {
          namespace names{
            name
          }
        }
      }
    }
  }
}

But what do you do with the output? I wrote a short Python script that gets data from your GUAC server with the query above. It then looks for packages and sources where the declared and discovered license strings don’t match. Because this can be a long list (the demo data returns hundreds of results), you can also write the output to a CSV file.

This script is a simple demo. It does not account for trivial differences. It also doesn’t try to make sense of the practical impact of license combinations. You can see, though, how you can quickly write your own script to find out the answer to your own questions.

The power of GUAC is the way it enriches your SBOMs. It collects additional information to make searches like this possible. If you do something interesting with this, we’d love to hear about it. Let us know in Slack or at an upcoming community meeting. The community page has all the details.

Tags: guac-does-that


October 2024 Community Meeting

Join the GUAC community Thursday at 1PM Eastern (1700 UTC) for the October Community Meeting.

Topics include:

  • Maintainer decisions about supported GUAC backends
  • A look at the stats of our demo pages and how we might change them

If you have your own topics to discuss or cool GUAC insights, join us and share with the community!

Zoom link and meeting notes are on the OpenSSF Calendar.

If you can’t make it, the recording will be posted to our YouTube channel.

Tags: community | meetings


GUAC v0.10.0 released

GUAC v0.10.0 is now available. Version 0.10.0 contains several fixes, one of which makes a minor change to GraphQL queries. Previously, a certifier query could hit PostreSQL’s limit of 65535 parameters. Now the queryPackagesListForScan query is split into two: a listing of non-GUAC-type package IDs that require rescanning and a second query that gives the certifier a list of packages to scan.

This release also contains a fix from Robbie Cronin for query failures in the key-value backend when a CertifyLegal node is empty.

See the v0.10.0 release page for full details.

Tags: releases


GUAC v0.9.0 released

GUAC v0.9.0 is now available. This release includes a compatibility-breaking change in the CLI introduced in v0.8.9.

Version 0.9.0 improves performance of certifiers by not re-querying recently-updated packages. The new last-scan option takes a numeric value in hours and will exclude packages that were updated within that time frame. The last-scan defaults to 4. Using a value of 0 will force the certifier to re-query all packages.

Version 0.8.9 introduced a compatibility-breaking change to the vulnerability query command line. Commands now take the form guacone query vuln <type> <input> where type is one of “artifact”, “purl”, or “uri” and input is a corresponding string. This enable support for searching for vulnerabilities via artifact.

In addition, the new releases include several smaller bug fixes. See the v0.8.9 and v0.9.0 release pages for full details.

Tags: releases


GUAC Update: September 2024

Welcome to the inaugural GUAC Update, a monthly review of what has happened in the GUAC community and what’s coming up. If you have feedback, please let us know. To include something in next month’s update, leave a comment in the issue.

New contributors

Thanks to the following people for making their first contributions in September (the people listed here may have contributed to other parts of the project previously):

Releases

We had several releases for GUAC and GUAC Visualizer in September. Enhancements and bug fixes abound. For GUAC, these releases include network retries for certifiers, improvements to SBOM parsing, and adding the ClearlyDefined certifier to the compose files. The GUAC Visualizer release adds a new information window that includes quick facts on vulnerabilities, SBOMs, and SLSA.

Full details for each release are below:

Note: We will not typically publish blog posts in the future for bugfix releases.

Events

Tell your friends: GUAC is participating in Hacktoberfest this year. If you’re looking for other projects to participate in, GUAC can help

In case you missed it, check out the episode of Cloud Native Live where Soham Arora, Parth Patel, and Ben Cotton presented several GUAC use cases beyond security.

And be sure to check out these upcoming events:

Coming up

Be sure to join us in the weekly Maintainer Meetings, monthly Community Meeting, or on Slack and office hours, to participate in the conversation.

Tags: guac-update | community | events | releases


Finding Hacktoberfest projects with GUAC

It’s almost October, which means Hacktoberfest is just around the corner. The best way to ensure your supply chain is secure and well-maintained is to contribute upstream. Hacktoberfest can be a forcing function to start your upstream contributions. But how do you figure out which Hacktoberfest participants in your dependency graph? Use GUAC!

GUAC uses information from your software bills of materials (SBOMs) and the deps.dev service to build a graph of your software dependencies. Included in this information is the HasSourceAt node, which gives the location of the package’s source code. This is often a GitHub or GitLab repository. Conveniently, both of these sites are official sites for Hacktoberfest. Projects hosted on either of those platforms can opt in by adding the “hacktoberfest” topic. Both GitHub and GitLab offer an API for searching for projects. So all of the information you need exists, you just have to tie it together.

The GraphQL query to return all packages with a HasSourceAt node is straightforward:

{
  HasSourceAt(hasSourceAtSpec: {}) { 
      source{
        type namespaces{
          namespace names{
            name } 
        }
      }
  }
}

But what do you do with the output? I wrote a short Python script that gets data from your GUAC server with the query above. It then pulls a list of Hacktoberfest projects from GitHub and GitLab. Finally, it prints any of your dependencies that appear in the Hacktoberfest list. In just a minute or two, you can have a list of projects to go work on.

The output for the demo data includes seven projects as of this writing:

Here are the Hacktoberfest projects in your GUAC data:
github.com/grpc/grpc-go
github.com/schollz/progressbar
github.com/gopherjs/gopherjs
github.com/google/go-github
github.com/containerd/containerd
github.com/grpc/grpc-go
github.com/containerd/containerd

Of course, you’re not limited to what’s in this example script. You could modify it to rank based on OpenSSF Scorecard scores, the number of times a dependency appears in the graph, or other factors you can think of. The power of GUAC is the way it enriches your SBOMs. It collects additional information to make searches like this possible. If you do something interesting with this, we’d love to hear about it. Let us know in Slack or at an upcoming community meeting. The community page has all the details. If you want to contribute to GUAC as part of Hacktoberfest, we’re participating.

Tags: guac-does-that


GUAC v0.8.7 released

GUAC v0.8.7 is now available. This release includes a fix for a bug that could lead to a panic when querying for vulnerabilities using an SBOM URI. It also adds logging for the beginning and end of certifier runs. The GitHub release page includes a full list of changes.

Tags: releases


GUAC in Hacktoberfest 2024

This year marks the 11th edition of Hacktoberfest, the annual event to celebrate and promote contribution to open source projects. The GUAC project is participating with two of our repos: the GUAC Docs and GUAC Visualizer. You can find specifics about what we’re looking for below, but all contributions are welcome.

To participate, register on the Hacktoberfest website. If you have four pull requests merged to any participating repository in October, you get a digital badge from Hacktoberfest. If you have any pull request merged to a GUAC repo, Kusari will send you some GUAC swag!

See the contributing page on the website and the README files in each repo for information on how to contribute to GUAC. If you have any questions, join us on Slack or in the GUAC Time office hours.

GUAC Docs

The guac-docs repo contains the source for the documentation and demos at docs.guac.sh. We have good demos that show the basics of how GUAC works, but we need more reference material and explanations of how GUAC works. The repo has a good set of issues with suggestions, but we’d welcome any other improvements you can think of. Even if you can’t contribute the documentation, opening an issue in this repo for anything you find confusing or missing would be a big help, too.

GUAC Visualizer

The experimental GUAC Visualizer is a way to visually display and explore the supply chain. This repo isn’t a core focus of the project, but it’s an important part of demos and the onboarding experience. We’d love to have your help improving this tool. GUAC Visualizer is a Next.js application. There are some open issues to work on, or you can bring your own ideas.

Tags: community | events