Skip to content

observer: ccadb: check reported CRL shards for completeness#8890

Open
inahga wants to merge 2 commits into
mainfrom
inahga/boulder-observer-ccadb
Open

observer: ccadb: check reported CRL shards for completeness#8890
inahga wants to merge 2 commits into
mainfrom
inahga/boulder-observer-ccadb

Conversation

@inahga

@inahga inahga commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Closes #8876

@inahga
inahga marked this pull request as ready for review July 20, 2026 23:27
@inahga
inahga requested a review from a team as a code owner July 20, 2026 23:27
@inahga
inahga requested a review from beautifulentropy July 20, 2026 23:27

@jsha jsha left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. It's a bit funny that httpGetExpectingStatusCode will retry until timeout when it gets a 200, but given that's not the expected case, seems fine.

Comment on lines +21 to 26
"github.com/letsencrypt/boulder/observer/probers"
"github.com/letsencrypt/boulder/strictyaml"
"github.com/prometheus/client_golang/prometheus"

"github.com/letsencrypt/boulder/crl/checker"
"github.com/letsencrypt/boulder/crl/idp"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Order third-party packages in a separate cluster, above other boulder packages.

Suggested change
"github.com/letsencrypt/boulder/observer/probers"
"github.com/letsencrypt/boulder/strictyaml"
"github.com/prometheus/client_golang/prometheus"
"github.com/letsencrypt/boulder/crl/checker"
"github.com/letsencrypt/boulder/crl/idp"
"github.com/prometheus/client_golang/prometheus"
"github.com/letsencrypt/boulder/crl/checker"
"github.com/letsencrypt/boulder/crl/idp"
"github.com/letsencrypt/boulder/observer/probers"
"github.com/letsencrypt/boulder/strictyaml"

@inahga inahga Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will do, but is this automatable? Is there a configuration of goimports or golangci-lint I may be missing?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In vscode, it's

    "gopls": {
        "formatting.local": "github.com/letsencrypt/",
    },

I'm not sure what that translates to in other individual tools.

Comment on lines -32 to -33
// Because this prober fetches URLs controlled by external input (CCADB), we
// check this regexp to avoid arbitrary content fetching (SSRF).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally, I'd keep this comment rather than deleting it entirely. Or I'd move it down to line 83 and say something like "While the primary purpose of the regexp is to parse out the CRL Number, we specify our own c.lencr.org hostname to ensure that CCADB doesn't cause us to fetch arbitrary external data (SSRF)."


if !c.crlRegexp.MatchString(url) {
matches := c.crlRegexp.FindAllStringSubmatch(url, 2)
if matches == nil {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we (or anyone else running this code) currently configure a non-default CRLRegexp, then this code is not backwards-compatible. Whatever regexp is configured almost certainly doesn't have any capture groups in it, which means that the prober will bail out at this error check.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed it is not backwards compatible. This is not a problem in LE's configuration because we use the default.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

boulder-observer: CCADB probe does not check that the set of possible CRLDPs is in CCADB.

3 participants