From 52c6e1c89f919d4a130a58ce12a6b9cee23508a9 Mon Sep 17 00:00:00 2001 From: Arina Nikolaeva Date: Fri, 12 Jun 2026 12:15:37 +0300 Subject: [PATCH 1/3] test --- submissions/lab03.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 submissions/lab03.md diff --git a/submissions/lab03.md b/submissions/lab03.md new file mode 100644 index 000000000..7dcd6e722 --- /dev/null +++ b/submissions/lab03.md @@ -0,0 +1 @@ +lab3 From 4095d81743d81efedf497f1f134d4c64db4e153b Mon Sep 17 00:00:00 2001 From: Arina Nikolaeva Date: Fri, 12 Jun 2026 12:38:31 +0300 Subject: [PATCH 2/3] 1st attempt --- .pre-commit-config.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..2aca75c60 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,13 @@ +default_stages: [pre-commit] + +repos: + - repo: https://github.com/gitleaks/gitleaks + rev: v8.30.1 + hooks: + - id: gitleaks + + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: detect-private-key + - id: check-added-large-files From c397574965e4b719a6648f88706355d56532f4f1 Mon Sep 17 00:00:00 2001 From: Arina Nikolaeva Date: Fri, 12 Jun 2026 14:34:50 +0300 Subject: [PATCH 3/3] 3rd attempt --- .gitleaksignore | 1 + submissions/lab03-verified.png | Bin 0 -> 47546 bytes submissions/lab03.md | 100 ++++++++++++++++++++++++++++++++- 3 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 .gitleaksignore create mode 100644 submissions/lab03-verified.png diff --git a/.gitleaksignore b/.gitleaksignore new file mode 100644 index 000000000..301999d12 --- /dev/null +++ b/.gitleaksignore @@ -0,0 +1 @@ +submissions/lab03.md:generic-api-key:12 diff --git a/submissions/lab03-verified.png b/submissions/lab03-verified.png new file mode 100644 index 0000000000000000000000000000000000000000..a415a5d3348795719bc7200b6d811d3b7278b588 GIT binary patch literal 47546 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 literal 0 HcmV?d00001 diff --git a/submissions/lab03.md b/submissions/lab03.md index 7dcd6e722..85b4c9221 100644 --- a/submissions/lab03.md +++ b/submissions/lab03.md @@ -1 +1,99 @@ -lab3 +# Lab 3 — Submission + +## Task 1: SSH Commit Signing + +### Local configuration +- `git config --global gpg.format` → +- `git config --global user.signingkey` → +- `git config --global commit.gpgsign` → + +### Local verification +Output of `git log --show-signature -1`:commit 1dc66e3ae07fedd5c49dc6f039abb4c686c2ab5f (HEAD -> lab03) +Good "git" signature for a.nikolaeva@innopolis.university with ED25519 key SHA256:8GSxlvdecN00j5Mus9SElUSDbK6BYcUOIagqME2SBsA +Author: Arina Nikolaeva a.nikolaeva@innopolis.university +Date: Fri Jun 12 12:15:37 2026 +0300 + +### GitHub verification +- Direct link to your most recent commit on GitHub: +- Screenshot of the Verified badge: + +### One-paragraph reflection (2-3 sentences) +What STRIDE-R (Repudiation) scenario would a forged-author commit enable in a real +team's codebase? How does the Verified badge make that attack visible? +Without signed commits, anyone with push access or someone who steals push access can author a commit under any name and email they want, since Git takes the author field on trust. A forged-author commit could quietly slip in a backdoor or a secret while looking like it came from a trusted maintainer, and on review the team would have no way to repudiate it: that is the STRIDE-R scenario. The Verified badge makes the attack visible because GitHub re-checks every commit against the actual signing keys uploaded by the named author -> a forged commit either shows up as unverified. + +## Task 2: Pre-commit + gitleaks + +### `.pre-commit-config.yaml` (paste the full content) +```yaml +default_stages: [pre-commit] + +repos: + - repo: https://github.com/gitleaks/gitleaks + rev: v8.30.1 + hooks: + - id: gitleaks + + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: detect-private-key + - id: check-added-large-files +``` +### `pre-commit install output` (paste the full content) +pre-commit installed at .git/hooks/pre-commit + +### `The blocked commit` (paste the full content) +Detect hardcoded secrets.................................................Failed + +hook id: gitleaks +exit code: 1 +gitleaks + +Finding: GH_PAT=REDACTED +Secret: REDACTED +RuleID: github-pat +Entropy: 4.143943 +File: submissions/leak-attempt.txt +Line: 2 +Fingerprint: submissions/leak-attempt.txt:github-pat:2 +12:39PM INF 0 commits scanned. +12:39PM INF scanned ~101 bytes (101 bytes) in 31.7ms +12:39PM WRN leaks found: 1 +detect private key.......................................................Passed +check for added large files..............................................Passed + +Tune-out exercise + +Suppose a teammate insists they need to commit AKIA* strings because they're documentation examples in docs/. Briefly describe two approaches: +Inline allowlist — [allowlist] block in .gitleaks.toml. When is this OK? +When the exception is narrowly scoped to one or two known-safe strings and the entry is reviewed in the diff like any other change. Because the allowlist is matched on a specific value or regex, anything outside that exact pattern still gets flagged, so the blast radius of the exception stays tiny. +Path exclusion — paths: [docs/] in .gitleaks.toml. When is this risky? (2-3 sentences each. No correct answer; both have tradeoffs.) +It is risky because it turns off scanning for the entire folder, not for a single string. The day someone moves real configuration into docs, the scanner stops protecting them and a real secret can land in the repo unnoticed. Path exclusions are sometimes the right call for generated fixtures, but they should be the last resort, not the default fix. + +## Bonus: History Rewrite + +### Before +<76884be (HEAD -> master) docs: add usage notes +afc0dfe feat: empty log +84dc162 feat: add config +606df6e init> +Output of `git log -p | grep -c 'ghp_'`: **2** + +### After +<1445bd9 (HEAD -> master) docs: add usage notes +733df56 feat: empty log +929ba4a feat: add config +606df6e init> +Output of `git log -p | grep -c 'ghp_'`: **0** +Output of `git log -p | grep -c 'REDACTED'`: **2** + +### The two-step pattern in real life +1. `git filter-repo --replace-text replacements.txt` — rewrite locally +2. **** — what's the MANDATORY second step in a real incident? + (Hint: Lecture 3 slide 12 has this — it's the difference between cleanup and remediation.) + +### Two real-world gotchas you discovered (2 sentences each) +1. +`git filter-repo` refused to run with "this does not look like a fresh clone". It is a safety guard against destroying a working repo, and I had to add `--force` because it was a throwaway sandbox. In a real incident, the safer fix is to make a fresh clone first instead of using `--force` +2.