Commit 2be9954
authored
security: hash-pin publish.yml TestPyPI installs (#299)
* security: hash-pin publish.yml TestPyPI installs, add smithery.yaml
Closes Scorecard Pinned-Dependencies alerts #49 (real-PyPI runtime deps,
now pinned via uv export's own hash resolution) and #50 (the mcpg
install from TestPyPI, now pinned to the sha256 of the wheel this same
workflow run built - TestPyPI serves that identical file back, so this
also catches upload-path tampering, not just dependency confusion).
Verified locally: a fresh venv installs the full hashed dependency set
cleanly via pip's hash-checking mode.
Also adds smithery.yaml (verification hash for the Smithery registry
listing), previously untracked.
Entire-Checkpoint: 30082aaf6e70
* security: harden hash-pin script per review, add explicit CodeQL workflow
Sourcery review on #299 flagged two real gaps in the TestPyPI hash-pin
step: the wheel glob could silently match >1 file, and the extracted
hash wasn't validated before being written into the pin file. Both now
fail loudly instead of proceeding on bad input.
Also closes Scorecard SAST alert #54: CodeQL was running via GitHub's
"default setup", which Scorecard's static SAST check can't see (it only
recognizes an explicit codeql-action workflow). Switched to an explicit
.github/workflows/codeql.yml (python + actions, matching this repo's
actual content) and disabled default setup via the API to avoid the two
configurations conflicting.
Entire-Checkpoint: 8dc67c1349b01 parent 03c7f07 commit 2be9954
3 files changed
Lines changed: 85 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
82 | 86 | | |
83 | 87 | | |
84 | 88 | | |
85 | 89 | | |
86 | 90 | | |
87 | | - | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
88 | 95 | | |
89 | | - | |
| 96 | + | |
90 | 97 | | |
91 | 98 | | |
92 | 99 | | |
| |||
110 | 117 | | |
111 | 118 | | |
112 | 119 | | |
113 | | - | |
| 120 | + | |
114 | 121 | | |
115 | 122 | | |
116 | | - | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
117 | 128 | | |
118 | 129 | | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
119 | 142 | | |
120 | 143 | | |
121 | 144 | | |
122 | | - | |
| 145 | + | |
123 | 146 | | |
124 | 147 | | |
125 | 148 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
0 commit comments