Tines Enqueued/Retrying Job Deletion


Description

Currently enqueued or retrying jobs were cleared

Query · python

from panther_tines_helpers import tines_alert_context


def rule(event):

    return event.get("operation_name", "<NO_OPERATION_NAME>") in [
        "JobsQueuedDeletion",
        "JobsRetryingDeletion",
    ]


def title(event):
    operation = event.get("operation_name", "<NO_OPERATION_NAME>")
    user = event.get("user_email", "<NO_USER_EMAIL>")
    tines_instance = event.get("p_source_label", "<NO_SOURCE_LABEL>")

    return f"Tines [{operation}] performed by [{user}] on [{tines_instance}]."


def alert_context(event):
    return tines_alert_context(event)

Analyst notes

Possible data destruction. Please reach out to the user and confirm this was done for valid business reasons.

Raw source Tines Enqueued/Retrying Job Deletion · Panther Python
Esc
Published by panther-labs/panther-analysis ↗, licensed under Apache 2.0 ↗. Reproduced here unmodified.
AnalysisType: rule
Filename: tines_enqueued_retrying_job_deletion.py
RuleID: Tines.Enqueued.Retrying.Job.Destruction
DisplayName: "Tines Enqueued/Retrying Job Deletion"
Enabled: true
LogTypes:
  - Tines.Audit
Tags:
  - Tines
Severity: Low
Description: "Currently enqueued or retrying jobs were cleared"
Runbook: "Possible data destruction. Please reach out to the user and confirm this was done for valid business reasons."
Reference: https://www.tines.com/docs/self-hosting/job-management
DedupPeriodMinutes: 60
Threshold: 1
Tests:
  - Name: Trigger - JobsQueuedDeletion
    ExpectedResult: true
    Log:
      {
        "created_at": "2023-06-13 15:14:46",
        "id": 1234,
        "operation_name": "JobsQueuedDeletion",
        "p_source_label": "tines-log-source-name",
        "request_ip": "98.224.225.84",
        "request_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (  KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
        "tenant_id": "1337",
        "user_email": "user@email.com",
        "user_id": "7331",
        "user_name": "Tines User Person",
      }
  - Name: Trigger - JobsRetryingDeletion
    ExpectedResult: true
    Log:
      {
        "created_at": "2023-06-13 15:14:46",
        "id": 1234,
        "operation_name": "JobsRetryingDeletion",
        "p_source_label": "tines-log-source-name",
        "request_ip": "98.224.225.84",
        "request_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (  KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
        "tenant_id": "1337",
        "user_email": "user@email.com",
        "user_id": "7331",
        "user_name": "Tines User Person",
      }
  - Name: Tines Login
    ExpectedResult: false
    Log:
      {
        "created_at": "2023-05-17 14:45:19",
        "id": 7888888,
        "operation_name": "Login",
        "p_source_label": "tines-log-source-name",
        "request_ip": "12.12.12.12",
        "request_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
        "tenant_id": "8888",
        "user_email": "user@company.com",
        "user_id": "17171",
        "user_name": "user at company dot com",
      }


# ------ paired body: tines_enqueued_retrying_job_deletion.py ------

from panther_tines_helpers import tines_alert_context


def rule(event):

    return event.get("operation_name", "<NO_OPERATION_NAME>") in [
        "JobsQueuedDeletion",
        "JobsRetryingDeletion",
    ]


def title(event):
    operation = event.get("operation_name", "<NO_OPERATION_NAME>")
    user = event.get("user_email", "<NO_USER_EMAIL>")
    tines_instance = event.get("p_source_label", "<NO_SOURCE_LABEL>")

    return f"Tines [{operation}] performed by [{user}] on [{tines_instance}]."


def alert_context(event):
    return tines_alert_context(event)

Detection rules belong to the projects that publish them and remain under their own licenses. This site indexes and links to them; it claims no rights in them.