Skip to content
This repository was archived by the owner on Jun 15, 2026. It is now read-only.

Commit 3b37b08

Browse files
authored
Update index.html
1 parent 9e5b5de commit 3b37b08

1 file changed

Lines changed: 22 additions & 4 deletions

File tree

index.html

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,15 @@ <h3>✨ What it does</h3>
260260
</div>
261261
<div class="feature-card">
262262
<div style="font-size: 2rem; margin-bottom: 10px;">🩺</div>
263-
<p><strong>Doctor + audit</strong> — checks perms, HTTPS, broken links, snapshot integrity, and formula quality</p>
263+
<p><strong>Doctor + audit</strong> — checks perms, HTTPS, broken links, snapshot integrity, cask notarization, and formula quality</p>
264+
</div>
265+
<div class="feature-card">
266+
<div style="font-size: 2rem; margin-bottom: 10px;">🛡️</div>
267+
<p><strong>Hardened command execution</strong> — POSIX shell quoting via <a href="https://pkg.go.dev/al.essio.dev/pkg/shellescape">shellescape</a>, <code>--</code> end-of-options on all external commands, XML-safe plists, systemd specifier escaping</p>
268+
</div>
269+
<div class="feature-card">
270+
<div style="font-size: 2rem; margin-bottom: 10px;">🧱</div>
271+
<p><strong>Zip Slip protection</strong> — archive extraction validates symlink indirection to prevent writes outside the destination directory</p>
264272
</div>
265273
<div class="feature-card">
266274
<div style="font-size: 2rem; margin-bottom: 10px;">🐚</div>
@@ -271,9 +279,15 @@ <h3>✨ What it does</h3>
271279

272280
<section id="install">
273281
<h3>🚀 Getting Started</h3>
274-
<p><strong>Prerequisites:</strong> Go 1.26+, <code>git</code>, and a dream.</p>
275282

276-
<h4>1. Build from source</h4>
283+
<h4>1. Get grew</h4>
284+
<p>The fastest way — downloads the latest release binary with SHA256 verification:</p>
285+
<pre><code>go install github.com/homegrew/grew/tools/getgrew@latest
286+
getgrew
287+
sudo ./grew setup</code></pre>
288+
289+
<h4>Or build from source</h4>
290+
<p><strong>Prerequisites:</strong> Go 1.26+, <code>git</code>, and a dream.</p>
277291
<pre><code>git clone https://github.com/homegrew/grew.git
278292
cd grew
279293
make build # or: go generate ./internal/... && go build -o grew</code></pre>
@@ -399,6 +413,10 @@ <h3>🔐 Security: grew vs Homebrew</h3>
399413
<tr><td><strong>Lockfile</strong></td><td>Full dependency tree with hashes</td><td>None</td></tr>
400414
<tr><td><strong>Integrity check</strong></td><td><code>grew verify</code> + <code>grew doctor</code> snapshot check</td><td>None</td></tr>
401415
<tr><td><strong>HTTPS enforcement</strong></td><td>At parse time — HTTP URLs rejected before download</td><td>At download time</td></tr>
416+
<tr><td><strong>Path traversal protection</strong></td><td>Validated at cellar, linker, loader, and archive extraction layers</td><td>Partial</td></tr>
417+
<tr><td><strong>Shell injection prevention</strong></td><td>POSIX shell quoting via <a href="https://pkg.go.dev/al.essio.dev/pkg/shellescape">shellescape</a> for sandbox scripts; systemd and launchd values properly escaped</td><td>N/A</td></tr>
418+
<tr><td><strong>Zip Slip protection</strong></td><td>Symlink indirection attacks blocked during tar/zip extraction</td><td>Partial</td></tr>
419+
<tr><td><strong>Command argument hardening</strong></td><td><code>--</code> end-of-options on all external commands (<code>git</code>, <code>systemctl</code>, <code>launchctl</code>, <code>hdiutil</code>, <code>tar</code>, etc.)</td><td>Not consistently applied</td></tr>
402420
</tbody>
403421
</table>
404422
<p><strong>Gradual rollout:</strong> signature verification doesn't block installs until you add keys to <code>etc/trusted-keys</code>. Tap verification is opt-in via <code>HOMEGREW_TAP_VERIFY</code>. Adopt security features at your own pace.</p>
@@ -410,7 +428,7 @@ <h4 style="margin-top: 0;">🛠️ Development</h4>
410428
<pre style="padding: 10px; font-size: 0.8rem;"><code>make check # go test -v -race ./...
411429
make build # go generate + go build
412430
make lint # golangci-lint</code></pre>
413-
<p><strong>Project layout:</strong> all packages under <code>internal/</code> cmd, cellar, formula, cask, linker, depgraph, downloader, tap, sandbox, signing, snapshot, lockfile, service, config, validation, version.</p>
431+
<p><strong>Project layout:</strong> packages under <code>internal/</code> (cmd, cellar, formula, cask, linker, depgraph, downloader, tap, sandbox, signing, snapshot, lockfile, service, config, version) and <code>pkg/</code> (validation).</p>
414432
</div>
415433

416434
<div>

0 commit comments

Comments
 (0)