Skip to content
Skillpedia
Security35k · #6137

performing-scada-hmi-security-assessment

Teaches your AI agent to protect apps against attacks and design clean, easy-to-use interfaces.

What it does

This tool checks the security of Human-Machine Interface (HMI) systems used in industrial control (SCADA/DCS). It looks for weaknesses in how users log in, how systems communicate, and in web interfaces.

When to use it

  • ✓When checking the security of HMI interfaces in industrial control systems.
  • ✓When testing web-based HMI interfaces for common vulnerabilities.
  • ✓When auditing how users log in and access the HMI system.

Example of what to ask your AI

“Check the security of our SCADA system's HMI, focusing on authentication and communication with PLCs.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/performing-scada-hmi-security-assessment/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/performing-scada-hmi-security-assessment/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

The tool simulates security tests, checking passwords, access permissions, and the security of connections between the HMI and controllers (PLCs). It compares results against security standards like IEC 62443.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill performing-scada-hmi-security-assessment

Or download just the file:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/performing-scada-hmi-security-assessment/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Performing SCADA HMI Security Assessment

When to Use

  • When assessing the security posture of HMI systems in SCADA/DCS environments
  • When evaluating web-based HMI interfaces for common web vulnerabilities
  • When auditing HMI authentication, authorization, and session management
  • When testing communication security between HMIs and PLCs/RTUs
  • When preparing for IEC 62443 or NERC CIP compliance assessments

Do not use for testing HMIs in active production without a maintenance window and rollback plan, for PLC-level protocol analysis (see performing-s7comm-protocol-security-analysis), or for general web application testing on non-OT systems.

Prerequisites

  • HMI system inventory with vendor, version, and network configuration details
  • Lab or test environment mirroring production HMI setup (preferred for active testing)
  • Authorization from plant operations for testing during maintenance windows
  • NIST SP 800-82 and IEC 62443 security requirements documentation
  • Network capture capability on HMI-to-PLC communication segment

Workflow

Step 1: Assess HMI Attack Surface

#!/usr/bin/env python3
"""SCADA HMI Security Assessment Tool.

Evaluates HMI security across authentication, communication,
configuration, and web interface categories aligned with
IEC 62443 and NIST SP 800-82 requirements.
"""

import json
import sys
from datetime import datetime
from typing import Dict, List

try:
    import requests
except ImportError:
    print("Install requests: pip install requests")
    sys.exit(1)


class HMISecurityAssessment:
    """Performs security assessment of SCADA HMI systems."""

    def __init__(self, hmi_info: dict):
        self.hmi_info = hmi_info
        self.findings = []
        self.checks_run = 0
        self.checks_passed = 0

    def check_authentication(self):
        """Assess HMI authentication mechanisms."""
        checks = [
            {
                "id": "AUTH-01",
                "name": "Password complexity enforcement",
                "iec62443_ref": "ISA-62443-3-3 SR 1.7",
                "description": "HMI must enforce minimum password complexity requirements",
                "test": "Verify minimum length >= 8, complexity rules, history >= 5",
            },
            {
                "id": "AUTH-02",
                "name": "Account lockout policy",
                "iec62443_ref": "ISA-62443-3-3 SR 1.11",
                "description": "HMI must lock accounts after failed login attempts",
                "test": "Verify lockout after 5 failed attempts, lockout duration >= 15 min",
            },
            {
                "id": "AUTH-03",
                "name": "Default credentials changed",
                "iec62443_ref": "ISA-62443-3-3 SR 1.5",
                "description": "All default vendor credentials must be changed",
                "test": "Attempt login with known vendor defaults (admin/admin, operator/operator)",
            },
            {
                "id": "AUTH-04",
                "name": "Role-based access control",
                "iec62443_ref": "ISA-62443-3-3 SR 2.1",
                "description": "HMI must separate operator, engineer, and admin roles",
                "test": "Verify operator role cannot access engineering functions",
            },
            {
                "id": "AUTH-05",
                "name": "Session timeout enforcement",
                "iec62443_ref": "ISA-62443-3-3 SR 1.12",
                "description": "HMI sessions must time out after inactivity",
                "test": "Verify session timeout <= 15 minutes for operator, <= 5 for admin",
            },
            {
                "id": "AUTH-06",
                "name": "Multi-factor authentication for remote access",
                "iec62443_ref": "ISA-62443-3-3 SR 1.13",
                "description": "Remote HMI access requires MFA",
                "test": "Verify MFA is enforced for all non-local HMI connections",
            },
        ]

        print(f"\n--- AUTHENTICATION ASSESSMENT ---")
        for check in checks:
            self.checks_run += 1
            print(f"  [{check['id']}] {check['name']}")
            print(f"    Ref: {check['iec62443_ref']}")
            print(f"    Test: {check['test']}")

    def check_communication_security(self):
        """Assess HMI-to-PLC communication security."""
        checks = [
            {
                "id": "COMM-01",

…
FAQ

What is SCADA/HMI?

SCADA is an industrial control system that monitors and manages processes. HMI is the graphical interface operators use to interact with the SCADA system.

What are PLCs?

PLCs (Programmable Logic Controllers) are industrial computers that control machinery and processes.

Why is HMI security important?

HMIs control critical processes. If compromised, they can cause production downtime, equipment damage, or safety risks.

Details

Original description by the author

Perform security assessments of SCADA Human-Machine Interface (HMI) systems to identify vulnerabilities in web-based HMIs, thin-client configurations, authentication mechanisms, and communication channels between HMI and PLCs, aligned with IEC 62443 and NIST SP 800-82 guidelines. '

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularity

GitHub stars
35k
Ranking position
#6137
License
Apache-2.0
Updated
8/31/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills