Skip to content

Exclude analyst false positives from clustering anchors - #45

Merged
laugiov merged 1 commit into
mainfrom
fix/fp-clustering-anchors
Aug 10, 2026
Merged

Exclude analyst false positives from clustering anchors#45
laugiov merged 1 commit into
mainfrom
fix/fp-clustering-anchors

Conversation

@laugiov

@laugiov laugiov commented Aug 10, 2026

Copy link
Copy Markdown
Owner

An analyst false_positive verdict now removes an IOC from the clustering anchor set, completing its semantics: no export (#43), no UI selection (#44), and no longer merging unrelated conversations into one actor cluster. Red-first test proving the old merge behavior, plus a confirmed-verdict control test; 21 clustering tests green, full suite at known baseline, PHPStan L8 + cs-fixer clean.

An IOC an analyst marked false_positive no longer exports, but it kept
acting as a clustering anchor: a benign or mis-extracted identifier
(e.g. a legitimate vendor IBAN) could keep merging unrelated
conversations into one threat-actor cluster — wrong attribution
outliving the bad extraction. The anchor selection now skips indicators
with a false_positive verdict; a confirmed verdict keeps clustering
unchanged (covered by a control test). Already-formed clusters are not
retroactively split; the next re-clustering pass rebuilds without the
excluded anchor.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR updates clustering semantics so an analyst false_positive verdict prevents an IOC from being used as a clustering merge anchor, avoiding incorrect threat-actor attribution caused by benign/mis-extracted identifiers. It adds an integration test that demonstrates the prior merge behavior (red-first) and a confirmed-verdict control test.

Changes:

  • Exclude IOCs with analyst verdict false_positive from the anchor set used to find shared conversations during clustering.
  • Add integration coverage ensuring false_positive does not merge conversations while confirmed still does.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
backend-symfony/src/Application/Clustering/IocClusteringService.php Filters out false_positive IOCs when deriving anchors for shared-conversation discovery.
backend-symfony/tests/Integration/Clustering/FalsePositiveAnchorTest.php Adds integration tests for false-positive and confirmed verdict effects on clustering merges.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread backend-symfony/src/Application/Clustering/IocClusteringService.php
@laugiov
laugiov merged commit 6b5c1a5 into main Aug 10, 2026
9 checks passed
laugiov added a commit that referenced this pull request Aug 10, 2026
Review follow-up to #45: the filter covered merge-edge discovery but not
getAnchorIocsForConversation(), so a cluster formed through a valid
anchor still persisted the false-positive IOC in its anchor metadata.
Covered by a two-anchor test proving the valid anchor still clusters
while the false positive stays out of threat_actor_cluster_ioc.
@laugiov
laugiov deleted the fix/fp-clustering-anchors branch August 12, 2026 14:59
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.

2 participants