ServiceNow SIR Integration with ReversingLabs Spectra Analyze
Version: 1.0.0 Status: Production Ready Last Updated: July 2026
Introduction
The ReversingLabs ServiceNow SIR Integration brings powerful threat intelligence from ReversingLabs Spectra Analyze directly into your ServiceNow Security Incident Response (SIR) workflows. Security teams can enrich indicators of compromise (IOCs) — including file hashes, domains, IP addresses, URLs, and binary files — against ReversingLabs' comprehensive threat database without leaving the ServiceNow platform.
Key Features
- File Hash Enrichment — MD5, SHA-1, SHA-256, SHA-512, SSDEEP, TLSH analysis results
- Domain Enrichment — DNS records, threat classifications, associated IPs, subdomain cascade
- IP Enrichment — Threat reputation, associated domains, historical resolution data
- URL Enrichment — Domain extraction, content analysis, threat classification
- Binary File Upload — Asynchronous file upload with polling queue (up to 500 MB)
- Automatic Observable Cascade — Creates child observables from DNS records and extracted files
- Role-Based Access Control — Admin, analyst, and read-only roles for secure operations
- Audit Logging — Comprehensive integration logs for troubleshooting and compliance
- Auto-Enrichment on Creation — Business rule triggers enrichment when observables are created
- Enterprise Ready — Proxy support, configurable timeouts




