Skip to content

Commit ddfc321

Browse files
authored
Rename to ghscan to reflect more generic scanning support (#13)
This PR renames the project to `ghscan` to reflect the more generic scanning support introduced in previous PRs. Functionality remains the same but is no longer solely focused on the original theme of the project. --------- Signed-off-by: egibs <20933572+egibs@users.noreply.github.com>
1 parent 591ac69 commit ddfc321

File tree

15 files changed

+69
-69
lines changed

15 files changed

+69
-69
lines changed

.github/chainguard/build.sts.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
issuer: https://token.actions.githubusercontent.com
2-
subject_pattern: repo:chainguard-dev\/tj-scan:(ref:refs\/heads\/main|pull_request)
2+
subject_pattern: repo:chainguard-dev/ghscan:(ref:refs/heads/main|pull_request)
33
claim_pattern:
4-
job_workflow_ref: chainguard-dev/tj-scan/.github/workflows/build.yaml@.*
4+
job_workflow_ref: chainguard-dev/ghscan/.github/workflows/build.yaml@.*
55

66
permissions:
77
contents: read

.github/workflows/build.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,5 @@ jobs:
3737
- name: build
3838
run: |
3939
set -x
40-
make out/tjscan
41-
./out/tjscan -h
40+
make out/ghscan
41+
./out/ghscan -h

Makefile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
.PHONY: build docker fmt fmt-check test release sbom out/tjscan
1+
.PHONY: build docker fmt fmt-check test release sbom out/ghscan
22

3-
out/tjscan:
3+
out/ghscan:
44
mkdir -p out
5-
go build -o out/tjscan ./cmd/tj-scan
5+
go build -o out/ghscan ./cmd/ghscan
66

77
keygen:
88
melange keygen
99

1010
melange: keygen
11-
melange build --arch arm64,x86_64 tj-scan.yaml --signing-key melange.rsa
11+
melange build --arch arm64,x86_64 ghscan.yaml --signing-key melange.rsa
1212

1313
apko: melange
14-
apko build tj-scan.apko.yaml tjscan:latest tjscan.tar
14+
apko build ghscan.apko.yaml ghscan:latest ghscan.tar
1515

16-
tj-scan-docker:
17-
docker load < tjscan.tar
16+
ghscan-docker:
17+
docker load < ghscan.tar
1818

1919
sbom:
2020
syft -o spdx-json . | jq . > sbom.json

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# tj-scan
2-
Scan GitHub Workflow logs for IOCs from the tj-actions/changed-files breach.
1+
# ghscan
2+
Scan GitHub Workflow logs for IOCs via strings or regex.
33

44
Notes:
55
- This script should not be seen as a universal detector of compromise; rather, a single result likely indicates that other Workflow runs in the search window were also compromised
@@ -63,7 +63,7 @@ permissions:
6363

6464
For example:
6565
```sh
66-
$ chainctl auth octo-sts --scope chainguard-dev/tj-scan --identity ephemerality -- go run cmd/tj-scan/main.go -target owner/repo -json="final.json" -csv="final.csv"
66+
$ chainctl auth octo-sts --scope chainguard-dev/ghscan --identity ephemerality -- go run cmd/ghscan/main.go -target owner/repo -json="final.json" -csv="final.csv"
6767
2025/03/18 11:27:59 INFO Found 1 repositories to scan
6868
2025/03/18 11:27:59 INFO No existing cache found at cache.json, starting fresh
6969
```
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import (
1010
"time"
1111

1212
"github.com/chainguard-dev/clog"
13-
"github.com/chainguard-dev/tj-scan/pkg/action"
14-
"github.com/chainguard-dev/tj-scan/pkg/file"
15-
"github.com/chainguard-dev/tj-scan/pkg/ioc"
16-
tjscan "github.com/chainguard-dev/tj-scan/pkg/tj-scan"
13+
"github.com/chainguard-dev/ghscan/pkg/action"
14+
"github.com/chainguard-dev/ghscan/pkg/file"
15+
ghscan "github.com/chainguard-dev/ghscan/pkg/ghscan"
16+
"github.com/chainguard-dev/ghscan/pkg/ioc"
1717
"github.com/google/go-github/v69/github"
1818
"github.com/spf13/viper"
1919
"golang.org/x/oauth2"
@@ -145,7 +145,7 @@ func main() {
145145
cachedResults[key] = true
146146
}
147147

148-
req := tjscan.Request{
148+
req := ghscan.Request{
149149
Cache: cache,
150150
CacheFile: *cacheFileFlag,
151151
CachedResults: cachedResults,
@@ -161,7 +161,7 @@ func main() {
161161
logger.Errorf("Failed to scan Workflows in repos: %v", err)
162162
}
163163

164-
cr := tjscan.Cache{Results: req.Cache.Results}
164+
cr := ghscan.Cache{Results: req.Cache.Results}
165165
file.WriteResults(logger, cr, *cacheFileFlag, *jsonOutputFlag, *csvOutputFlag)
166166
logger.Info("Processing complete")
167167
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ contents:
44
keyring:
55
- melange.rsa.pub
66
packages:
7-
- tjscan@local
7+
- ghscan@local
88

99
entrypoint:
10-
command: tjscan
10+
command: ghscan
1111

1212
accounts:
1313
groups:

tj-scan.yaml renamed to ghscan.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package:
2-
name: tjscan
2+
name: ghscan
33
version: "0.1.0"
44
epoch: 1
55
description: Scan Workflow logs for IOCs from the tj-actions/changed-files breach
@@ -16,23 +16,23 @@ environment:
1616
pipeline:
1717
- uses: git-checkout
1818
with:
19-
repository: https://github.com/chainguard-dev/tj-scan
19+
repository: https://github.com/chainguard-dev/ghscan
2020
expected-commit: bf0fb207b7f711d256ecb6463e645426a0e3db01
2121
tag: v${{package.version}}
2222

2323
- uses: go/build
2424
with:
25-
packages: ./cmd/tj-scan
26-
output: tjscan
25+
packages: ./cmd/ghscan
26+
output: ghscan
2727

2828
test:
2929
pipeline:
30-
- name: Verify tj-scan version
30+
- name: Verify ghscan version
3131
runs: |
32-
tjscan -h
32+
ghscan -h
3333
3434
update:
3535
enabled: true
3636
github:
37-
identifier: chainguard-dev/tj-scan
37+
identifier: chainguard-dev/ghscan
3838
strip-prefix: v

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module github.com/chainguard-dev/tj-scan
1+
module github.com/chainguard-dev/ghscan
22

33
go 1.24.1
44

pkg/action/scan.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ import (
1212
"sync"
1313

1414
"github.com/chainguard-dev/clog"
15-
"github.com/chainguard-dev/tj-scan/pkg/file"
16-
"github.com/chainguard-dev/tj-scan/pkg/request"
17-
tjscan "github.com/chainguard-dev/tj-scan/pkg/tj-scan"
18-
wf "github.com/chainguard-dev/tj-scan/pkg/workflow"
15+
"github.com/chainguard-dev/ghscan/pkg/file"
16+
ghscan "github.com/chainguard-dev/ghscan/pkg/ghscan"
17+
"github.com/chainguard-dev/ghscan/pkg/request"
18+
wf "github.com/chainguard-dev/ghscan/pkg/workflow"
1919
"github.com/google/go-github/v69/github"
2020
"github.com/spf13/viper"
2121
"golang.org/x/sync/errgroup"
2222
)
2323

24-
func scanWorkflows(ctx context.Context, logger *clog.Logger, req *tjscan.Request) error {
24+
func scanWorkflows(ctx context.Context, logger *clog.Logger, req *ghscan.Request) error {
2525
g, gCtx := errgroup.WithContext(ctx)
2626
g.SetLimit(2)
2727

@@ -77,7 +77,7 @@ func scanWorkflows(ctx context.Context, logger *clog.Logger, req *tjscan.Request
7777
return g.Wait()
7878
}
7979

80-
func scanRuns(ctx context.Context, logger *clog.Logger, req *tjscan.Request, runs []*github.WorkflowRun, wfFileName, wfPath string) error {
80+
func scanRuns(ctx context.Context, logger *clog.Logger, req *ghscan.Request, runs []*github.WorkflowRun, wfFileName, wfPath string) error {
8181
var rc io.ReadCloser
8282
var resultsMu sync.Mutex
8383

@@ -90,7 +90,7 @@ func scanRuns(ctx context.Context, logger *clog.Logger, req *tjscan.Request, run
9090

9191
logger.Infof("Found %d runs for workflow %s in %s/%s", len(runs), wfFileName, req.Owner, req.RepoName)
9292

93-
var runResults []tjscan.Result
93+
var runResults []ghscan.Result
9494
for _, run := range runs {
9595
g.Go(func() error {
9696
select {
@@ -139,7 +139,7 @@ func scanRuns(ctx context.Context, logger *clog.Logger, req *tjscan.Request, run
139139
workflowRunUIURL := fmt.Sprintf("https://github.com/%s/%s/actions/runs/%d",
140140
req.Owner, req.RepoName, runID)
141141

142-
resultsMap := make(map[string]*tjscan.Result)
142+
resultsMap := make(map[string]*ghscan.Result)
143143

144144
for _, finding := range wfFindings {
145145
if finding.Encoded == "" && finding.Decoded == "" && finding.LineData == "" {
@@ -158,7 +158,7 @@ func scanRuns(ctx context.Context, logger *clog.Logger, req *tjscan.Request, run
158158
existing.DecodedData = finding.Decoded
159159
}
160160
} else {
161-
res := tjscan.Result{
161+
res := ghscan.Result{
162162
Repository: fmt.Sprintf("%s/%s", req.Owner, req.RepoName),
163163
WorkflowFileName: wfFileName,
164164
WorkflowURL: workflowUIURL,
@@ -171,7 +171,7 @@ func scanRuns(ctx context.Context, logger *clog.Logger, req *tjscan.Request, run
171171
}
172172
}
173173

174-
var findings []tjscan.Result
174+
var findings []ghscan.Result
175175
for _, result := range resultsMap {
176176
findings = append(findings, *result)
177177
}
@@ -181,7 +181,7 @@ func scanRuns(ctx context.Context, logger *clog.Logger, req *tjscan.Request, run
181181
resultsMu.Unlock()
182182

183183
if len(req.Cache.Results)%10 == 0 {
184-
file.WriteCache(logger, filepath.Join(tjscan.ResultsDir, req.CacheFile), req.Cache.Results)
184+
file.WriteCache(logger, filepath.Join(ghscan.ResultsDir, req.CacheFile), req.Cache.Results)
185185
}
186186

187187
return nil
@@ -197,7 +197,7 @@ func scanRuns(ctx context.Context, logger *clog.Logger, req *tjscan.Request, run
197197
return nil
198198
}
199199

200-
func Scan(ctx context.Context, logger *clog.Logger, req *tjscan.Request, repos []*github.Repository) error {
200+
func Scan(ctx context.Context, logger *clog.Logger, req *ghscan.Request, repos []*github.Repository) error {
201201
if req == nil {
202202
return fmt.Errorf("req cannot be nil")
203203
}

pkg/action/scanner.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@ import (
44
"path/filepath"
55

66
"github.com/chainguard-dev/clog"
7-
"github.com/chainguard-dev/tj-scan/pkg/file"
8-
tjscan "github.com/chainguard-dev/tj-scan/pkg/tj-scan"
7+
"github.com/chainguard-dev/ghscan/pkg/file"
8+
ghscan "github.com/chainguard-dev/ghscan/pkg/ghscan"
99
)
1010

1111
type Scanner struct {
1212
logger *clog.Logger
13-
results chan []tjscan.Result
14-
cache *tjscan.Cache
13+
results chan []ghscan.Result
14+
cache *ghscan.Cache
1515
cacheFile string
1616
flushSize int
1717
done chan struct{}
1818
}
1919

20-
func NewScanner(logger *clog.Logger, cache *tjscan.Cache, cacheFile string, flushSize int) *Scanner {
20+
func NewScanner(logger *clog.Logger, cache *ghscan.Cache, cacheFile string, flushSize int) *Scanner {
2121
s := &Scanner{
2222
logger: logger,
23-
results: make(chan []tjscan.Result, 10),
23+
results: make(chan []ghscan.Result, 10),
2424
cache: cache,
2525
cacheFile: cacheFile,
2626
flushSize: flushSize,
@@ -35,17 +35,17 @@ func (s *Scanner) collect() {
3535
for results := range s.results {
3636
s.cache.Results = append(s.cache.Results, results...)
3737
if len(s.cache.Results)%s.flushSize == 0 {
38-
file.WriteCache(s.logger, filepath.Join(tjscan.ResultsDir, s.cacheFile), s.cache.Results)
38+
file.WriteCache(s.logger, filepath.Join(ghscan.ResultsDir, s.cacheFile), s.cache.Results)
3939
}
4040
}
4141

4242
if len(s.cache.Results) > 0 {
43-
file.WriteCache(s.logger, filepath.Join(tjscan.ResultsDir, s.cacheFile), s.cache.Results)
43+
file.WriteCache(s.logger, filepath.Join(ghscan.ResultsDir, s.cacheFile), s.cache.Results)
4444
}
4545
close(s.done)
4646
}
4747

48-
func (s *Scanner) Add(results []tjscan.Result) {
48+
func (s *Scanner) Add(results []ghscan.Result) {
4949
if len(results) > 0 {
5050
s.results <- results
5151
}

0 commit comments

Comments
 (0)