{"data":{"skill":{"slug":"k-dense-ai-exploratory-data-analysis","name":"exploratory-data-analysis","icon":"📦","repo":"https://github.com/K-Dense-AI/claude-scientific-skills/tree/main/scientific-skills/exploratory-data-analysis","status":"approved","author":"K-Dense-AI","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"7716d825-5423-4933-a69f-511fa7ba627e","skill_id":"3ced2778-9bc1-4041-85a8-dd41cf5a62b5","version":5,"content_hash":"a128b55b281df065d36b9843b98c1469","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":null,"manual_install_policy":null,"summary":"Static analysis reported many high-risk patterns, but targeted review found most command, sensitive-file, and weak-crypto alerts are markdown or scientific-format false positives. The remaining real risk is medium: the skill includes a Python analyzer that reads arbitrary caller-provided local files, writes reports to caller-provided paths, and documents some unsafe readers for specialized formats. Publish with clear warnings to run only on trusted files in a scoped workspace.","remediation":[],"risk_factor_evidence":[{"factor":"scripts","evidence":[{"file":"scripts/eda_analyzer.py","line_end":12,"line_start":1},{"file":"scripts/eda_analyzer.py","line_end":547,"line_start":517}]},{"factor":"filesystem","evidence":[{"file":"scripts/eda_analyzer.py","line_end":147,"line_start":136},{"file":"scripts/eda_analyzer.py","line_end":201,"line_start":194},{"file":"scripts/eda_analyzer.py","line_end":296,"line_start":295},{"file":"scripts/eda_analyzer.py","line_end":510,"line_start":507}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Broad Local File Access and Report Path Disclosure","locations":[{"file":"scripts/eda_analyzer.py","line_end":147,"line_start":136},{"file":"scripts/eda_analyzer.py","line_end":441,"line_start":440},{"file":"scripts/eda_analyzer.py","line_end":510,"line_start":507},{"file":"scripts/eda_analyzer.py","line_end":541,"line_start":525}],"confidence":0.82,"description":"The analyzer accepts a caller-provided filepath, reads local files for analysis, records the absolute path, and writes reports to a caller-provided output path. This is expected for an EDA tool, but it can expose local path details or overwrite files if used outside a scoped workspace.","confidence_reasoning":"The file read, absolute path reporting, and output write behavior are directly visible in the Python analyzer. The behavior appears functional rather than malicious, so the risk is contextual."},{"title":"Reference Guidance Mentions Unsafe Deserialization and Subprocess Tools","locations":[{"file":"references/chemistry_molecular_formats.md","line_end":582,"line_start":575},{"file":"references/spectroscopy_analytical_formats.md","line_end":188,"line_start":183},{"file":"references/proteomics_metabolomics_formats.md","line_end":498,"line_start":492},{"file":"references/microscopy_imaging_formats.md","line_end":400,"line_start":394}],"confidence":0.74,"description":"Several reference files list pickle-based formats or subprocess-backed tooling as possible readers. The executable analyzer does not perform these operations, but agents following the references could use unsafe deserialization or external tools on untrusted files.","confidence_reasoning":"The risky library guidance is present in documentation, but no matching execution path was found in scripts/eda_analyzer.py. This supports a medium documentation-driven risk, not a confirmed exploit."}],"low_findings":[{"title":"Static External Command Matches Are Markdown False Positives","locations":[{"file":"assets/report_template.md","line_end":150,"line_start":148},{"file":"assets/report_template.md","line_end":186,"line_start":180},{"file":"SKILL.md","line_end":123,"line_start":112},{"file":"references/bioinformatics_genomics_formats.md","line_end":14,"line_start":12}],"confidence":0.93,"description":"Many external command findings come from markdown backticks, code fences, or library examples. No subprocess, os.system, popen, exec, or eval execution path was found in the analyzer.","confidence_reasoning":"The cited locations are markdown examples or fenced report placeholders, not Ruby or shell execution. Targeted inspection found no executable command invocation in the Python analyzer."},{"title":"Static Sensitive-File Matches Are Scientific Format False Positives","locations":[{"file":"references/bioinformatics_genomics_formats.md","line_end":47,"line_start":40},{"file":"assets/report_template.md","line_end":98,"line_start":85},{"file":"scripts/eda_analyzer.py","line_end":58,"line_start":57}],"confidence":0.95,"description":"The SAM matches refer to Sequence Alignment/Map bioinformatics files and report placeholder text, not the Windows SAM credential database. No evidence found of credential harvesting or sensitive system database access.","confidence_reasoning":"The lines identify the .sam scientific alignment format and generic sampling placeholders. The semantic context clearly differs from Windows credential storage."},{"title":"Weak Cryptography Findings Are Mostly Format-Name Collisions","locations":[{"file":"SKILL.md","line_end":13,"line_start":1},{"file":"assets/report_template.md","line_end":66,"line_start":64},{"file":"references/general_scientific_formats.md","line_end":13,"line_start":7}],"confidence":0.9,"description":"The weak cryptography alerts appear to be triggered by scientific file extensions, words such as markdown, or checksum terminology. No cryptographic implementation or authentication logic was found in the reviewed executable code.","confidence_reasoning":"The cited material describes report text and scientific formats, not cryptographic choices. No evidence found of weak hashes used for security decisions."}],"dangerous_patterns":[{"title":"Caller-Controlled Output File Write","locations":[{"file":"scripts/eda_analyzer.py","line_end":510,"line_start":507}],"confidence":0.86,"description":"The analyzer writes the generated markdown report to output_path without path restrictions. This is useful, but risky in shared or privileged directories.","confidence_reasoning":"The write call is direct and the output path comes from CLI arguments. Risk depends on execution privileges and workspace boundaries."},{"title":"Absolute Local Path Included in Generated Reports","locations":[{"file":"scripts/eda_analyzer.py","line_end":144,"line_start":141},{"file":"scripts/eda_analyzer.py","line_end":441,"line_start":440}],"confidence":0.91,"description":"The analyzer stores file_path.absolute() and includes it in the markdown report. Reports can disclose local directory structure when shared.","confidence_reasoning":"The absolute path is explicitly captured and rendered into report text. This is a clear privacy concern, not evidence of malicious exfiltration."},{"title":"Reference Guidance Mentions Unsafe Deserialization and Subprocess Tools","locations":[{"file":"references/chemistry_molecular_formats.md","line_end":582,"line_start":575},{"file":"references/spectroscopy_analytical_formats.md","line_end":188,"line_start":183},{"file":"references/proteomics_metabolomics_formats.md","line_end":498,"line_start":492},{"file":"references/microscopy_imaging_formats.md","line_end":400,"line_start":394}],"confidence":0.74,"description":"Several reference files list pickle-based formats or subprocess-backed tooling as possible readers. The executable analyzer does not perform these operations, but agents following the references could use unsafe deserialization or external tools on untrusted files.","confidence_reasoning":"The risky library guidance is present in documentation, but no matching execution path was found in scripts/eda_analyzer.py. This supports a medium documentation-driven risk, not a confirmed exploit."}],"files_scanned":9,"total_lines":4813,"audit_model":"codex","audited_at":"2026-06-30T06:12:34.676+00:00","created_at":"2026-06-30T06:56:16.313501+00:00","static_findings":[],"finding_verdicts":[],"semantic_findings":[],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"canonical install advisories are incomplete"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":2,"capabilityReviewCount":1,"needsReviewCount":0,"falsePositiveCount":2,"agentAutoInstallPolicy":null,"manualInstallPolicy":null,"artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}