---
title: 앞으로의 과제
sidebar:
  order: 10
i18nReady: true
---

이 섹션에서는 Tauri 앱을 더욱 안전하게 만들기 위해 시작한 프로젝트나 앞으로 다루고 싶은 내용에 대해 설명합니다.
이러한 프로젝트에 관심이 있거나 어떤 지식이 있는 경우, GitHub나 Discord와 같은 다른 커뮤니티 플랫폼을 통해 연락 주시기 바랍니다. 새로운 기여자나 새로운 조언은 언제나 환영합니다.

### 바이너리 분석

침투 테스트 담당자, 감사 담당자, 자동 보안 검사가 제대로 역할을 수행하려면 컴파일된 바이너리에서도 통찰력을 얻는 것이 매우 중요합니다. 모든 기업이 오픈 소스인 것은 아니며, 감사, 레드팀, 기타 보안 테스트용 소스 코드를 제공하는 것도 아닙니다.

> > > 《번역 주》
> > > ・침투 테스트 담당자: pentester = penetration tester
> > > ・레드팀: red team(보안 취약점을 검증하는 사내 전담팀)

간과하기 쉬운 또 다른 점은 Tauri 고유의 메타데이터를 제공함으로써 해당 애플리케이션의 사용자들이 평생과 노력을 알려진 취약점 해결에 바치지 않고도 자신의 시스템을 알려진 취약점에 대해 더 큰 규모로 감사할 수 있게 된다는 것입니다.

> > > 《번역 주》 **Tauri 고유의 메타데이터** 원문은 "inbuilt metadata". inbuilt는 "본래 갖추어진", "고유한", "본질적인"의 의미인 것 같지만, "내장", "내장된"(= built-in)의 의미도 함축하고 있을 수 있습니다. 본고에서는 "Tauri 고유/특유의"로 해석했습니다.

사용하는 "위협 모델"이 "은폐에 의한 보안"에 의존하고 있다면, 아래에 도구나 포인트를 몇 가지 제안하므로 위협 모델을 재검토해 주시기 바랍니다.

> > > 《번역 주》 **은폐에 의한 보안** 설계나 구현을 비공개로 함으로써 보안을 확보하는 방법. 이 방법은 비공개 정보가 유출되었을 때의 방어 수단이 존재하지 않으므로 권장되지 않습니다. Security Through Obscurity (STO)라고도 표기합니다.

Rust에는 [SBOM/소프트웨어 부품 명세서](https://ko.wikipedia.org/wiki/소프트웨어_공급망)를 만들기 위한 `cargo-auditable`이 있으며, 재현 가능한 빌드를 손상시키지 않고 바이너리의 정확한 크레이트 버전과 종속성 정보를 제공합니다.

프론트엔드 스택에 대해서는 비슷한 방법을 모르므로, 바이너리에서 프론트엔드 자산을 추출하는 것은 간단명료한 프로세스여야 합니다.
그런 다음 `npm Audit`과 같은 도구를 사용할 수 있게 될 것입니다.
이 추출 프로세스에 대한 [블로그 게시물](https://infosecwriteups.com/reverse-engineering-a-native-desktop-application-tauri-app-5a2d92772da5)은 이미 있지만, 간편한 도구는 없습니다.

Tauri에서는 특정 기능을 갖춘 Tauri 앱을 컴파일할 때 그러한 도구를 제공하거나 자산 추출을 용이하게 할 계획입니다.

[Burpsuite](https://portswigger.net/burp), [Zap](https://www.zaproxy.org/) 또는 [Caido](https://caido.io/)와 같은 "침투 테스트(pentesting)" 도구를 이용하려면, Webview로부터의 트래픽을 가로채고 테스트 프록시를 통과시켜야 합니다.
현재 Tauri에는 이를 실행하기 위한 Tauri 고유의 메서드는 없지만, 이 프로세스를 쉽게 수행하기 위한 작업이 진행 중입니다.

이러한 도구는 모두 소스 코드에 액세스하지 않고도 Tauri 애플리케이션을 적절하게 테스트하고 검사할 수 있으므로, Tauri 애플리케이션을 빌드할 때 고려해야 할 사항입니다.

Tauri는 앞으로도 관련 기능의 추가 지원과 구현을 계획하고 있습니다.

### WebView 강화

Tauri의 현재 "위협 모델"이나 Tauri가 참조하는 "영역 경계" 내에서는 WebView 자체에 추가적인 보안 제약을 추가할 수 없습니다. 또한 WebView는 메모리 안전성이 없는 언어로 작성된 스택(임시 저장 영역)의 가장 큰 부분이므로, WebView 프로세스를 더욱 샌드박스화하고 격리하는 방법을 조사하고 검토할 예정입니다.

> > > 《번역 주》 **영역 경계** 원문 "boundaries" 구체적으로 "무엇의" 경계인지는 불분명하지만, 여기서는 Tauri가 다룰 수 있는 범위의 경계로 해석했습니다. **메모리 불안전 언어** 원문 "an memory unsafe language" 메모리 액세스 시 프로그래밍 오류 방지 기능이나 제약이 결여된 프로그래밍 언어. 《참고》 위 내용에 대한 기본 정보는 Wikipedia의 "[메모리 안전성](https://ko.wikipedia.org/wiki/메모리_안전성)" 항목을 참조하십시오.

보안 공격의 영향을 완화하고 시스템 액세스용 IPC 브리지(프로세스 간 연결)를 강화하기 위해, Tauri 고유 및 외부의 샌드박스 방식을 평가할 예정입니다.
스택의 이 부분이 약점이라고 생각하지만, 현 세대의 WebView에서는 보안 강화와 익스플로잇 내성(보안 취약점 공격에 대한 내성)이 향상되었습니다.

### 퍼징(Fuzzing)

> > > 《번역 주》 **퍼징** 퍼즈 테스트. 컴퓨터 프로그램 검증 프로세스 중 하나. 유효하지 않거나, 예기치 않거나, 무작위 데이터(fuzz라고 함)를 입력하여 의도적으로 예외 상태를 발생시켜 시스템을 검증하는 방법. 자세한 내용은 Wikipedia의 "[퍼징](https://ko.wikipedia.org/wiki/퍼징)" 등을 참조하십시오.

Tauri 애플리케이션의 퍼징 프로세스를 더 효율적이고 간소화하기 위해, "모의 런타임"이나 기타 도구를 추가로 구현하여 개별 Tauri 애플리케이션의 설정이나 빌드를 용이하게 하는 것을 목표로 하고 있습니다.

Tauri는 다수의 운영 체제와 CPU 아키텍처를 지원하며, 일반적으로 앱에는 메모리 안전성이 없는 코드가 포함될 가능성이 거의 없거나 전혀 없습니다.
기존의 퍼징 도구나 라이브러리에서는 이러한 드문 퍼징의 "사용 사례"에 대응하지 않으므로, Tauri 퍼징 프레임워크를 구축하려면 이를 구현하고 [libAFL](https://github.com/AFLplusplus/LibAFL)과 같은 기존 라이브러리를 지원해야 합니다.

> > > 《번역 주》 **사용 사례**(use case) 사용자가 시스템을 이용하여 달성하는 구체적인 목표나 일련의 조작을 기술하고, 시스템에 필요한 기능 요구 사항을 명확히 한 것. 자세한 내용은 Wikipedia의 "사용 사례"(https://ko.wikipedia.org/wiki/유스_케이스) 등을 참조하십시오.

목표는 퍼징을 Tauri 애플리케이션 개발자에게 접근하기 쉽고 효율적으로 만드는 것입니다.
