Skip to content

fix: Cleaning up the hashable content for the rule #4621

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
Apr 24, 2025

Conversation

traut
Copy link
Contributor

@traut traut commented Apr 16, 2025

Pull Request

Issue link(s):

Summary - What I changed

  • related_integrations field will be dropped from the dict that will be hashed to calculate the SHA256 hash of the rule.

How To Test

Checklist

  • Added a label for the type of pr: bug, enhancement, schema, maintenance, Rule: New, Rule: Deprecation, Rule: Tuning, Hunt: New, or Hunt: Tuning so guidelines can be generated
  • Added the meta:rapid-merge label if planning to merge within 24 hours
  • Secret and sensitive material has been managed correctly
  • Automated testing was updated or added to match the most common scenarios
  • Documentation and comments were added for features that require explanation

Contributor checklist

@@ -1123,10 +1123,19 @@ def _post_dict_conversion(self, obj: dict) -> dict:
def to_api_format(self, include_version: bool = True) -> dict:
"""Convert the rule to the API format."""


def get_hashable_content(self, include_version: bool = False, include_integrations: bool = True) -> dict:
Copy link
Contributor

Choose a reason for hiding this comment

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

When we ship this, all integrations will invariably get a version bump because the sha256 would change with dropping the related_integrations and the first time all of the integrations rules will see a bump.

@shashank-elastic
Copy link
Contributor

We can use python -m detection_rules dev test-version-lock main to test this logic change

Copy link
Contributor

@Mikaayenson Mikaayenson left a comment

Choose a reason for hiding this comment

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

  • Calculating both hashes to preserve backwards compatibility makes sense so im not sure where it's still bumping hashes in your testing. just remember, It may be legitimate rule changes.
  • We should also think about how expensive the extra call (and to go one step further, even if we want to make adding related integrations optional at all) or just remove the field from calculation all together
  • We'll want to make sure we refactor the other areas of sha256() in the test cases

@shashank-elastic
Copy link
Contributor

Testing Updates During Release part

  • We patched the code to 8.18 and 9.0 branches locally and tested lock versions

  • We ran this command on 8.18 and 9.0 python -m detection_rules dev build-release --update-version-lock

  • The resulting lock versions file was diffed with main to Identify double bumps

  • We never double bumps due to integration changes at all and identified 4 double bumps during testing for rules
    - Windows Event Logs Cleared
    - User Added to Privileged Group
    - Active Directory Group Modification by SYSTEM
    - Execution of a Downloaded Windows Script

    • All the above rules have to be minstacked.

    Attaching the same diff of version lock file with main and the version lock file when tested.

git_diff_output.txt
version.lock.json

@traut traut force-pushed the hashing-adjustment branch from 7196e72 to ca7215a Compare April 23, 2025 12:44
@traut traut marked this pull request as ready for review April 23, 2025 12:54
@botelastic botelastic bot added the python Internal python for the repository label Apr 23, 2025
@traut traut added minor and removed python Internal python for the repository backport: auto labels Apr 23, 2025
@traut traut added python Internal python for the repository bug Something isn't working detections-as-code enhancement New feature or request and removed bug Something isn't working labels Apr 23, 2025
Copy link
Contributor

github-actions bot commented Apr 23, 2025

Enhancement - Guidelines

These guidelines serve as a reminder set of considerations when addressing adding a feature to the code.

Documentation and Context

  • Describe the feature enhancement in detail (alternative solutions, description of the solution, etc.) if not already documented in an issue.
  • Include additional context or screenshots.
  • Ensure the enhancement includes necessary updates to the documentation and versioning.

Code Standards and Practices

  • Code follows established design patterns within the repo and avoids duplication.
  • Code changes do not introduce new warnings or errors.
  • Variables and functions are well-named and descriptive.
  • Any unnecessary / commented-out code is removed.
  • Ensure that the code is modular and reusable where applicable.
  • Check for proper exception handling and messaging.

Testing

  • New unit tests have been added to cover the enhancement.
  • Existing unit tests have been updated to reflect the changes.
  • Provide evidence of testing and validating the enhancement (e.g., test logs, screenshots).
  • Validate that any rules affected by the enhancement are correctly updated.
  • Ensure that performance is not negatively impacted by the changes.
  • Verify that any release artifacts are properly generated and tested.

Additional Checks

  • Ensure that the enhancement does not break existing functionality.
  • Review the enhancement with a peer or team member for additional insights.
  • Verify that the enhancement works across all relevant environments (e.g., different OS versions).
  • Confirm that all dependencies are up-to-date and compatible with the changes.
  • Confirm that the proper version label is applied to the PR patch, minor, major.

@traut traut force-pushed the hashing-adjustment branch from fe3a039 to e8b8215 Compare April 23, 2025 13:13
Copy link
Contributor

@Mikaayenson Mikaayenson left a comment

Choose a reason for hiding this comment

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

this lgtm based on all the local release branch testing. @traut when we merge, can we time a maintenance window and test version locks? If anything unexpected arises, we can safely revert this PR then. Note: @eric-forte-elastic is also bringing in a version lock PR that will test inadvertent double bumps so we could merge this one after his.

@traut traut force-pushed the hashing-adjustment branch from e8b8215 to aa1f5ab Compare April 24, 2025 08:47
@shashank-elastic shashank-elastic merged commit 80c4f7e into main Apr 24, 2025
13 checks passed
@shashank-elastic shashank-elastic deleted the hashing-adjustment branch April 24, 2025 09:03
traut added a commit that referenced this pull request Apr 24, 2025
traut added a commit that referenced this pull request Apr 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport: auto detections-as-code enhancement New feature or request minor python Internal python for the repository
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants