mirror of
https://github.com/louislam/uptime-kuma.git
synced 2026-03-02 22:57:00 -05:00
DNS Monitor only checks first CAA record when multiple records exist #4545
Labels
No labels
A:accessibility
A:api
A:cert-expiry
A:core
A:dashboard
A:deployment
A:documentation
A:domain expiry
A:incidents
A:maintenance
A:metrics
A:monitor
A:notifications
A:reports
A:settings
A:status-page
A:ui/ux
A:user-management
Stale
ai-slop
blocked
blocked-upstream
bug
cannot-reproduce
dependencies
discussion
duplicate
feature-request
feature-request
good first issue
hacktoberfest
help
help wanted
house keeping
invalid
invalid-format
invalid-format
question
releaseblocker 🚨
security
spam
type:enhance-existing
type:new
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/uptime-kuma#4545
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @am17torres on GitHub (Dec 23, 2025).
📑 I have found these related issues/pull requests
This issue relates specifically to CAA records. Doing a search for CAA issues yields few results.
The only PR I can see which may have address this issue #3919 was closed.
🛡️ Security Policy
📝 Description
When monitoring DNS records where multiple CAA records exist, the DNS monitor appears to only check the first record returned rather than all records.
👟 Reproduction steps
👀 Expected behavior
When multiple CAA records exist, the monitor should check all returned records against the expected value, not just the first one.
😓 Actual Behavior
🐻 Uptime-Kuma Version
2.0.2
💻 Operating System and Arch
OSx Tahoe Version 26.1 (25B78)
🌐 Browser
Version 143.0.7499.147 (Official Build) (arm64)
🖥️ Deployment Environment
Docker OSX
📝 Relevant log output
Debugging
I have a root domain with 3 CAA records defined.
It appears the relevant source code can be found here where it explicitly pulls the first record and assumes the key
issuegithub.com/louislam/uptime-kuma@d23ff8c486/server/monitor-types/dns.js (L53-L54)This causes my health check to fail intermittently due to the non-deterministic response ordering.
I had hoped to use the condition "Record contains" option but it throws an
indexOferror.I'm not sure how best to implement this in a backward compatible way.
I see for other record types the use of
someAn issue I see what that approach is the assumption of the key
issue.According to the spec there is
issue,issueWild, andiodef.Looking for suggestions on how to proceed!
Thanks!
@CommanderStorm commented on GitHub (Dec 23, 2025):
the diff you showed would defintively be an improvemnt.
The more permanent fix is to implement subtypes for our conditions.
I.e. this the record field globally, but issue, issueWild, and iodef only if dns_resolve_type is CAA.
In v3.0 we can replace
recordfor thisdns_resolve_typewith something different.@am17torres commented on GitHub (Dec 23, 2025):
I've implemented that fix and submitted https://github.com/louislam/uptime-kuma/pull/6520.
Local testing shows this to be an effective resolution for my current issue.