Skip to content

fix(dga): infer dns.question.registered_domain from dns.question.name…#18341

Merged
yuriShafet merged 1 commit intomainfrom
dga_pipeline_improvements
Apr 10, 2026
Merged

fix(dga): infer dns.question.registered_domain from dns.question.name…#18341
yuriShafet merged 1 commit intomainfrom
dga_pipeline_improvements

Conversation

@yuriShafet
Copy link
Copy Markdown
Contributor

@yuriShafet yuriShafet commented Apr 10, 2026

… when missing

When dns.question.registered_domain field is null the DGA inference
pipeline falls back to using the full domain name as the SLD feature,
causing false positive malicious predictions for benign domains.

Add a registered_domain processor as the first step in the ingest pipeline
to infer registered_domain, top_level_domain, and subdomain from
dns.question.name using the Mozilla Public Suffix List bundled in
Elasticsearch. The processor only runs when registered_domain is null,
leaving events from Packetbeat and other enriched sources unaffected.

Checklist

  • I have reviewed tips for building integrations and this pull request is aligned with them.
  • I have verified that all data streams collect metrics or logs.
  • I have added an entry to my package's changelog.yml file.
  • I have verified that Kibana version constraints are current according to guidelines.
  • I have verified that any added dashboard complies with Kibana's Dashboard good practices

How to test this PR locally

The PR was tested in local kibana stack.
New pipeline was installed from local integrations repo and pipeline was tested as follows.

Before the pipeline update:
image

Features are extracted on subdomain as well. Resulting in sample classified as malicious.

After the pipeline change:
image

image

Subdomain no longer considered for feature extraction.

Related issues

elastic/detection-rules#5787

… when missing

  When dns.question.registered_domain field is null the DGA inference
  pipeline falls back to using the full domain name as the SLD feature,
  causing false positive malicious predictions for benign domains.

  Add a registered_domain processor as the first step in the ingest pipeline
  to infer registered_domain, top_level_domain, and subdomain from
  dns.question.name using the Mozilla Public Suffix List bundled in
  Elasticsearch. The processor only runs when registered_domain is null,
  leaving events from Packetbeat and other enriched sources unaffected.
@yuriShafet yuriShafet force-pushed the dga_pipeline_improvements branch from ae3a2db to 3dfc826 Compare April 10, 2026 15:47
@yuriShafet yuriShafet added the enhancement New feature or request label Apr 10, 2026
@andrewkroh andrewkroh added the Integration:dga Domain Generation Algorithm Detection label Apr 10, 2026
@yuriShafet yuriShafet marked this pull request as ready for review April 10, 2026 16:03
@yuriShafet yuriShafet requested a review from a team as a code owner April 10, 2026 16:03
@elasticmachine
Copy link
Copy Markdown

💚 Build Succeeded

@andrewkroh andrewkroh added the Team:Security-Applied ML Elastic Security Protections Machine Learning (ML) team [elastic/sec-applied-ml] label Apr 10, 2026
@elasticmachine
Copy link
Copy Markdown

Pinging @elastic/sec-applied-ml (Team:Security-Applied ML)

Copy link
Copy Markdown
Contributor

@jmcarlock jmcarlock left a comment

Choose a reason for hiding this comment

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

LGTM!

@yuriShafet yuriShafet merged commit 32c58f6 into main Apr 10, 2026
9 checks passed
@yuriShafet yuriShafet deleted the dga_pipeline_improvements branch April 10, 2026 20:25
@elastic-vault-github-plugin-prod
Copy link
Copy Markdown

Package dga - 2.3.7 containing this change is available at https://epr.elastic.co/package/dga/2.3.7/

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

Labels

enhancement New feature or request Integration:dga Domain Generation Algorithm Detection Team:Security-Applied ML Elastic Security Protections Machine Learning (ML) team [elastic/sec-applied-ml]

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants