Skip to content

Team/hugo - #28

Open
22f1000808 wants to merge 14 commits into
thesouldev:masterfrom
22f1000808:team/HUGO
Open

Team/hugo#28
22f1000808 wants to merge 14 commits into
thesouldev:masterfrom
22f1000808:team/HUGO

Conversation

@22f1000808

Copy link
Copy Markdown

Team : HUGO

Solo Member: Shivam Mishra

Framework

Go's net/http with http.ServeMux (Go 1.22 method-prefixed routes) — no framework dependencies, fewer moving parts to audit when the whole point is sandbox isolation.

How to run locally

Clone the repo, run git submodule update --init to fetch nsjail, then make docker-run to build and start the container. The Makefile includes make test for unit tests, make integration to run the e2e test suite, and make check for the full pre-submission verification. Smoke-test with curl localhost:8080/healthz.

Security

All documented attack surfaces are closed:

  1. Path traversal: internal/validator/filename.go validates filenames as single components; internal/runner/runner.go enforces filepath.Clean at the boundary.
  2. Shell command injection: No exec.Command("sh") anywhere. Workspace creation uses os.MkdirTemp and cleanup uses os.RemoveAll.
  3. Compiler flag injection: internal/config/flags.go and internal/validator/flags.go enforce per-language allow-lists; -Wl,, -fplugin, --specs=, @, and =/ are unconditionally blocked.
  4. Unbounded request size: internal/api/server.go caps HTTP body at 1 MiB; internal/validator/validator.go bounds source, stdin, and test count.
  5. UID collisions: internal/jail/template.go and internal/jail/execute.go rely on namespace isolation (clone_newns, clone_newpid, clone_newipc) rather than unique UIDs.
  6. Unbounded output: internal/jail/output.go caps stdout/stderr at 64 KiB per stream per job.
  7. Stale directories: internal/runner/run.go defers cleanup on every job; internal/runner/orphans.go runs a background sweeper.

Languages

Python 3 and C++ with full build and test support. Adding a language requires only a YAML entry in configs/languages.yaml with no Go code changes.

Testing

E2E tests in tests/e2e_test.go exercise the full request lifecycle: build, run, status classification, and cleanup. Run with make integration. Pre-submission verification in testdata/check.sh (make check) validates bounded queuing, API responses, status codes, and error envelopes across all scenarios.

@thesouldev

Copy link
Copy Markdown
Owner

Evaluation Summary

Team: pr28-HUGO · Rank: 7 / 45 · Weighted score: 67.7 / 100

Area (weight) Score What it covers
Technical (~60%) 82.8% API contract, security holes, concurrency + benchmarks, plug-and-play languages
Code quality / SDLC (~30%) 42.9% tests, clean git history, lint, docs
Communication (~10%) 50.0% README clarity, framework justification

Checks:

  • Build: Yes
  • Health: Yes
  • CI: no-actions
  • Sandbox: nsjail
  • Happy-path: 9/9

Thanks for participating! Scores reflect evaluation against the spec. Reply here if you have questions.

@thesouldev
thesouldev requested review from thesouldev and removed request for thesouldev June 17, 2026 20:11
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.

2 participants