Skip to content

MLE-29893: Add security-vulnerability-triage copilot skill#606

Open
abika5 wants to merge 1 commit into
develop-11.3from
add-security-vulnerability-triage-skill
Open

MLE-29893: Add security-vulnerability-triage copilot skill#606
abika5 wants to merge 1 commit into
develop-11.3from
add-security-vulnerability-triage-skill

Conversation

@abika5
Copy link
Copy Markdown
Contributor

@abika5 abika5 commented May 27, 2026

Jira Ticket: MLE-29893

Type of Change:

  • New feature
  • Bug fix
  • Refactor / code improvement
  • Library upgrade
  • Test additions or updates
  • Documentation updates
  • Build / CI changes

Description:

Adds a new GitHub Copilot CLI skill at .github/copilot/skills/security-vulnerability-triage/SKILL.md that codifies the process for triaging and rescoring security vulnerability tickets (CVE, BDSA, GHSA / Dependabot) on MLCP. Previously this process lived only as ad-hoc personal Copilot instructions; moving it into the repo means anyone working on MLCP with Copilot CLI gets the same discipline, and lessons learned from past rounds (e.g. the Apache Thrift batch MLE-29365 – MLE-29372) are preserved.

Approach / Implementation Notes:

  • Single SKILL.md file with frontmatter (name, description) so Copilot CLI auto-discovers it when the user mentions a CVE/BDSA ID or asks to assess vulnerability impact.
  • Invocation: user supplies a Jira bug ID (MLE-*****). Step 1 validates the ticket is actually a security vulnerability (Component, label, title prefix, advisory ID in description, or CVSS score set) before proceeding.
  • 9-step workflow: validate → fetch advisory → identify component → trace dep chain → reachability (javap -c) → draft comment → user review → post → update ticket (title, Calculated CVSS, priority, transition to In Review).
  • 7 ground rules covering BDSA↔CVE mapping, language-binding exclusion, classpath vs runtime, comment review discipline, Jira field-update verification, and scope (security tickets only).
  • Includes a Jira analysis comment template and 6 case studies (libthrift transitive trap, BDSA-score-vs-scope confusion, eager vs lazy class loading, Jira silent field failures, BDSA bundling multi-year CVEs, review discipline).

References:

Build Validation:

  • Successful compilation (N/A — documentation only)
  • No new compiler warnings introduced (N/A — documentation only)

Tests Covered:

  • Unit tests
  • Regression suite (run locally)
  • End-to-end pipeline test (optional)
  • Manual validation
  • Not applicable (explain why)

The change adds a single documentation artifact (SKILL.md) that Copilot CLI loads at runtime. No code paths, build outputs, or runtime behavior are affected.

Additional Notes:

  • The skill lives under .github/copilot/skills/ so it's co-located with other GitHub-tooling config and travels with the repo.
  • Users get the skill automatically when running Copilot CLI from this repo; no symlink setup needed.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new GitHub Copilot CLI skill document to standardize how MLCP security vulnerability tickets (CVE/BDSA/GHSA/Dependabot) are triaged and rescored, capturing a repeatable workflow and lessons learned so the process is consistent across engineers.

Changes:

  • Introduces a new Copilot CLI skill (security-vulnerability-triage) with YAML frontmatter for auto-discovery.
  • Documents a 9-step triage/rescore workflow, including dependency-chain tracing and Java reachability analysis guidance.
  • Provides a Jira analysis comment template plus case studies/ground rules to reduce recurring triage errors.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/copilot/skills/security-vulnerability-triage/SKILL.md Outdated
Comment thread .github/copilot/skills/security-vulnerability-triage/SKILL.md Outdated
Comment thread .github/copilot/skills/security-vulnerability-triage/SKILL.md Outdated
Comment thread .github/copilot/skills/security-vulnerability-triage/SKILL.md Outdated
@abika5 abika5 force-pushed the add-security-vulnerability-triage-skill branch from a62a34f to 7c84204 Compare May 27, 2026 00:53
**All you need:** a Jira bug ID (format `MLE-*****`) that references a CVE, BDSA, or GitHub Dependabot alert.

- **CVE ticket:** Just the Jira bug ID (e.g. `MLE-29365`). The skill will ask before fetching the advisory from NVD.
- **BDSA ticket:** Paste the BDSA text along with the Jira bug ID (BDSAs are private and can't be fetched).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is incorrect, we can setup the connection between copilot and BD simply by providing the api token. This skill should ask for the BD api token and make sure to not persist it anywhere


## How to invoke

**All you need:** a Jira bug ID (format `MLE-*****`) that references a CVE, BDSA, or GitHub Dependabot alert.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think instead of keep repeating jira bug id in this section, probably ask the user to provide a jira id at first, check whether necessary info is listed in the jira ticket, if not, stop and ask the user.

@yunzvanessa
Copy link
Copy Markdown
Contributor

yunzvanessa commented May 27, 2026

General comments:

I think we need some guidance on rescoring:

  • Copilot should use CVSS 3.1 from first org.
  • Mapping between calculated CVSS and priority.
  • Ask user to review before changing calculated CVSS and priority.
  • Final check on whether required Jira fields are all filled.
  • The skill is slightly verbose, consider using deduplication to trim it down.

@abika5 Thank you for spending time on this skill! This is very helpful.

If valid, capture: BDSA/CVE/GHSA ID, current CVSS score and severity, affected library + version, project key, component.

### 2. Get the advisory text
Ask the user to paste the Black Duck advisory, or fetch from NVD (`https://nvd.nist.gov/vuln/detail/<CVE-ID>`). **Do not** infer the vulnerable component from the CVE ID alone or from search engine summaries.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can the user connect to blackduck using token and copilot get the advisory from blackduck?

### 4. Trace the dependency chain
Find how the vulnerable library enters the product's classpath.
- Check **explicit** deps in `pom.xml` (root and module poms).
- Check **transitive** sources by inspecting direct dependency POMs in the Maven cache (`~/.m2/repository/...`).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does user need to keep cache clean before running this workflow? Or can user specify a different Maven cache folder?


## The 9-step process

Follow these steps in order. Do not skip steps.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Which step recalculates the cvss score?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants