C.W.K.
Stream
Lesson 01 of 06 · published

Tauri가 보안 우선인 이유

~13 min · tauri, security, threat-model, architecture

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"네 프론트엔드는 언젠가 뚫린다고 가정해. 뚫렸을 때 피해가 경계 안에 갇히게 설계해."

웹뷰가 못 믿을 반쪽이야

네 프론트엔드는 웹뷰에서 돌고, 웹뷰는 웹 콘텐츠를 그려 — 딱 공격자가 노리는 표면이야. XSS 버그, innerHTML에 닿는 악성 문자열, 뚫린 npm 의존성 — 다 네가 안 짠 JavaScript를 앱 안에서 실행하게 끝날 수 있어. 프론트엔드가 전체 네이티브 접근을 가진(또는 allowlist 잠그는 걸 까먹은) 프레임워크에선, 그 주입된 스크립트가 기계 전체의 열쇠를 물려받아: 아무 파일이나 읽고, 아무 명령이나 실행. 그게 Tauri가 막으려 지어진 악몽이야.

기본 거부가 폭발 반경을 가둬

Tauri 2는 0에서 시작해: 웹뷰는 네가 노출한 특정 command만, 그것도 capability가 permission을 부여할 때만 그리고 부를 수 있어. 그래서 공격자가 네 프론트엔드에서 임의 JS를 돌려도, 네가 파일시스템이나 셸 접근을 — 기능이 필요한 딱 그만큼 scope해서 — 명시적으로 부여 안 했으면 ~/.ssh를 못 읽고 셸을 못 띄워. 침해가 네가 의도적으로 연 권한에 갇히지, OS 전체가 아냐.

최소 권한이 게임 전부야

부여하는 모든 permission은 네가 받아들인 공격 표면이야. 규율은 최소 권한이야: 기능이 돌게 하는 제일 좁은 권한을 부여하고, 제일 작은 경로나 도메인으로 scope하고, 다른 창엔 다른 capability를 줘(설정 창은 파일시스템 접근이 거의 필요 없어). Tauri 보안은 한 번 쌓는 벽이 아냐 — '아니오' 기본값에 대고 하는 작고 의도적인 '예'의 연속이야.

Code

게이트가 왜 중요한가·text
위협 모델 한 그림:

  악성 입력 / XSS / 나쁜 npm 의존성
            │  네 웹뷰에 JS 주입
            ▼
  ┌───────────────────────┐
  │   뚫린 프론트엔드       │  ← 임의 JavaScript 실행 가능
  └───────────┬───────────┘
              │ 부여한 것만 호출 가능
              ▼
  ┌───────────────────────┐
  │   Rust 코어 (게이트됨)  │  ← 부여 없음 = 접근 없음. 폭발 반경 갇힘.
  └───────────────────────┘

기본 거부가 '전체 침해'를 '네가 연, 좁게 scope한 정확히 그
permission만의 침해'로 바꿔.

External links

Exercise

앱의 멘탈 위협 모델을 감사해: 프론트엔드가 지금 닿을 수 있는 모든 네이티브 권한을 나열해(command + 부여된 permission). 각각에 '공격자가 내 JS를 돌리면 이걸로 뭘 할 수 있지?'를 물어. 그다음 더 좁히거나 scope할 수 있는 부여 하나를 찾아. 메커니즘 전에 최소 권한 사고를 연습하는 거야.
Hint
capability 파일(다음 레슨들)이랑 command 목록에서 시작해. 위험한 건 넓게 scope된 파일시스템, 셸, http야. 'XSS가 이걸 악용할 수 있나?'가 모든 좁히기를 끄는 질문이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.