How It Works
Observable Enrichment
- Enrich — Once an observable (hash, domain, IP, URL, or file) is added to a Security Incident, ReversingLabs enrichment triggers automatically. The analyst can optionally click the ReversingLabs Enrichment button for newly added observables or to refresh enrichment for existing observables.
- Analyze — The integration queries ReversingLabs Spectra Analyze for threat intelligence on your indicator.
- Results — The observable is updated with threat score, verdict (MALICIOUS / SUSPICIOUS / CLEAN / UNKNOWN), classification, threat names, related indicators and RL specific tags which are both visible and searchable within ServiceNow. Child observables (e.g., IPs from a domain) are created automatically when enabled.
File Upload
Unknown or suspicious files which are uploaded via ServiceNow's Upload Secure File Attachment feature are automatically sent to ReversingLabs for binary analysis (up to 500 MB). Files are processed asynchronously, and the observable is updated with results once analysis is complete.
Data Flow Diagram
Requirements
ServiceNow Instance
- ServiceNow version Orlando or later (recommended: Paris, Zurich, or later)
- Security Incident Response (SIR) plugin (
sn_si) — active - Threat Intelligence plugin (
sn_ti) — installed with SIR - System Administrator role for installation
- ~10 MB available database space
ReversingLabs Account
- Active Spectra Analyze subscription (Standard User Role)
- Valid API key and endpoint URL (typically
https://a1000.reversinglabs.com) - Optional: Spectra Intelligence for enrichment of IOCs not yet analyzed by your Spectra Analyze instance
Network
| Direction | Protocol | Port | Destination | Purpose |
|---|---|---|---|---|
| Outbound | HTTPS | 443 | a1000.reversinglabs.com | Primary API endpoint |
| Outbound | HTTPS | 443 | *.reversinglabs.com | Recommended wildcard for future endpoints |
- No inbound connections required
- Optional: Proxy support for corporate environments with TLS inspection bypass for
*.reversinglabs.com
Supported Observable Types
| IOC Type | Supported | Examples |
|---|---|---|
| File Hash | ✓ | MD5, SHA-1, SHA-256, SHA-512, SSDEEP, TLSH |
| Domain | ✓ | example.com, malicious.net |
| IPv4 Address | ✓ | 192.168.1.1, 8.8.8.8 |
| IPv6 Address | ✓ | ::1, 2001:4860:4860::8888 |
| URL | ✓ | https://example.com/path, http://malicious.com |
| Binary File | ✓ | Executables, documents, archives (up to 500 MB) |
Installation & Deployment
Overview
After installing the app from the ServiceNow Store, you must run two setup scripts to activate the integration. All resources are created with safe defaults — nothing runs until you complete both steps.
A guided setup wizard will be available in a future release to automate these steps.
Step 1: Run Infrastructure Setup Script
After installing the app, run the infrastructure setup script:
- Navigate to System Definitions > Scripts - Background
- Ensure scope is set to Global (top-right dropdown — critical!)
- Open the script file:
01_INSTALL_RL_GLOBAL_SERVICES.js - Paste the entire script content into the Script field
- Click Run
- Review output for
[RL-MASTER-INSTALL]messages
This script must run in Global scope, not the app scope. All created resources are set to safe, inactive defaults — nothing runs until Step 2.
Step 2: Configure and Run Activation Script
2a. Set the Service Account Password
Before running the activation script, you must generate a password for the service account:
- Navigate to User Administration > Users
- Search for
rl_service_worker - Open the user record
- Click Generate password
- Verify the generated password:
- Is 100+ characters long
- Contains no colons (
:)
- If it contains colons, regenerate until you get one without
- Click Update to save the password
- Copy the password — you'll need it in the next step
The password must not contain colons (:). Colons break HTTP Basic Authentication parsing (username:password format). The script will reject passwords with colons.
2b. Edit and Run the Activation Script
- Open the script file:
02_START_RL_SERVICES.js - Edit the CFG section at the top of the script:
var CFG = {
srrPassword: '[PASTE PASSWORD FROM STEP 2a]',
apiKey: '[YOUR SPECTRA ANALYZE API KEY]',
apiUrl: 'https://a1000.reversinglabs.com',
pollingIntervalSeconds: 5
};
-
Replace the placeholders:
srrPassword— The password you generated in Step 2aapiKey— Your ReversingLabs API key (from your Spectra Analyze portal)apiUrl— Your Spectra Analyze instance URLpollingIntervalSeconds— Adjust polling frequency if needed (default: 5 seconds)
-
Navigate to System Definitions > Scripts - Background
-
Ensure scope is set to Global (top-right dropdown)
-
Paste the edited script content
-
Click Run
-
Review output for
[RL-SERVICE-CONTROL]messages
Verify the Installation
- Navigate to Workspaces > Security Incident Response Workspace
- Create or open an existing Security Incident
- Go to the Investigation tab
- Find the link dropdown and choose add multiple
- Paste a test hash:
d41d8cd98f00b204e9800998ecf8427e - Wait 5-10 seconds, refresh — threat score and classification should populate
Configuration
System Properties
All properties are configured in System Definition > System Properties after installation.
Core Configuration
| Property | Default | Description |
|---|---|---|
| API Key | (empty) | ReversingLabs API key used for authentication to ReversingLabs Spectra Analyze. |
| API URL | https://a1000.reversinglabs.com | Spectra Analyze API endpoint URL. |
| Auto Upload | true | Automatically upload unknown files for analysis. |
| Max Upload Size (MB) | 500 | Maximum file size for upload. |
| Polling Interval (seconds) | 5 | Base polling tick. Actual intervals follow a tiered exponential backoff strategy — see note below. |
| Max Polling Attempts | 20 | Max polling retries (up to a 60-minute monitoring window using the tiered backoff strategy). |
File upload status polling uses a tiered exponential backoff strategy with a 5-second polling tick: intervals start short and progressively lengthen across the 20 attempts, covering a maximum monitoring window of 60 minutes.
Feature Toggles
| Property | Default | Description |
|---|---|---|
| Update Observable Notes | true | Write analysis notes to observable. |
| Update Observable Findings | true | Write detailed findings to observable. |
| Update Observable Threat Lookup | true | Create threat lookup records. |
| Update Child Observable Enrichment | true | Enrich child observables (cascade). |
| Update Child Observable DNS | true | Create DNS-based child observables from domain enrichment. |
| Update Child Observable Extracted Files | false | Create observables for files extracted during analysis. |
API Coverage & Enrichment Examples
File Hash Enrichment
When you enrich a file hash (MD5, SHA-1, SHA-256, or other hash type), the integration returns:
- Classification — MALICIOUS, SUSPICIOUS, GOODWARE, or UNKNOWN
- Threat Score — 0–100 severity rating
- File Metadata — Type, size, build date, compiler information
- Threat Names — Detected malware family names
- Digital Signatures — Certificate details and signer information
- Related Indicators — Associated domains, IPs, extracted files
Example enrichment result:
Observable: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 (SHA-256)
├── Threat Score: 85
├── Verdict: MALICIOUS
├── Classification: Malware
├── Threat Names: Trojan.Generic, Ransomware.Lock
├── File Type: PE32 executable (GUI) Intel 80386
├── File Size: 1,234,567 bytes
├── Analysis Details: "This is a known ransomware variant..."
└── Tags: rl:classification=MALICIOUS
Domain Enrichment
Domain enrichment provides:
- DNS Records — A, AAAA, MX, NS, CNAME records
- Associated IPs — Current and historical IP resolutions (auto-created as child observables)
- Threat Status — Classification and risk rating
- Whois Information — Registrant details, registration date
Example:
Domain: malicious.net
├── Threat Score: 90
├── Verdict: MALICIOUS
├── A Records: 93.184.216.34, 93.184.216.35
├── MX Records: mail.malicious.net
├── Child Observables Created: 2 IP addresses
└── Associated Threats: Trojan.Generic, Adware.Minor
IP Address Enrichment
IP enrichment reveals:
- Geolocation — ASN and network information
- Reverse DNS — Associated domains
- Historical Data — Previous domain resolutions
- Threat Reputation — Known malicious activity classification
URL Enrichment
URL enrichment extracts:
- Domain & Host — Parsed from the URL
- Threat Classification — URL-level threat status
- Content Analysis — Detected threats in page content
- Redirects — Chained URL relationships
File Upload (Binary Analysis)
File upload adds:
- Asynchronous Processing — Files queued and processed in background
- Status Tracking — Polling queue shows pending → processing → completed
- Analysis Results — Classification, threat score, extracted indicators
- Progress Monitoring — Navigate to ReversingLabs Polling Queues to check status
Testing & Validation
Quick Test
- Navigate to Security Incident Response > Incidents
- Open an existing incident or create a new test incident
- Add an observable using one of the following known test values:
| Type | Test Value |
|---|---|
| MD5 Hash | e4d909c290d0fb1ca68ffaddb3940226 |
| Domain | malicious.net (if known in RL database) |
| IP Address | 8.8.8.8 |
| URL | https://example.com |
- The observable should auto-enrich within seconds, or click the ReversingLabs Enrichment button
Expected Output
Successful enrichment populates the observable record with:
- Threat Score — Numeric value (0–100)
- Verdict — Clean, Suspicious, Malicious, or Unknown
- Analysis Details — File type, metadata, and notes
- Security Tags — ReversingLabs tags that are visible on the record and searchable within ServiceNow, for example
rl:classification=MALICIOUS - Integration Log — An
infolevel entry in ReversingLabs Integration Logs
Troubleshooting
Enrichment Button Not Visible
Symptom: The ReversingLabs Enrichment button does not appear on the observable form.
Causes:
- Missing user role — user must have
x_rligh_revers_0.user - Observable is not a supported type (e.g., File Name, Registry Key)
- UI Action condition not met
Solutions:
- Verify the user has
x_rligh_revers_0.userassigned - Navigate to User Administration > Users, open the user record, check the Roles tab
- Confirm the observable type is one of: HASH, IP_ADDRESS, DOMAIN_NAME, URL, FILE
Authentication Failed / Invalid API Key
Symptom: Enrichment fails with an authentication error. Integration logs show "401 Unauthorized" or "Invalid API key".
Causes:
- API key is incorrect or expired
- API key has leading or trailing spaces from copy-paste
- API key doesn't match the configured endpoint
Solutions:
- Re-enter your API key by running the
02_START_RL_SERVICES.jsscript again with the correct key, or manually setx_rligh_revers_0.reversinglabs_api_keyin System Properties - Verify
x_rligh_revers_0.reversinglabs_api_urlmatches your Spectra Analyze instance - If credentials are older than 12 months, contact support@reversinglabs.com
Connection Timeout / Unable to Connect
Symptom: Enrichment fails with a network error. Observables stay in "pending" state.
Causes:
- Outbound HTTPS blocked by firewall or proxy
- DNS resolution failure
- ReversingLabs API temporarily unavailable
Solutions:
- Verify outbound HTTPS (port 443) access from ServiceNow to
a1000.reversinglabs.com - If behind a corporate proxy, configure proxy settings or whitelist
*.reversinglabs.comfrom TLS inspection - Check ReversingLabs status at https://status.reversinglabs.com
- Review integration logs at ReversingLabs Integration Logs
File Upload Fails
Symptom: Polling queue records show failed status with error message.
Causes:
- File exceeds the maximum upload size (default 500 MB)
- Network timeout during multipart upload
- Unsupported file format
Solutions:
- Check
error_messagefield on the polling queue record - Verify the file size is under the configured limit (
x_rligh_revers_0.reversinglabs_upload_max_size_mb) - Adjust
x_rligh_revers_0.reversinglabs_polling_interval_secondsif timing out - Ensure the global script include is installed (run Step 1 again if needed)
Empty Results from Known Malicious IOCs
Symptom: Enrichment runs successfully but returns no threat data.
Causes:
- IOC not in ReversingLabs database (not yet analyzed by Spectra Analyze)
- IOC is legitimate or clean (classification: GOODWARE)
- API quota exhausted
Solutions:
- Try a known malicious hash for testing
- Check API quota status — contact your ReversingLabs account team
- Enable Spectra Intelligence integration for broader coverage
- Review integration logs for throttling or rate limit errors
Slow Enrichment
Symptom: Enrichment takes longer than expected.
Solutions:
- Check network latency: Verify connectivity from ServiceNow to
a1000.reversinglabs.com - Check API status at https://status.reversinglabs.com
- Reduce queue congestion: Sequential processing means many pending items take time
- Verify
x_rligh_revers_0.reversinglabs_polling_interval_secondsis set correctly
Useful Links
- ReversingLabs Home
- Spectra Analyze Product
- ServiceNow Documentation
- ServiceNow App Store
- ReversingLabs Status Page