Skip to content

Security: RLidea/weaver2

Security

SECURITY.md

Security Policy

๐Ÿ›ก๏ธ Supported Versions

weaver2๋Š” ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ์ด๋ฏ€๋กœ ํ•ญ์ƒ main ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ์ปค๋ฐ‹๋งŒ ๋ณด์•ˆ ํŒจ์น˜๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ๋ฅผ forkยท๋ณต์ œํ•ด์„œ ์šด์˜ ์ค‘์ธ ํ”„๋กœ์ ํŠธ๋Š” ์ž์ฒด ์ •์ฑ…์„ ๋‘์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ƒ ๋ณด์•ˆ ํŒจ์น˜
main ๋ธŒ๋žœ์น˜ โœ… ํ™œ์„ฑ
๊ณผ๊ฑฐ ํƒœ๊ทธ โŒ ์—†์Œ (ํ•„์š” ์‹œ ์ง์ ‘ cherry-pick)
์™ธ์ฃผ ๋ณต์ œ๋ณธ ๊ฐ ํ”„๋กœ์ ํŠธ ์ฑ…์ž„

๐Ÿšจ Reporting a Vulnerability

๐Ÿ”’ ๋น„๊ณต๊ฐœ ๋ณด๊ณ  (๊ถŒ์žฅ)

GitHub Security Advisories๋ฅผ ํ†ตํ•ด ๋น„๊ณต๊ฐœ๋กœ ๋ณด๊ณ ํ•ด์ฃผ์„ธ์š”.

  • ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค + ์žฌํ˜„ ์ ˆ์ฐจ
  • ์˜ํ–ฅ ๋ฒ”์œ„ (์–ด๋–ค ๋ผ์šฐํŠธยท๊ธฐ๋Šฅ)
  • ๊ฐ€๋Šฅํ•˜๋ฉด PoC

๋Œ€์‘ ์‹œํ•œ:

  • 48์‹œ๊ฐ„ ์ด๋‚ด ์ ‘์ˆ˜ ํ™•์ธ (Acknowledge)
  • 7์ผ ์ด๋‚ด ์ดˆ๊ธฐ ๋ถ„๋ฅ˜ + ๋“ฑ๊ธ‰ ๋ถ€์—ฌ (CVSS ๊ธฐ์ค€)
  • 30์ผ ์ด๋‚ด ํŒจ์น˜ ๋ฐฐํฌ (High/Critical์€ ๊ฐ€๋Šฅํ•œ ๋นจ๋ฆฌ)

๐Ÿ“ข ๊ณต๊ฐœ ๋ณด๊ณ ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ

์ด๋ฏธ ๊ณต๊ฐœ๋œ CVE์ด๊ฑฐ๋‚˜ third-party ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด์Šˆ์ธ ๊ฒฝ์šฐ ์ผ๋ฐ˜ Issue๋กœ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ” Built-in Security Layers

์ด ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ๊ธฐ๋ณธ ์ œ๊ณตํ•˜๋Š” ๋ณด์•ˆ ์žฅ์น˜ (์™ธ์ฃผ ๋ณต์ œ ์‹œ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ์˜ด):

์ธ์ฆยท์„ธ์…˜

  • JWT HttpOnly ์ฟ ํ‚ค (Access 15๋ถ„ / Refresh ์ตœ๋Œ€ 30์ผ)
  • Refresh token rotation (์‚ฌ์šฉ ํ›„ ์ฆ‰์‹œ ํ๊ธฐ + ์ƒˆ ํ† ํฐ ๋ฐœ๊ธ‰)
  • ๊ณ„์ • ์ž ๊ธˆ (5ํšŒ ์‹คํŒจ โ†’ 15๋ถ„)
  • ๊ณ„์ • ์ •์ง€ (suspendedUntil)
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์‹œ ์ „์ฒด ์„ธ์…˜ ๋ฌดํšจํ™”
  • 2FA: TOTP + Email OTP

๊ถŒํ•œ

  • ์—ญํ•  ๋Œ€์‹  ๊ถŒํ•œ ๊ทธ๋ฃน ๊ธฐ๋ฐ˜
  • @RequirePermission ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ + PermissionGuard (๊ธ€๋กœ๋ฒŒ)
  • ํ”„๋ก ํŠธ: RequirePermission ์ปดํฌ๋„ŒํŠธ + hasPermission() ์™€์ผ๋“œ์นด๋“œ
  • ์ต๋ช… IDOR ์ฐจ๋‹จ (board-permission.service.ts)

CSRFยทXSSยทํ—ค๋”

  • csrf-csrf (active maintenance) + double-submit ํŒจํ„ด
  • Helmet (HSTS, X-Frame-Options, CSP ๋“ฑ)
  • useStaticAssets์— dotfile ์ฐจ๋‹จยทindex ๋น„ํ™œ์„ฑ

Rate Limiting

  • ์ „์—ญ 60์ดˆ/100ํšŒ
  • sign-in: 60์ดˆ/10ํšŒ
  • 2FA: 60์ดˆ/3~5ํšŒ
  • password-reset: 60์ดˆ/3~5ํšŒ
  • email-change: 60์ดˆ/3~5ํšŒ
  • upload: 60์ดˆ/10ํšŒ
  • search: 60์ดˆ/20ํšŒ
  • report: 60์ดˆ/5ํšŒ

