Skip to content

fix(gocoon): закрыть доступ к данным кошелька - #735

Merged
konard merged 3 commits into
mainfrom
issue-712-916121224ac9
Jul 14, 2026
Merged

fix(gocoon): закрыть доступ к данным кошелька#735
konard merged 3 commits into
mainfrom
issue-712-916121224ac9

Conversation

@konard

@konard konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator

Что исправлено

  • каталог ~/.teleton/gocoon, содержащий ключевой материал кошелька, создаётся с правами 0o700;
  • права уже существующего каталога принудительно ужесточаются до 0o700;
  • wallet.json, созданный внешним gocoon-бинарником или оставшийся от прежней версии, принудительно переводится в 0o600;
  • hardening выполняется и при создании, и при повторном использовании существующего кошелька.

Воспроизведение

До исправления при umask 022 каталог создавался с правами 0o755. Уже существующий wallet.json с правами 0o644 также оставался доступным группе и другим пользователям при повторном вызове gocoonInit().

Проверка

Добавлен регрессионный тест src/gocoon/__tests__/cli-permissions.test.ts, покрывающий:

  1. новое создание каталога при umask 022;
  2. исправление существующего каталога 0o755;
  3. исправление существующего wallet.json с 0o644 при повторном использовании.

Локально выполнены:

  • npm run build:sdk
  • npm run lint
  • npm run typecheck
  • npx vitest run src/gocoon/__tests__/cli-permissions.test.ts — 3/3;
  • полный npm test — 3820/3824; четыре нерелевантных теста упали из-за таймингов/нагрузки, после изолированного повторного запуска соответствующих файлов прошли 50/50.

Fixes #712

Adding .gitkeep for PR creation (default mode).
This file will be removed when the task is complete.

Issue: #712
@konard konard self-assigned this Jul 14, 2026
@konard konard changed the title [WIP] [AUDIT/V7] gocoon data directory holding wallet.json is created without 0o700, leaving wallet key material world-traversable fix(gocoon): закрыть доступ к данным кошелька Jul 14, 2026
@konard
konard marked this pull request as ready for review July 14, 2026 09:35
@konard

konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

Working session summary

Issue #712 исправлен, PR готов к ревью: #735

Что сделано:

  • каталог gocoon принудительно получает права 0o700;
  • существующий wallet.json переводится в 0o600;
  • hardening работает при создании и повторном использовании кошелька;
  • добавлены 3 регрессионных теста;
  • удалён служебный .gitkeep;
  • PR обновлён и переведён из draft в ready.

Финальный SHA: 18e29bfd.

Все CI-проверки прошли, включая Test, TypeScript, Lint, Security audit, CodeQL и gitleaks. Рабочее дерево чистое, ветка включает актуальный main.


This summary was automatically extracted from the AI working session output.

@konard

konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Model: GPT-5.6 Sol
  • Provider: OpenAI
  • Public pricing estimate: $18.991321

📊 Context and tokens usage:

  • 223.8K / 200K (112%) input tokens, 19.4K / 128K (15%) output tokens

Total: (223.8K + 15.9M cached) input tokens, 19.4K output tokens, $18.991321 cost

🤖 Models used:

  • Tool: OpenAI Codex
  • Requested: gpt-5.6-sol
  • Thinking level: off (disabled)
  • Model: GPT 5.6 Sol (gpt-5.6-sol)

📎 Log file uploaded as Gist (3401KB)


Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard
konard merged commit 9d195b4 into main Jul 14, 2026
28 checks passed
@konard

konard commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

🎉 Auto-merged

This pull request has been automatically merged by hive-mind.

  • All CI checks have passed

Auto-merged by hive-mind with --auto-merge flag

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.

[AUDIT/V7] gocoon data directory holding wallet.json is created without 0o700, leaving wallet key material world-traversable

1 participant