[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AFAMWZ8ZYS99NW63943MN4":3,"skill-same:01M6AFAMWZ8ZYS99NW63943MN4":121},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":63,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6AFAMWZ8ZYS99NW63943MN4","implementing-patch-management-workflow",null,"Patch management is the systematic process of identifying, testing, deploying, and verifying software updates to remediate vulnerabilities across an organization's IT infrastructure. An effective patc","mukul975\u002FAnthropic-Cybersecurity-Skills","mukul975","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F42860185?v=4","01M6ADEQR8T5M4EEG6C67BQCWF","Mahipal","01M6ADJPMYWG1E5GM1FWBE3128",36078,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-patch-management-workflow\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38],"workflow","implementing patch management workflow","testing","cybersecurity","vulnerabilities","infrastructure","patch-management","wsus","sccm","vulnerability-management","risk","ansible","2026-11-10 10:12:30",false,"---\nname: implementing-patch-management-workflow\ndescription: Patch management is the systematic process of identifying, testing, deploying,\n  and verifying software updates to remediate vulnerabilities across an organization's\n  IT infrastructure. An effective patc\ndomain: cybersecurity\nsubdomain: vulnerability-management\ntags:\n- vulnerability-management\n- patch-management\n- wsus\n- sccm\n- ansible\n- risk\nversion: '1.0'\nauthor: mahipal\nlicense: Apache-2.0\nnist_csf:\n- ID.RA-01\n- ID.RA-02\n- ID.IM-02\n- ID.RA-06\nmitre_attack:\n- T1190\n- T1203\n- T1068\n---\n# Implementing Patch Management Workflow\n\n## Overview\nPatch management is the systematic process of identifying, testing, deploying, and verifying software updates to remediate vulnerabilities across an organization's IT infrastructure. An effective patch management workflow reduces the attack surface while minimizing operational disruption through structured testing, approval gates, and phased rollouts.\n\n\n## When to Use\n\n- When deploying or configuring implementing patch management workflow capabilities in your environment\n- When establishing security controls aligned to compliance requirements\n- When building or improving security architecture for this domain\n- When conducting security assessments that require this implementation\n\n## Prerequisites\n- Vulnerability scan results identifying missing patches\n- Patch management tools (WSUS, SCCM\u002FMECM, Ansible, Intune, Jamf)\n- Test environment mirroring production\n- Change management process (ITIL or equivalent)\n- Asset inventory with OS and application versions\n\n## Core Concepts\n\n### Patch Lifecycle Phases\n1. **Discovery**: Identify available patches from vendors and vulnerability scans\n2. **Assessment**: Evaluate patch applicability and risk\n3. **Prioritization**: Rank patches by severity, exploitability, and asset criticality\n4. **Testing**: Validate patches in non-production environment\n5. **Approval**: Change advisory board (CAB) review and approval\n6. **Deployment**: Phased rollout to production systems\n7. **Verification**: Confirm successful installation and no regressions\n8. **Reporting**: Document compliance metrics and exceptions\n\n### Patch Categories\n- **Security Patches**: Address CVEs and security vulnerabilities\n- **Critical Updates**: Non-security bug fixes affecting stability\n- **Service Packs**: Cumulative update collections\n- **Feature Updates**: New functionality (Windows feature updates, etc.)\n- **Firmware Updates**: BIOS\u002FUEFI, NIC, storage controller firmware\n- **Third-Party Patches**: Adobe, Java, Chrome, Firefox, etc.\n\n### Deployment Rings (Phased Rollout)\n| Ring | Environment | % of Fleet | Soak Time | Purpose |\n|------|------------|------------|-----------|---------|\n| Ring 0 | Lab\u002FTest | N\u002FA | 24-48 hrs | Functional validation |\n| Ring 1 | IT Early Adopters | 5% | 48-72 hrs | Real-world pilot |\n| Ring 2 | Business Pilot | 15% | 5-7 days | Broader compatibility |\n| Ring 3 | General Deployment | 50% | 7-14 days | Main rollout |\n| Ring 4 | Mission Critical | 30% | After Ring 3 | Final deployment |\n\n## Workflow\n\n### Step 1: Configure Patch Sources\n\n```bash\n# WSUS (Windows Server Update Services)\n# Configure WSUS server to sync with Microsoft Update\n# Via PowerShell on WSUS server:\nInstall-WindowsFeature -Name UpdateServices -IncludeManagementTools\n& \"C:\\Program Files\\Update Services\\Tools\\WsusUtil.exe\" postinstall CONTENT_DIR=D:\\WSUS\n\n# Configure GPO for WSUS clients\n# Computer Configuration > Administrative Templates > Windows Components > Windows Update\n# Specify intranet Microsoft update service location: http:\u002F\u002Fwsus-server:8530\n```\n\n```yaml\n# Ansible: Configure patch repositories for Linux\n# roles\u002Fpatch-management\u002Ftasks\u002Fconfigure_repos.yml\n---\n- name: Configure RHEL patch repository\n  yum_repository:\n    name: rhel-patches\n    description: RHEL Security Patches\n    baseurl: https:\u002F\u002Fsatellite.corp.local\u002Fpulp\u002Frepos\u002Fpatches\n    gpgcheck: yes\n    gpgkey: file:\u002F\u002F\u002Fetc\u002Fpki\u002Frpm-gpg\u002FRPM-GPG-KEY-redhat-release\n    enabled: yes\n\n- name: Configure Ubuntu patch sources\n  apt_repository:\n    repo: \"deb https:\u002F\u002Fapt-mirror.corp.local\u002Fubuntu {{ ansible_distribution_release }}-security main\"\n    state: present\n  when: ansible_os_family == \"Debian\"\n```\n\n### Step 2: Automated Patch Assessment\n\n```python\n# patch_assessment.py - Correlate vulnerability scans with available patches\nimport subprocess\nimport platform\nimport json\n\ndef get_windows_pending_patches():\n    \"\"\"Query Windows Update for pending patches via PowerShell.\"\"\"\n    ps_cmd = \"\"\"\n    $Session = New-Object -ComObject Microsoft.Update.Session\n    $Searcher = $Session.CreateUpdateSearcher()\n    $Results = $Searcher.Search(\"IsInstalled=0 AND Type='Software'\")\n    $Results.Updates | ForEach-Object {\n        [PSCustomObject]@{\n            Title = $_.Title\n            KB = ($_.KBArticleIDs -join ',')\n            Severity = $_.MsrcSeverity\n            Size = [math]::Round($_.MaxDownloadSize \u002F 1MB, 2)\n            Published = $_.LastDeploymentChangeTime.ToString('yyyy-MM-dd')\n            CVE = ($_.CveIDs -join ',')\n        }\n    } | ConvertTo-Json\n    \"\"\"\n    result = subprocess.run(\n        [\"powershell\", \"-Command\", ps_cmd],\n        capture_output=True, text=True, timeout=120\n    )\n    return json.loads(result.stdout) if result.stdout.strip() else []\n\ndef get_linux_pending_patches():\n    \"\"\"Query package manager for available security updates.\"\"\"\n    if platform.system() != \"Linux\":\n        return []\n\n    # Try apt (Debian\u002FUbuntu)\n    try:\n        result = subprocess.run(\n            [\"apt\", \"list\", \"--upgradable\"],\n            capture_output=True, text=True, timeout=60\n        )\n        packages = []\n        for line in result.stdout.strip().split(\"\\n\")[1:]:\n            if line:\n                parts = line.split(\"\u002F\")\n                packages.append({\n                    \"package\": parts[0],\n                    \"available_version\": parts[1].split()[0] if len(parts) > 1 else \"\",\n                    \"source\": \"apt\"\n                })\n        return packages\n    except FileNotFoundError:\n        pass\n\n    # Try yum\u002Fdnf (RHEL\u002FCentOS)\n    try:\n        result = subprocess.run(\n            [\"dnf\", \"updateinfo\", \"list\", \"security\", \"--available\"],\n            capture_output=True, text=True, timeout=60\n        )\n        packages = []\n        for line in result.stdout.strip().split(\"\\n\"):\n            parts = line.split()\n            if len(parts) >= 3:\n                packages.append({\n                    \"advisory\": parts[0],\n                    \"severity\": parts[1],\n                    \"package\": parts[2],\n                    \"source\": \"dnf\"\n                })\n        return packages\n    except FileNotFoundError:\n        return []\n```\n\n### Step 3: Patch Testing Automation\n\n```yaml\n# Ansible playbook: test_patches.yml\n---\n- name: Test Patches in Lab Environment\n  hosts: test_servers\n  become: yes\n  vars:\n    rollback_snapshot: \"pre-patch-{{ ansible_date_time.date }}\"\n\n  tasks:\n    - name: Create VM snapshot before patching\n      community.vmware.vmware_guest_snapshot:\n        hostname: \"{{ vcenter_host }}\"\n        username: \"{{ vcenter_user }}\"\n        password: \"{{ vcenter_pass }}\"\n        datacenter: \"{{ datacenter }}\"\n        name: \"{{ inventory_hostname }}\"\n        snapshot_name: \"{{ rollback_snapshot }}\"\n        state: present\n      delegate_to: localhost\n\n    - name: Apply security patches (RHEL\u002FCentOS)\n      dnf:\n        name: \"*\"\n        state: latest\n        security: yes\n        update_cache: yes\n      when: ansible_os_family == \"RedHat\"\n      register: patch_result\n\n    - name: Apply security patches (Ubuntu\u002FDebian)\n      apt:\n        upgrade: dist\n        update_cache: yes\n        only_upgrade: yes\n      when: ansible_os_family == \"Debian\"\n      register: patch_result\n\n    - name: Reboot if required\n      reboot:\n        reboot_timeout: 600\n        msg: \"Rebooting for patch installation\"\n      when: patch_result.changed\n\n    - name: Run post-patch validation\n      include_tasks: validate_services.yml\n\n    - name: Report patch results\n      debug:\n        msg: \"Patching {{ 'succeeded' if patch_result.changed else 'no updates' }} on {{ inventory_hostname }}\"\n```\n\n### Step 4: Production Deployment\n\n```yaml\n# deploy_patches.yml - Phased production rollout\n---\n- name: Ring 1 - IT Early Adopters\n  hosts: ring1_hosts\n  serial: \"25%\"\n  max_fail_percentage: 10\n  become: yes\n  tasks:\n    - import_tasks: apply_patches.yml\n    - import_tasks: validate_services.yml\n    - name: Wait for soak period\n      pause:\n        hours: 48\n      run_once: true\n\n- name: Ring 2 - Business Pilot\n  hosts: ring2_hosts\n  serial: \"20%\"\n  max_fail_percentage: 5\n  become: yes\n  tasks:\n    - import_tasks: apply_patches.yml\n    - import_tasks: validate_services.yml\n\n- name: Ring 3 - General Deployment\n  hosts: ring3_hosts\n  serial: \"10%\"\n  max_fail_percentage: 3\n  become: yes\n  tasks:\n    - import_tasks: apply_patches.yml\n    - import_tasks: validate_services.yml\n```\n\n### Step 5: Verification and Reporting\n\nRun a post-patch vulnerability scan to confirm patch installation:\n```bash\n# Trigger post-patch verification scan\ncurl -k -X POST \"https:\u002F\u002Fnessus:8834\u002Fscans\u002F$VERIFY_SCAN_ID\u002Flaunch\" \\\n  -H \"X-Cookie: token=$TOKEN\"\n\n# Compare pre-patch and post-patch results\n# Expecting reduction in vulnerabilities matching deployed patches\n```\n\n## Patch Management SLAs\n| Severity | SLA (Internet-Facing) | SLA (Internal) | SLA (Air-Gapped) |\n|----------|----------------------|----------------|-------------------|\n| Critical (CVSS 9+) | 48 hours | 7 days | 14 days |\n| High (CVSS 7-8.9) | 7 days | 14 days | 30 days |\n| Medium (CVSS 4-6.9) | 30 days | 30 days | 60 days |\n| Low (CVSS 0.1-3.9) | 90 days | 90 days | 90 days |\n\n## Best Practices\n1. Maintain current asset inventory to ensure complete patch coverage\n2. Test all patches in a non-production environment before deployment\n3. Use phased rollouts with automatic rollback capabilities\n4. Coordinate patch windows with change management process\n5. Track patch compliance metrics and report to leadership\n6. Automate where possible to reduce manual effort and human error\n7. Maintain exception documentation for systems that cannot be patched\n8. Include third-party application patching (not just OS patches)\n\n## Common Pitfalls\n- Patching only operating systems and ignoring third-party applications\n- No rollback plan if patches cause service disruption\n- Treating all patches with equal urgency (no risk-based prioritization)\n- Manual patch processes that cannot scale\n- No post-patch verification to confirm successful installation\n- Ignoring firmware and BIOS updates\n\n## Related Skills\n- prioritizing-vulnerabilities-with-cvss-scoring\n- implementing-vulnerability-remediation-sla\n- implementing-continuous-vulnerability-monitoring\n","# Implementing Patch Management Workflow\n\n## Overview\nPatch management is the systematic process of identifying, testing, deploying, and verifying software updates to remediate vulnerabilities across an organization's IT infrastructure. An effective patch management workflow reduces the attack surface while minimizing operational disruption through structured testing, approval gates, and phased rollouts.\n\n\n## When to Use\n\n- When deploying or configuring implementing patch management workflow capabilities in your environment\n- When establishing security controls aligned to compliance requirements\n- When building or improving security architecture for this domain\n- When conducting security assessments that require this implementation\n\n## Prerequisites\n- Vulnerability scan results identifying missing patches\n- Patch management tools (WSUS, SCCM\u002FMECM, Ansible, Intune, Jamf)\n- Test environment mirroring production\n- Change management process (ITIL or equivalent)\n- Asset inventory with OS and application versions\n\n## Core Concepts\n\n### Patch Lifecycle Phases\n1. **Discovery**: Identify available patches from vendors and vulnerability scans\n2. **Assessment**: Evaluate patch applicability and risk\n3. **Prioritization**: Rank patches by severity, exploitability, and asset criticality\n4. **Testing**: Validate patches in non-production environment\n5. **Approval**: Change advisory board (CAB) review and approval\n6. **Deployment**: Phased rollout to production systems\n7. **Verification**: Confirm successful installation and no regressions\n8. **Reporting**: Document compliance metrics and exceptions\n\n### Patch Categories\n- **Security Patches**: Address CVEs and security vulnerabilities\n- **Critical Updates**: Non-security bug fixes affecting stability\n- **Service Packs**: Cumulative update collections\n- **Feature Updates**: New functionality (Windows feature updates, etc.)\n- **Firmware Updates**: BIOS\u002FUEFI, NIC, storage controller firmware\n- **Third-Party Patches**: Adobe, Java, Chrome, Firefox, etc.\n\n### Deployment Rings (Phased Rollout)\n| Ring | Environment | % of Fleet | Soak Time | Purpose |\n|------|------------|------------|-----------|---------|\n| Ring 0 | Lab\u002FTest | N\u002FA | 24-48 hrs | Functional validation |\n| Ring 1 | IT Early Adopters | 5% | 48-72 hrs | Real-world pilot |\n| Ring 2 | Business Pilot | 15% | 5-7 days | Broader compatibility |\n| Ring 3 | General Deployment | 50% | 7-14 days | Main rollout |\n| Ring 4 | Mission Critical | 30% | After Ring 3 | Final deployment |\n\n## Workflow\n\n### Step 1: Configure Patch Sources\n\n```bash\n# WSUS (Windows Server Update Services)\n# Configure WSUS server to sync with Microsoft Update\n# Via PowerShell on WSUS server:\nInstall-WindowsFeature -Name UpdateServices -IncludeManagementTools\n& \"C:\\Program Files\\Update Services\\Tools\\WsusUtil.exe\" postinstall CONTENT_DIR=D:\\WSUS\n\n# Configure GPO for WSUS clients\n# Computer Configuration > Administrative Templates > Windows Components > Windows Update\n# Specify intranet Microsoft update service location: http:\u002F\u002Fwsus-server:8530\n```\n\n```yaml\n# Ansible: Configure patch repositories for Linux\n# roles\u002Fpatch-management\u002Ftasks\u002Fconfigure_repos.yml\n---\n- name: Configure RHEL patch repository\n  yum_repository:\n    name: rhel-patches\n    description: RHEL Security Patches\n    baseurl: https:\u002F\u002Fsatellite.corp.local\u002Fpulp\u002Frepos\u002Fpatches\n    gpgcheck: yes\n    gpgkey: file:\u002F\u002F\u002Fetc\u002Fpki\u002Frpm-gpg\u002FRPM-GPG-KEY-redhat-release\n    enabled: yes\n\n- name: Configure Ubuntu patch sources\n  apt_repository:\n    repo: \"deb https:\u002F\u002Fapt-mirror.corp.local\u002Fubuntu {{ ansible_distribution_release }}-security main\"\n    state: present\n  when: ansible_os_family == \"Debian\"\n```\n\n### Step 2: Automated Patch Assessment\n\n```python\n# patch_assessment.py - Correlate vulnerability scans with available patches\nimport subprocess\nimport platform\nimport json\n\ndef get_windows_pending_patches():\n    \"\"\"Query Windows Update for pending patches via PowerShell.\"\"\"\n    ps_cmd = \"\"\"\n    $Session = New-Object -ComObject Microsoft.Update.Session\n    $Searcher = $Session.CreateUpdateSearcher()\n    $Results = $Searcher.Search(\"IsInstalled=0 AND Type='Software'\")\n    $Results.Updates | ForEach-Object {\n        [PSCustomObject]@{\n            Title = $_.Title\n            KB = ($_.KBArticleIDs -join ',')\n            Severity = $_.MsrcSeverity\n            Size = [math]::Round($_.MaxDownloadSize \u002F 1MB, 2)\n            Published = $_.LastDeploymentChangeTime.ToString('yyyy-MM-dd')\n            CVE = ($_.CveIDs -join ',')\n        }\n    } | ConvertTo-Json\n    \"\"\"\n    result = subprocess.run(\n        [\"powershell\", \"-Command\", ps_cmd],\n        capture_output=True, text=True, timeout=120\n    )\n    return json.loads(result.stdout) if result.stdout.strip() else []\n\ndef get_linux_pending_patches():\n    \"\"\"Query package manager for available security updates.\"\"\"\n    if platform.system() != \"Linux\":\n        return []\n\n    # Try apt (Debian\u002FUbuntu)\n    try:\n        result = subprocess.run(\n            [\"apt\", \"list\", \"--upgradable\"],\n            capture_output=True, text=True, timeout=60\n        )\n        packages = []\n        for line in result.stdout.strip().split(\"\\n\")[1:]:\n            if line:\n                parts = line.split(\"\u002F\")\n                packages.append({\n                    \"package\": parts[0],\n                    \"available_version\": parts[1].split()[0] if len(parts) > 1 else \"\",\n                    \"source\": \"apt\"\n                })\n        return packages\n    except FileNotFoundError:\n        pass\n\n    # Try yum\u002Fdnf (RHEL\u002FCentOS)\n    try:\n        result = subprocess.run(\n            [\"dnf\", \"updateinfo\", \"list\", \"security\", \"--available\"],\n            capture_output=True, text=True, timeout=60\n        )\n        packages = []\n        for line in result.stdout.strip().split(\"\\n\"):\n            parts = line.split()\n            if len(parts) >= 3:\n                packages.append({\n                    \"advisory\": parts[0],\n                    \"severity\": parts[1],\n                    \"package\": parts[2],\n                    \"source\": \"dnf\"\n                })\n        return packages\n    except FileNotFoundError:\n        return []\n```\n\n### Step 3: Patch Testing Automation\n\n```yaml\n# Ansible playbook: test_patches.yml\n---\n- name: Test Patches in Lab Environment\n  hosts: test_servers\n  become: yes\n  vars:\n    rollback_snapshot: \"pre-patch-{{ ansible_date_time.date }}\"\n\n  tasks:\n    - name: Create VM snapshot before patching\n      community.vmware.vmware_guest_snapshot:\n        hostname: \"{{ vcenter_host }}\"\n        username: \"{{ vcenter_user }}\"\n        password: \"{{ vcenter_pass }}\"\n        datacenter: \"{{ datacenter }}\"\n        name: \"{{ inventory_hostname }}\"\n        snapshot_name: \"{{ rollback_snapshot }}\"\n        state: present\n      delegate_to: localhost\n\n    - name: Apply security patches (RHEL\u002FCentOS)\n      dnf:\n        name: \"*\"\n        state: latest\n        security: yes\n        update_cache: yes\n      when: ansible_os_family == \"RedHat\"\n      register: patch_result\n\n    - name: Apply security patches (Ubuntu\u002FDebian)\n      apt:\n        upgrade: dist\n        update_cache: yes\n        only_upgrade: yes\n      when: ansible_os_family == \"Debian\"\n      register: patch_result\n\n    - name: Reboot if required\n      reboot:\n        reboot_timeout: 600\n        msg: \"Rebooting for patch installation\"\n      when: patch_result.changed\n\n    - name: Run post-patch validation\n      include_tasks: validate_services.yml\n\n    - name: Report patch results\n      debug:\n        msg: \"Patching {{ 'succeeded' if patch_result.changed else 'no updates' }} on {{ inventory_hostname }}\"\n```\n\n### Step 4: Production Deployment\n\n```yaml\n# deploy_patches.yml - Phased production rollout\n---\n- name: Ring 1 - IT Early Adopters\n  hosts: ring1_hosts\n  serial: \"25%\"\n  max_fail_percentage: 10\n  become: yes\n  tasks:\n    - import_tasks: apply_patches.yml\n    - import_tasks: validate_services.yml\n    - name: Wait for soak period\n      pause:\n        hours: 48\n      run_once: true\n\n- name: Ring 2 - Business Pilot\n  hosts: ring2_hosts\n  serial: \"20%\"\n  max_fail_percentage: 5\n  become: yes\n  tasks:\n    - import_tasks: apply_patches.yml\n    - import_tasks: validate_services.yml\n\n- name: Ring 3 - General Deployment\n  hosts: ring3_hosts\n  serial: \"10%\"\n  max_fail_percentage: 3\n  become: yes\n  tasks:\n    - import_tasks: apply_patches.yml\n    - import_tasks: validate_services.yml\n```\n\n### Step 5: Verification and Reporting\n\nRun a post-patch vulnerability scan to confirm patch installation:\n```bash\n# Trigger post-patch verification scan\ncurl -k -X POST \"https:\u002F\u002Fnessus:8834\u002Fscans\u002F$VERIFY_SCAN_ID\u002Flaunch\" \\\n  -H \"X-Cookie: token=$TOKEN\"\n\n# Compare pre-patch and post-patch results\n# Expecting reduction in vulnerabilities matching deployed patches\n```\n\n## Patch Management SLAs\n| Severity | SLA (Internet-Facing) | SLA (Internal) | SLA (Air-Gapped) |\n|----------|----------------------|----------------|-------------------|\n| Critical (CVSS 9+) | 48 hours | 7 days | 14 days |\n| High (CVSS 7-8.9) | 7 days | 14 days | 30 days |\n| Medium (CVSS 4-6.9) | 30 days | 30 days | 60 days |\n| Low (CVSS 0.1-3.9) | 90 days | 90 days | 90 days |\n\n## Best Practices\n1. Maintain current asset inventory to ensure complete patch coverage\n2. Test all patches in a non-production environment before deployment\n3. Use phased rollouts with automatic rollback capabilities\n4. Coordinate patch windows with change management process\n5. Track patch compliance metrics and report to leadership\n6. Automate where possible to reduce manual effort and human error\n7. Maintain exception documentation for systems that cannot be patched\n8. Include third-party application patching (not just OS patches)\n\n## Common Pitfalls\n- Patching only operating systems and ignoring third-party applications\n- No rollback plan if patches cause service disruption\n- Treating all patches with equal urgency (no risk-based prioritization)\n- Manual patch processes that cannot scale\n- No post-patch verification to confirm successful installation\n- Ignoring firmware and BIOS updates\n\n## Related Skills\n- prioritizing-vulnerabilities-with-cvss-scoring\n- implementing-vulnerability-remediation-sla\n- implementing-continuous-vulnerability-monitoring\n",{"name":5,"tags":44,"author":45,"domain":30,"license":15,"version":46,"nist_csf":47,"subdomain":36,"description":7,"mitre_attack":52},[36,33,34,35,38,37],"mahipal","1.0",[48,49,50,51],"ID.RA-01","ID.RA-02","ID.IM-02","ID.RA-06",[53,54,55],"T1190","T1203","T1068","main","54a798831d2266a3ca61ce68a7acb80b81160d57","skills\u002Fimplementing-patch-management-workflow",4414,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills","https:\u002F\u002Fmahipal.engineer\u002FAnthropic-Cybersecurity-Skills\u002F","https:\u002F\u002Fgithub.com\u002Fmukul975","Mahipal.engineer","🔐 Cybersecurity | 💻 Dev | 📷 Street Photographer\r\n🎓 MSc | 📚 Research & AI Security","2026-08-31 12:32:44",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add mukul975\u002FAnthropic-Cybersecurity-Skills --skill implementing-patch-management-workflow",{"tool":72,"command":73},"bunx","bunx skills add mukul975\u002FAnthropic-Cybersecurity-Skills --skill implementing-patch-management-workflow",{"tool":75,"command":76},"pnpm","pnpm dlx skills add mukul975\u002FAnthropic-Cybersecurity-Skills --skill implementing-patch-management-workflow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-patch-management-workflow\u002FSKILL.md",true,[80,86,91,97,101,105,111,115],{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"assets\u002Ftemplate.md","ASSET","资产文件",1164,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-patch-management-workflow\u002Fassets\u002Ftemplate.md",{"path":87,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":89,"sourceHtmlUrl":90},"LICENSE","许可证",11255,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-patch-management-workflow\u002FLICENSE",{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fapi-reference.md","REFERENCE","参考文档",4567,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-patch-management-workflow\u002Freferences\u002Fapi-reference.md",{"path":98,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fstandards.md",1499,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-patch-management-workflow\u002Freferences\u002Fstandards.md",{"path":102,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fworkflows.md",2455,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-patch-management-workflow\u002Freferences\u002Fworkflows.md",{"path":106,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":109,"sourceHtmlUrl":110},"scripts\u002Fagent.py","SCRIPT","脚本",9788,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-patch-management-workflow\u002Fscripts\u002Fagent.py",{"path":112,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":113,"sourceHtmlUrl":114},"scripts\u002Fprocess.py",14037,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fimplementing-patch-management-workflow\u002Fscripts\u002Fprocess.py",{"path":116,"resourceType":117,"resourceTypeDesc":118,"sizeBytes":119,"sourceHtmlUrl":120},"sections","OTHER","其他",63,"https:\u002F\u002Fgithub.com\u002Fnoirelab\u002Flinux-setup\u002Fblob\u002Fmain\u002Fconfigs\u002Fcommon\u002Fclaude\u002Fskills\u002Fplan-devex-review\u002Fsections",[122,149,173,197,223,247],{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":129,"publishedAt":39},"01M6AGDM3HJXTKXX15ZZ0ZVCJ3","verifying-build-provenance-with-slsa-sigstore","Verifies artifact signatures and SLSA provenance using Sigstore's cosign (verify, verify-attestation, verify-blob-attestation) and slsa-verifier (verify-artifact), enforcing keyless OIDC builder identity and source repo against SLSA Build levels. Use in CI\u002FCD before deploying artifacts, when consuming third-party attestations, establishing a SLSA Build L3 pipeline, or confirming provenance during incident response or admission control.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fverifying-build-provenance-with-slsa-sigstore\u002FSKILL.md",[128],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[130,131,132,133,134,30,135,136,137,138,139,140,141,142,143,144,145,146,147,148],"sigstore","provenance","slsa","verifying build provenance with slsa sigstore","security","incident response","identity","pr","code","artifacts","ci","supply-chain","pipeline","supply-chain-security","t1195","attestation","code-signing","cosign","keyless",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":156,"publishedAt":39},"01M6AGDGBPWYVZ2F11GFKJ4HZ9","validating-tpm-measured-boot-attestation","Verifies TPM 2.0 measured-boot integrity and remote attestation with tpm2-tools -- reading PCRs (tpm2_pcrread), replaying the boot event log, generating and checking signed quotes (tpm2_quote\u002Ftpm2_checkquote), and sealing secrets to a PCR policy. Use to confirm a system booted trusted firmware\u002Fkernel for Zero Trust device posture, detect boot-chain tampering via PCR drift, or build a golden-value baseline for fleet attestation.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fvalidating-tpm-measured-boot-attestation\u002FSKILL.md",[155],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[157,145,158,159,134,160,30,137,161,162,163,164,165,166,167,168,169,170,171,172],"boot","TPM","validating tpm measured boot attestation","policy","verification","ZeRO","firmware","Tools","measured-boot","PCR","integrity","secrets","remote-attestation","tpm2-tools","integrity-verification","trusted-computing",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":181,"publishedAt":39},"01M6AGDCW0Y4FXZ3362GT1941M","validating-backup-integrity-for-recovery","Validates backup integrity through cryptographic hash verification, automated restore testing, corruption detection, and recoverability checks to confirm backups are reliable for disaster recovery and ransomware response. Use before relying on backups for recovery, when building post-backup validation pipelines, auditing backup infrastructure for compliance, or checking immutable\u002Fair-gapped backups for silent corruption or tampering.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fvalidating-backup-integrity-for-recovery\u002FSKILL.md",[179,180],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[167,182,183,184,29,30,32,185,161,186,187,188,189,190,191,192,193,194,195,196],"backup","recovery","validating backup integrity for recovery","validation","compliance","hash-verification","incident-response","ransomware","cryptocurrency","detection","t1078","t1490","immutable","disaster-recovery","restore-testing",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":204,"publishedAt":39},"01M6AGD9GBG2KZ336AE763J3WH","triaging-windows-with-kape","Runs KAPE (Kroll Artifact Parser and Extractor) to collect targeted forensic artifacts (registry hives, $MFT, event logs, prefetch, browser data) via Targets and parse them with Modules wrapping Eric Zimmerman's EZ Tools (PECmd, MFTECmd, RECmd). Use during early incident containment\u002Ftriage when full disk imaging is impractical but a defensible, parseable Windows artifact set is needed quickly, including at-scale remote collection.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftriaging-windows-with-kape\u002FSKILL.md",[203],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[205,206,207,30,208,209,210,211,212,213,214,215,216,217,218,219,164,220,221,222],"windows","kape","triaging windows with kape","registry","browser","logs","windows-forensics","dfir","mft","mftecmd","data","prefetch","eric-zimmerman","digital-forensics","SET","collection","pecmd","artifact-collection",{"skillNo":224,"name":225,"nameZh":6,"description":226,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":227,"categories":228,"keywords":230,"publishedAt":39},"01M6AGD5PW5J4EVZM958WD74ZQ","triaging-vulnerabilities-with-ssvc-framework","Triages and prioritizes vulnerabilities with CISA's Stakeholder-Specific Vulnerability Categorization (SSVC) decision tree, weighing exploitation status (via the CISA KEV catalog and FIRST EPSS API), technical impact, automatability, and mission prevalence to output Track\u002FTrack*\u002FAttend\u002FAct decisions. Use when prioritizing vulnerability scan results (OpenVAS, Nessus, Qualys) for remediation planning beyond raw CVSS scores.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftriaging-vulnerabilities-with-ssvc-framework\u002FSKILL.md",[229],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[31,231,232,30,233,234,235,36,236,237,238,239,240,241,37,242,243,244,245,246],"framework","triaging vulnerabilities with ssvc framework","status","planning","CISA","risk-management","nessus","qualys","openvas","cvss","remediation","vulnerability","api","prioritization","ssvc","decision-tree",{"skillNo":248,"name":249,"nameZh":6,"description":250,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":251,"categories":252,"keywords":254,"publishedAt":39},"01M6AGD24TTQQM4CXG69E3B9TJ","triaging-security-incident","Performs initial triage of security incidents using the NIST SP 800-61r3 and SANS PICERL frameworks, classifying incident type, assigning priority by business impact, and routing to the appropriate response team. Use when a SIEM\u002FEDR alert needs human classification, concurrent alerts must be prioritized, or a user report or threat-intel IOC match requires initial incident categorization.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftriaging-security-incident\u002FSKILL.md",[253],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[134,255,30,256,257,258,259,260,261,262,263,192,264,193,265,266,267,268,269,270],"triaging security incident","siem","file","ioc","soc","NIST-800-61","NIST","severity","edr","execution","analysis","classification","severity-classification","incident-triage","SANS-PICERL","SOC-operations"]