Skip to content

fix(worker): remove sh entrypoint from distroless security components#283

Merged
LuD1161 merged 2 commits intomainfrom
ENG-188/fix-distroless-image-issue-and-components
Feb 13, 2026
Merged

fix(worker): remove sh entrypoint from distroless security components#283
LuD1161 merged 2 commits intomainfrom
ENG-188/fix-distroless-image-issue-and-components

Conversation

@LuD1161
Copy link
Contributor

@LuD1161 LuD1161 commented Feb 12, 2026

Summary

  • All 5 ProjectDiscovery images (subfinder, dnsx, naabu, amass, notify) are distroless with no /bin/sh, causing exit code 127 when using entrypoint: 'sh'
  • Removed shell entrypoint from all components, using image default entrypoint with CLI args passed via command array
  • Rewrote naabu and notify from complex shell scripts to TypeScript arg building with IsolatedContainerVolume for file I/O
  • Set HOME=/tmp for all components (images run as nonroot, /root is not writable — was causing permission denied errors)
  • Documented the distroless image pattern in component-development.mdx

Changes

File Change
worker/src/components/security/subfinder.ts Removed entrypoint: 'sh', empty command, HOME=/tmp
worker/src/components/security/dnsx.ts Same pattern
worker/src/components/security/amass.ts Same pattern
worker/src/components/security/naabu.ts Full rewrite: shell script → TypeScript arg builder + IsolatedContainerVolume
worker/src/components/security/notify.ts Full rewrite: shell script → TypeScript arg builder + IsolatedContainerVolume
worker/src/components/security/__tests__/naabu.test.ts Updated assertions for new runner config
docs/development/component-development.mdx Added distroless image pattern documentation

Test plan

  • All 241 unit tests pass
  • E2E: Subfinder workflow completed successfully (31 subdomains discovered, no permission errors)
  • E2E: Verify naabu scan works end-to-end
  • E2E: Verify notify dispatch works end-to-end
  • E2E: Verify dnsx resolve works end-to-end
  • E2E: Verify amass enum works end-to-end

All ProjectDiscovery images (subfinder, dnsx, naabu, amass, notify) are
distroless and have no /bin/sh. Using `entrypoint: 'sh'` caused exit
code 127. This commit:

- Removes shell entrypoint from all 5 components, using image default
  entrypoint directly with CLI args passed via command array
- Rewrites naabu and notify from complex shell scripts to TypeScript
  arg building with IsolatedContainerVolume for file I/O
- Sets HOME=/tmp for all components (images run as nonroot, /root is
  not writable)
- Updates naabu test assertions for new runner config
- Documents the distroless image pattern in component-development.mdx

Signed-off-by: Aseem Shrey <LuD1161@users.noreply.github.com>
@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@LuD1161 LuD1161 force-pushed the ENG-188/fix-distroless-image-issue-and-components branch from 4d8c839 to 3c5e728 Compare February 13, 2026 01:44
Switch all security and AI component Docker images from pinned version
tags to :latest. Since these images are controlled by ShipSecAI on GHCR,
using :latest ensures components always use our maintained builds
(including distroless fixes) without requiring code changes per release.

Components updated: subfinder, dnsx, naabu, httpx, notify, trufflehog,
prowler, amass, opencode.

Signed-off-by: Aseem Shrey <LuD1161@users.noreply.github.com>
@LuD1161 LuD1161 force-pushed the ENG-188/fix-distroless-image-issue-and-components branch from 3c5e728 to 4e436ad Compare February 13, 2026 01:47
@LuD1161 LuD1161 merged commit 7022c1b into main Feb 13, 2026
3 checks passed
@LuD1161 LuD1161 deleted the ENG-188/fix-distroless-image-issue-and-components branch February 13, 2026 01:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant