From aed4260c77803618fbd27072cb967304f0a5fcb0 Mon Sep 17 00:00:00 2001 From: Ivan Smirnov Date: Mon, 9 Feb 2026 09:52:42 +0300 Subject: [PATCH 1/8] docs: added PR template --- .github/pull_request_template.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..b65a6540 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,9 @@ +# Goal +Submitting my homework for lab# + +# Changes +- Added submissionXX.md + +# Checklist +- [x] Task 1 done +- [x] Task 2 done \ No newline at end of file From 0b2b09ca57201843d7d57301cdeef8735770f85e Mon Sep 17 00:00:00 2001 From: Ivan Smirnov Date: Sun, 10 May 2026 18:06:01 +0300 Subject: [PATCH 2/8] docs: add commit signing summary --- labs/assets/image-1.png | Bin 0 -> 20354 bytes labs/assets/image.png | Bin 0 -> 8320 bytes labs/submission3.md | 17 +++++++++++++++++ 3 files changed, 17 insertions(+) create mode 100644 labs/assets/image-1.png create mode 100644 labs/assets/image.png create mode 100644 labs/submission3.md diff --git a/labs/assets/image-1.png b/labs/assets/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..cc81e9fd8d9331eba39840bc87806fc37084b714 GIT binary patch literal 20354 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⋘E*J@&7*AZvl90V9_I*|2VKFkH^Ia}+ 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�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 Date: Sun, 10 May 2026 18:14:34 +0300 Subject: [PATCH 3/8] docs: add fake aws key --- labs/example.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 labs/example.txt diff --git a/labs/example.txt b/labs/example.txt new file mode 100644 index 00000000..ee1d59bb --- /dev/null +++ b/labs/example.txt @@ -0,0 +1,2 @@ +Access Key Id: AKIAIOSFODNN7EXAMPLE +Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \ No newline at end of file From 6035da3717d637fa6d2fb8ee13456e65d74b3a2d Mon Sep 17 00:00:00 2001 From: Ivan Smirnov Date: Sun, 10 May 2026 18:15:06 +0300 Subject: [PATCH 4/8] Revert "docs: add fake aws key" This reverts commit 7f7c160f40e57311b7de3e8bcd871c90334d3f02. --- labs/example.txt | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 labs/example.txt diff --git a/labs/example.txt b/labs/example.txt deleted file mode 100644 index ee1d59bb..00000000 --- a/labs/example.txt +++ /dev/null @@ -1,2 +0,0 @@ -Access Key Id: AKIAIOSFODNN7EXAMPLE -Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \ No newline at end of file From 117ede8245d9e96235a13fbb6c5eae39fa6885f0 Mon Sep 17 00:00:00 2001 From: Ivan Smirnov Date: Sun, 10 May 2026 18:23:24 +0300 Subject: [PATCH 5/8] docs: add fake aws key --- labs/secrets.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 labs/secrets.txt diff --git a/labs/secrets.txt b/labs/secrets.txt new file mode 100644 index 00000000..1c36f68e --- /dev/null +++ b/labs/secrets.txt @@ -0,0 +1,2 @@ +access_key_id=AKIAIOSFODNN7EXAMPLE +secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \ No newline at end of file From 9cc587e081f4e12ac6028045315c3308d25118ff Mon Sep 17 00:00:00 2001 From: Ivan Smirnov Date: Sun, 10 May 2026 18:24:23 +0300 Subject: [PATCH 6/8] Revert "docs: add fake aws key" This reverts commit 117ede8245d9e96235a13fbb6c5eae39fa6885f0. --- labs/secrets.txt | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 labs/secrets.txt diff --git a/labs/secrets.txt b/labs/secrets.txt deleted file mode 100644 index 1c36f68e..00000000 --- a/labs/secrets.txt +++ /dev/null @@ -1,2 +0,0 @@ -access_key_id=AKIAIOSFODNN7EXAMPLE -secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \ No newline at end of file From 28ecd8fcf26f01c84c4e75cdf289a52b4fc09c67 Mon Sep 17 00:00:00 2001 From: Ivan Smirnov Date: Sun, 10 May 2026 18:24:37 +0300 Subject: [PATCH 7/8] docs: add fake aws key --- labs/secrets.env | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 labs/secrets.env diff --git a/labs/secrets.env b/labs/secrets.env new file mode 100644 index 00000000..1c36f68e --- /dev/null +++ b/labs/secrets.env @@ -0,0 +1,2 @@ +access_key_id=AKIAIOSFODNN7EXAMPLE +secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \ No newline at end of file From a8685b47f43a63f1da5450db5c40878ea7556d01 Mon Sep 17 00:00:00 2001 From: Ivan Smirnov Date: Sun, 10 May 2026 18:29:54 +0300 Subject: [PATCH 8/8] docs: add submission3.md --- labs/submission3.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/labs/submission3.md b/labs/submission3.md index 9fc0836b..3933eede 100644 --- a/labs/submission3.md +++ b/labs/submission3.md @@ -15,3 +15,40 @@ Commit signing is useful for verifying the source of the commits. If the commit # Task 2 +Provided pre-commit hook doesn't seem to filter out a fake AWS secret: +```shell +[rightrat | ~/c/DevSecOps-Intro] cat labs/secrets.env +access_key_id=AKIAIOSFODNN7EXAMPLE +secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY⏎ +``` +Pre-commit hook output: +```shell +[rightrat | ~/c/DevSecOps-Intro] git commit -S -m "docs: add fake aws key" +[pre-commit] scanning staged files for secrets… +[pre-commit] Files to scan: labs/secrets.env +[pre-commit] Non-lectures files: labs/secrets.env +[pre-commit] Lectures files: none +[pre-commit] TruffleHog scan on non-lectures files… +🐷🔑🐷 TruffleHog. Unearth your secrets. 🐷🔑🐷 + +2026-05-10T15:24:39Z info-0 trufflehog running source {"source_manager_worker_id": "hDCbt", "with_units": true} +2026-05-10T15:24:40Z info-0 trufflehog finished scanning {"chunks": 1, "bytes": 93, "verified_secrets": 0, "unverified_secrets": 0, "scan_duration": "943.644017ms", "trufflehog_version": "3.95.2", "verification_caching": {"Hits":0,"Misses":1,"HitsWasted":0,"AttemptsSaved":0,"VerificationTimeSpentMS":942}} +[pre-commit] ✓ TruffleHog found no secrets in non-lectures files +[pre-commit] Gitleaks scan on staged files… +[pre-commit] Scanning labs/secrets.env with Gitleaks... +[pre-commit] No secrets found in labs/secrets.env + +[pre-commit] === SCAN SUMMARY === +TruffleHog found secrets in non-lectures files: false +Gitleaks found secrets in non-lectures files: false +Gitleaks found secrets in lectures files: false + +✓ No secrets detected in non-excluded files; proceeding with commit. +[feature/lab3 28ecd8f] docs: add fake aws key + 1 file changed, 2 insertions(+) + create mode 100644 labs/secrets.env +``` + +So I don't know how to replicate a positive detection case 🤷‍♂️ + +... but secret scanning is absolutely necessary, especially in multi-dev projects, since scraping secrets from GitHub **is** prominent. \ No newline at end of file