optional-skills/security/oss-forensics/templates/forensic-report.md
Instructions: Fill in all sections. Every factual claim must cite at least one
[EV-XXXX]evidence ID. Remove placeholder text and instruction notes before finalizing. Redact all secrets to[REDACTED].
Target Repository: OWNER/REPO
Investigation Period: YYYY-MM-DD to YYYY-MM-DD
Verdict: <!-- Compromised / Clean / Inconclusive -->
Confidence Level: <!-- High / Medium / Low -->
Report Date: YYYY-MM-DD
Investigator: <!-- Agent session ID or analyst name -->
All timestamps in UTC. Each event must cite at least one evidence ID.
| Timestamp (UTC) | Event | Evidence IDs | Source |
|---|---|---|---|
| YYYY-MM-DDTHH:MM:SSZ | Describe event | [EV-XXXX] | git / gh_api / gh_archive / web_archive |
Status: <!-- VALIDATED / INCONCLUSIVE / REJECTED -->
Claim: Full statement of the hypothesis.
Supporting Evidence:
Counter-Evidence Considered: What might disprove this, and why it was ruled out or not.
Confidence: <!-- High / Medium / Low, and why -->
| Type | Value | Status | Evidence |
|---|---|---|---|
| COMMIT_SHA | abc123... | Confirmed malicious | [EV-XXXX] |
| ACTOR_USERNAME | handle | Suspected compromised | [EV-YYYY] |
| FILE_PATH | src/evil.js | Confirmed malicious | [EV-ZZZZ] |
| DOMAIN | evil-cdn.io | Confirmed C2 | [EV-WWWW] |
| Version / Tag | Published | Contains Malicious Code | Evidence |
|---|---|---|---|
v1.2.3 | YYYY-MM-DD | Yes / No / Unknown | [EV-XXXX] |
<!-- Paste the Markdown table output from the evidence-store.py export command here -->Generated by:
python3 SKILL_DIR/scripts/evidence-store.py --store evidence.json export
| ID | Type | Source | Actor | Verification | Event Timestamp | URL |
|---|---|---|---|---|---|---|
| EV-0001 |
<!-- Paste the chain of custody section from the export output here -->Generated by:
python3 SKILL_DIR/scripts/evidence-store.py --store evidence.json export
| Evidence ID | Action | Timestamp | Source |
|---|---|---|---|
| EV-0001 | add |
Summarize findings from local git analysis: dangling commits, reflog anomalies, unsigned commits, binary additions, etc.
Summarize findings from GitHub REST API: deleted PRs/issues, contributor changes, release anomalies, etc.
Summarize findings from BigQuery: force-push events, delete events, workflow anomalies, member changes, etc. Note: If BigQuery was unavailable, state this explicitly.
Summarize findings from archive.org: recovered deleted pages, historical content differences, etc.
Summarize enrichment results: WHOIS data for domains, recovered commit content, actor account analysis, etc.
main/master (require code review, disallow force-push)evidence.json (SHA-256 integrity: run python3 SKILL_DIR/scripts/evidence-store.py --store evidence.json verify)