Run a security review: fuzz the loaders, parser and save import, and review the threat model
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- github-actions, json, typescript, yaml
調査の方向性
Start with SECURITY.md and architecture section 8, then review the listed compiler, loader, parser, save, CSP, terminal, and workflow files. Add bounded fuzz and property-based coverage for the specified inputs, including YAML aliases and oversized input, and run the tests in CI plus a longer manual fuzz run. Done means SECURITY.md records the review and every finding is fixed or filed, with no open crashes.
索引モデルが issue の本文から書いたものです。
説明
Context
Content packs, save files and parser input are untrusted (SECURITY.md). Before v1.0 promises compatibility, the controls need a systematic review. Several controls landed during the v0.1 review: a Content-Security-Policy with Trusted Types in both builds (every end-to-end test fails on a violation), a unit test that apps/web/src uses no HTML or script sink, validation of saved states against their pack and a 5 MB cap on save files, own-property lookups so that ids such as constructor are safe, a per-call work budget in the engine, terminal-safe printing of pack text in the CLI, tested path checks for the files lexvm generate writes, and SHA-pinned actions with read-only tokens. Deep nesting is tested; the YAML alias cap (100) and oversized input are not.
Scope
- Property-based and fuzz tests (dev dependency):
compileandloadPackwith random and mutated YAML and JSON (only diagnostics, never crashes; bounded time and memory, including YAML alias expansion, deep nesting and large input);parseCommandwith random Unicode; save import with mutated saves;stepwith random commands on valid packs (no exceptions; state stays plain JSON). - Prototype-pollution tests across compile, runtime, saves and the player with ids such as
constructor,toStringandhasOwnProperty, and with map keys that the id pattern must reject. - Player: review the CSP of both builds (a meta tag cannot set
frame-ancestors), the service worker scope and cache behaviour, the shared-origin storage risk, and the import checks on the main thread (#22). - CLI: confirm that the API key never appears in output or files; review the terminal escaping.
- Workflows: script injection, permissions and trigger types, especially the v0.3 workflows.
- A threat model review; update SECURITY.md.
Acceptance criteria
- Fuzz tests run in CI with a bounded runtime, plus a longer manual run; no open crashes.
- Alias expansion and oversized input each produce a diagnostic within bounded time (tested), as deep nesting does today.
- SECURITY.md is updated; every finding is fixed or filed.
References
- SECURITY.md
- docs/architecture.md (section 8)
- packages/engine/src/compile-yaml.ts
- packages/engine/src/load.ts
- packages/engine/src/parser.ts
- apps/web/src/logic/saves.ts
- apps/web/build/csp.ts
- packages/cli/src/term.ts
- packages/cli/src/generate/fenced.ts
- .github/workflows/
- 主要言語
- TypeScript
- スター
- 0
- フォーク
- 0
- 平均マージ
- 28分
- マージ済み PR(30日)
- 2
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
nullthrone/lexvm のほかの issue
-
area: web good first issue priority: low type: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
nullthrone/lexvm#49 ·
-
area: infra good first issue priority: low type: chore
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
nullthrone/lexvm#41 ·
-
area: engine good first issue priority: low type: feature
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
nullthrone/lexvm#27 ·
-
area: web priority: low type: research
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
nullthrone/lexvm#63 ·
-
area: infra area: web priority: medium type: chore
難易度 5/5 1週間以上 初心者へのやさしさ 38/100
nullthrone/lexvm#62 ·
nullthrone/lexvm の issue をすべて見る
似ている issue
-
area:desktop bug documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
anthropics/claude-code#104801 ·
メンテナーはふだん 1 日以内に返信
-
check:passed streams:add
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
spudly/design-system#110 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
[Bug]: REST API URL starting with "http" but no scheme (e.g. httpbin.org/get) is not given an http:// prefix対応中かも @ItsDeadlyProgrammer が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
appsmithorg/appsmith#42471 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信