DocuSign Envelope Voided


Description

Detects when a DocuSign envelope is voided. Frequent voiding of envelopes could indicate fraudulent activity, document tampering attempts, or process abuse. Monitor for patterns of voiding behavior.

Query · python

from panther_docusign_helpers import docusign_alert_context


def rule(event):
    return event.get("event") == "envelope-voided"


def title(event):
    envelope_id = event.deep_get("data", "envelopeId", default="Unknown")
    sender_email = event.deep_get("data", "sender", "email", default="Unknown")
    return f"DocuSign envelope [{envelope_id}] voided by [{sender_email}]"


def alert_context(event):
    return docusign_alert_context(event) | {
        "voided_reason": event.deep_get("data", "envelopeSummary", "voidedReason"),
        "voided_date_time": event.deep_get("data", "envelopeSummary", "voidedDateTime"),
    }

Analyst notes

  1. Review the envelope contents and recipients
  2. Verify if the voiding was legitimate or suspicious
  3. Check for patterns of envelope voiding by the same user
  4. Review the termination reason for additional context
  5. Consider investigating other envelopes sent by the same sender
Raw source DocuSign Envelope Voided · Panther Python
Esc
Published by panther-labs/panther-analysis ↗, licensed under Apache 2.0 ↗. Reproduced here unmodified.
AnalysisType: rule
Filename: docusign_envelope_voided.py
RuleID: "Docusign.Connect.EnvelopeVoided"
DisplayName: "DocuSign Envelope Voided"
Enabled: true
LogTypes:
  - Docusign.Connect
Tags:
  - DocuSign
  - Envelope
  - Fraud
Severity: Medium
Description: >
  Detects when a DocuSign envelope is voided. Frequent voiding of envelopes could indicate fraudulent
  activity, document tampering attempts, or process abuse. Monitor for patterns of voiding behavior.
Runbook: |
  1. Review the envelope contents and recipients
  2. Verify if the voiding was legitimate or suspicious
  3. Check for patterns of envelope voiding by the same user
  4. Review the termination reason for additional context
  5. Consider investigating other envelopes sent by the same sender
Reference: https://developer.docusign.com/docs/connect/events/
SummaryAttributes:
  - data.envelopeId
  - data.senderEmail
  - data.terminationReason
Tests:
  - Name: "Envelope Voided Event"
    ExpectedResult: true
    Log:
      event: "envelope-voided"
      uri: "/api/v2/accounts/12345/envelopes/abc123"
      retryCount: 0
      configurationId: "config123"
      apiVersion: "v2.1"
      generatedDateTime: "2024-01-15T10:30:00.000Z"
      data:
        accountId: "12345"
        userId: "user123"
        envelopeId: "envelope123"
        senderEmail: "denethor@lotr.com"
        terminationReason: "User voided envelope"
        terminated_by: "user123"
        envelopeSummary:
          status: "voided"
          created: "2024-01-15T09:00:00.000Z"
  - Name: "Envelope Completed Event"
    ExpectedResult: false
    Log:
      event: "envelope-completed"
      uri: "/api/v2/accounts/12345/envelopes/abc123"
      retryCount: 0
      configurationId: "config123"
      apiVersion: "v2.1"
      generatedDateTime: "2024-01-15T10:30:00.000Z"
      data:
        accountId: "12345"
        userId: "user123"
        envelopeId: "envelope123"
        senderEmail: "denethor@lotr.com"
        envelopeSummary:
          status: "completed"
          created: "2024-01-15T09:00:00.000Z"
  - Name: "Different Event Type"
    ExpectedResult: false
    Log:
      event: "envelope-sent"
      uri: "/api/v2/accounts/12345/envelopes/abc123"
      retryCount: 0
      configurationId: "config123"
      apiVersion: "v2.1"
      generatedDateTime: "2024-01-15T10:30:00.000Z"
      data:
        accountId: "12345"
        envelopeId: "envelope123"

# ------ paired body: docusign_envelope_voided.py ------

from panther_docusign_helpers import docusign_alert_context


def rule(event):
    return event.get("event") == "envelope-voided"


def title(event):
    envelope_id = event.deep_get("data", "envelopeId", default="Unknown")
    sender_email = event.deep_get("data", "sender", "email", default="Unknown")
    return f"DocuSign envelope [{envelope_id}] voided by [{sender_email}]"


def alert_context(event):
    return docusign_alert_context(event) | {
        "voided_reason": event.deep_get("data", "envelopeSummary", "voidedReason"),
        "voided_date_time": event.deep_get("data", "envelopeSummary", "voidedDateTime"),
    }

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.