MLE-29893: Add security-vulnerability-triage copilot skill#606
Conversation
There was a problem hiding this comment.
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.
a62a34f to
7c84204
Compare
| **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). |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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.
|
General comments: I think we need some guidance on rescoring:
@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. |
There was a problem hiding this comment.
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/...`). |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
Which step recalculates the cvss score?
Jira Ticket: MLE-29893
Type of Change:
Description:
Adds a new GitHub Copilot CLI skill at
.github/copilot/skills/security-vulnerability-triage/SKILL.mdthat 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:
SKILL.mdfile with frontmatter (name,description) so Copilot CLI auto-discovers it when the user mentions a CVE/BDSA ID or asks to assess vulnerability impact.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.javap -c) → draft comment → user review → post → update ticket (title, Calculated CVSS, priority, transition to In Review).References:
Build Validation:
Tests Covered:
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:
.github/copilot/skills/so it's co-located with other GitHub-tooling config and travels with the repo.