cproudlock d28dd504f2 Fix NinjaOne API integration and patch parsing
- Use us2.ninjarmm.com instance (not app.ninjarmm.com)
- Handle results wrapper in API responses
- Parse impact field for severity (critical/high/medium/low)
- Fetch all patches, not just pending

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 12:52:10 -05:00
2025-12-18 12:17:16 -05:00
2025-12-18 12:17:16 -05:00

CVE Resolution Tool for NinjaOne

Queries NinjaOne's REST API to aggregate CVE/vulnerability data across all organizations and prioritize remediation efforts.

Setup

  1. Copy config example and add your NinjaOne API credentials:

    cp config.example.py config.py
    
  2. Get API credentials from NinjaOne:

    • Go to Administration > Apps > API
    • Create a new API application (Client Credentials grant type)
    • Copy the Client ID and Client Secret
  3. Install dependencies:

    pip install -r requirements.txt
    

Usage

python ninjaone.py

NinjaOne API Endpoints Used

Endpoint Description
GET /api/v2/organizations List all organizations
GET /api/v2/devices-detailed List all devices with details
GET /api/v2/device/{id}/software Device software inventory
GET /api/v2/queries/os-patches OS patches report
GET /api/v2/queries/software-patches Third-party software patches
GET /api/v2/vulnerability/scan-groups Vulnerability scan data

Output

Generates a prioritized CVE remediation report showing:

  • Summary across all organizations
  • Patches grouped by CVSS severity (Critical/High/Medium/Low)
  • Critical items requiring immediate attention
  • Affected device counts

Resources

Description
CVE tracking project
Readme 86 KiB
Languages
Python 100%