보안

Parla는 마이크를 다루기 때문에 악용하기 어렵도록 만들어졌습니다. 목소리는 절대 기기를 벗어나지 않고, 확장 프로그램은 가능한 한 적은 권한만 요청하며, 저희가 배포하는 모든 코드는 사용자에게 도달하기 전에 고정되고 검사되고 테스트됩니다.

Parla를 사용하는 동안

  • 목소리는 기기의 브라우저 안에서 정리됩니다. Parla에는 오디오를 받는 서버가 없고, 도난당할 수 있는 계정이나 비밀번호도 없습니다.
  • 엔진은 서드파티 라이브러리 없이 Rust로 직접 작성한 저희 코드이며, 브라우저의 샌드박스 안에서 WebAssembly로 실행됩니다. AI 모델은 프로그램이 아니라 데이터(숫자)입니다. 모델 제작자의 코드는 사용자 컴퓨터에서 전혀 실행되지 않습니다.
  • 확장 프로그램은 마이크 정리에 필요한 것만 요청합니다: 설정 저장, 그리고 마이크를 사용하는 페이지에서의 실행. 확장 프로그램 자체 페이지는 자체 스크립트만 실행합니다(엄격한 Content Security Policy).
  • 웹 페이지는 좁은 통로를 통해서만 확장 프로그램에 접근합니다. 엔진 파일만 받을 수 있고 그 외에는 아무것도 받을 수 없으며, 보내는 모든 내용은 검사되고 크기가 제한됩니다.
  • 보고서는 직접 켜기 전까지 꺼져 있습니다. 익명이며, 모든 항목이 문서에 나와 있습니다.

저희 코드에서 사용자 브라우저까지

  • 빌드에 쓰이는 모든 것은 정확한 버전으로 고정되고 지문으로 확인됩니다: GitHub 액션은 커밋으로, 컨테이너 이미지는 다이제스트로, 다운로드는 SHA-256으로, npm 및 Python 패키지는 lockfile로.
  • 출시된 지 3일이 지나지 않은 버전은 사용하지 않습니다. 악성 패키지 버전은 대부분 며칠 안에 발견되어 삭제되므로, 먼저 걸러질 시간을 둡니다. 자동 업데이트는 일주일을 기다리며, 각 업데이트는 반영되기 전에 빌드되고 테스트됩니다.
  • 패키지는 설치 스크립트를 절대 실행할 수 없으며, 모든 빌드에서 npm 레지스트리의 서명을 검증합니다.
  • 릴리스는 메인 브랜치에서 자동화된 파이프라인만 빌드합니다. 스토어와 npm 자격 증명은 릴리스 단계만 사용할 수 있는 보호된 환경에 보관되며, 빌드는 저장소의 액세스 토큰을 보관하지 않습니다.

모든 변경 사항마다 검사

  • 정적 분석: CodeQL이 TypeScript, Rust 엔진, 빌드 워크플로를 분석하고, zizmor가 워크플로를 감사합니다.
  • 모든 변경 시와 매주 웹사이트 동적 스캔(OWASP ZAP).
  • 알려진 취약점이 있는 패키지를 추가하는 변경은 차단되며, Dependabot 알림이 모든 lockfile을 감시합니다.
  • 푸시 보호가 포함된 비밀 정보 스캔: GitHub는 비밀번호나 키가 들어 있는 커밋을 모두 거부합니다.
  • 엄격한 타입의 코드(TypeScript 및 Python)와 모든 릴리스 전 Chrome 및 Firefox 자동 테스트.

문제를 발견하셨나요?

비공개로 알려 주세요: GitHub에서 취약점 신고하기. 그래야 공개되기 전에 수정할 수 있습니다.

이 페이지의 모든 내용은 확인할 수 있습니다. 코드, 빌드 파이프라인, 보안 검사가 모두 오픈 소스입니다. 릴리스가 빌드되고 검사되는 방법