Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Run a security review: fuzz the loaders, parser and save import, and review the threat model

オープン
#61 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
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 の本文から書いたものです。

説明

area: engine area: web priority: high type: chore

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): compile and loadPack with random and mutated YAML and JSON (only diagnostics, never crashes; bounded time and memory, including YAML alias expansion, deep nesting and large input); parseCommand with random Unicode; save import with mutated saves; step with 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, toString and hasOwnProperty, 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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

nullthrone/lexvm のほかの issue

nullthrone/lexvm の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。