Security: shell HTTP routes (v1 + v2) spawn processes with no permission gate
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- typescript
Research direction
Start with the two named handlers: src/server/routes/instance/httpapi/handlers/session.ts:367-388 and src/server/routes/session.ts:1004-1034, then follow their calls into SessionPrompt.shell at src/session/prompt.ts:2580. Read how nearby routes enforce permissions or Rulesets. Done means both v1 and v2 shell HTTP routes check an appropriate permission gate before spawning a process.
Written by the indexing model from the issue text.
Description
Surfaced by the S2 route-matrix audit (PR #1014). Both the v1 and v2 shell HTTP routes reach SessionPrompt.shell (raw spawn, src/session/prompt.ts:2580) with only a session-existence check — no permission/Ruleset gate of any kind:
- v2 HttpApi:
src/server/routes/instance/httpapi/handlers/session.ts:367-388— gated only byrequireSession(ctx.params.sessionID). - v1 Hono:
POST /session/:sessionID/shell,src/server/routes/session.ts:1004-1034— handler callsSessionPrompt.shelldirectly, no permission check.
This is outside HardPolicy's model-invoked-tool boundary (it's a direct HTTP raw-exec route, not a model tool call), so it's out of the de-fork spike's scope — but it's a real gap: anyone who can hit the session's shell endpoint gets unrestricted process execution. Worth a dedicated permission gate on both routes.
Pre-existing (not introduced by the de-fork work); filing so it's tracked rather than lost in a PR doc.
- Dominant language
- TypeScript
- Stars
- 813
- Forks
- 134
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 65
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from AltimateAI/altimate-code
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
AltimateAI/altimate-code#1359 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
AltimateAI/altimate-code#1323 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
AltimateAI/altimate-code#1288 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
AltimateAI/altimate-code#1285 ·
-
privacy: Altimate Base consent dialog no longer discloses persistent per-installation identifier Open
Difficulty 1/5 Under an hour Newbie friendliness 88/100
AltimateAI/altimate-code#1284 ·
All issues in AltimateAI/altimate-code
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
mksglu/context-mode#1200 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
jaegertracing/jaeger-ui#4506 ·
-
area:desktop area:ui bug platform:macos
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
anthropics/claude-code#96687 ·
-
good first issue
Difficulty 1/5 Under an hour Newbie friendliness 95/100
AOSSIE-Org/DebateAI#582 · 2 comments ·