Secret ๊ด€๋ฆฌ

  • 3-layer ๊ฐ€๋“œ (.gitignore + husky pre-commit + CI secret-files job)
  • ์ฐจ๋‹จ ํŒจํ„ด: .env* (๋‹จ, .env.example ์˜ˆ์™ธ), *.pem/.key/.p12/.pfx/.crt/.cer, id_rsa*, id_ed25519*

CI ์ž๋™ ์Šค์บ”

  • pnpm audit --audit-level=high ๋งค์ฃผ ์›” 09:00 KST + ์˜์กด์„ฑ PR๋งˆ๋‹ค
  • CodeQL security-extended ๋งค์ฃผ ์›” 14:00 KST + PR๋งˆ๋‹ค
  • ๋ฐœ๊ฒฌ ์‹œ GitHub Issue ์ž๋™ ์ƒ์„ฑ ๋˜๋Š” PR ์ฐจ๋‹จ

์˜์กด์„ฑ ์ •์ฑ…

  • High/Critical CVE ๋ฐœ๊ฒฌ ์‹œ ์ฆ‰์‹œ ํŒจ์น˜ PR
  • Dependabot ํ™œ์„ฑํ™” ๊ถŒ์žฅ (์™ธ์ฃผ ๋ณต์ œ ์‹œ๋„ ๋™์ผ)
  • package.json์˜ engines.node >= 22, pnpm >= 11 ๊ฐ•์ œ

๐Ÿ“‹ ๋ณด์•ˆ ์‚ฌ๊ณ  ๋Œ€์‘ (Incident Response)

1๋‹จ๊ณ„ โ€” ๋ฐœ๊ฒฌยท์ ‘์ˆ˜

  • Security Advisory ๋˜๋Š” ๋‚ด๋ถ€ ๋ชจ๋‹ˆํ„ฐ๋ง (Sentry, CodeQL Issue)
  • ์˜ํ–ฅ ๋ฒ”์œ„ ํ‰๊ฐ€: ์–ด๋–ค ์‚ฌ์šฉ์žยท๋ฐ์ดํ„ฐยท๊ธฐ๊ฐ„

2๋‹จ๊ณ„ โ€” ๊ฒฉ๋ฆฌ

  • ์ฆ‰์‹œ ์˜ํ–ฅ ๋ผ์šฐํŠธ ๋น„ํ™œ์„ฑํ™” (feature flag ๋˜๋Š” deploy ๋กค๋ฐฑ)
  • ํ•„์š” ์‹œ ์˜ํ–ฅ ์‚ฌ์šฉ์ž ์„ธ์…˜ ๊ฐ•์ œ ๋งŒ๋ฃŒ

3๋‹จ๊ณ„ โ€” ํŒจ์น˜

  • fix/security-XXX ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…
  • ํšŒ๊ท€ ๋ฐฉ์ง€ unit test ํ•จ๊ป˜ ์ถ”๊ฐ€ (ํ•„์ˆ˜)
  • High/Critical์€ PR ๋ฆฌ๋ทฐ์–ด 2๋ช… + ์‹œ๋‹ˆ์–ด sign-off

4๋‹จ๊ณ„ โ€” ๋ฐฐํฌ

  • staging ๊ฒ€์ฆ ํ›„ ์ฆ‰์‹œ production deploy
  • DB ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋™๋ฐ˜ ์‹œ rollback plan ์ค€๋น„

5๋‹จ๊ณ„ โ€” ์‚ฌํ›„ ๋Œ€์‘

  • ์˜ํ–ฅ ์‚ฌ์šฉ์ž ์•Œ๋ฆผ (๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ๋ฒ• ์ด์Šˆ๋ฉด ์‹ ๊ณ  ์˜๋ฌด)
  • Postmortem ์ž‘์„ฑ (docs/incidents/<date>-<title>.md)
  • ์žฌ๋ฐœ ๋ฐฉ์ง€ ์•ก์…˜ โ†’ ROADMAP.md ๋˜๋Š” Issue๋กœ ๋“ฑ๋ก

๐Ÿค– ์ž๋™ํ™”๋œ ๋ณด์•ˆ ๊ฒ€์‚ฌ

๋ชจ๋“  PR
   โ†“
ci.yml::secret-files          โ† .env/key ํŒŒ์ผ ์ฐจ๋‹จ
ci.yml::test-integration      โ† auth-security ํšŒ๊ท€ ํ…Œ์ŠคํŠธ
codeql.yml                    โ† security-extended ์ •์  ๋ถ„์„
security.yml                  โ† deps ๋ณ€๊ฒฝ ์‹œ audit

๋งค์ฃผ ์›”์š”์ผ
   โ†“
security.yml::audit (09:00)   โ† pnpm audit
codeql.yml::analyze (14:00)   โ† CodeQL ์‹ ๊ทœ ๋ฃฐ ์ ์šฉ

๐Ÿ“ž Contact

  • ๋ณด์•ˆ ๋ณด๊ณ : GitHub Security Advisories (์œ„ ๋งํฌ)
  • ์ผ๋ฐ˜ ๋ฌธ์˜: Issue ๋˜๋Š” README์˜ ๋ฉ”์ธ contact

m(_ _)m ๋ณด์•ˆ ๋ณด๊ณ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์•ˆ์ „์„ ํ•จ๊ป˜ ์ง€์ผœ์ฃผ์‹œ๋Š” ๋ชจ๋“  ๋ถ„๊ป˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

There aren't any published security advisories