sandboxing

2 posts

의존성이 환경 변수를 읽을 수 있다. JavaScript는 이를 허용한다

Ambient Authority란 Node.js 프로세스 내의 모든 코드가 파일 시스템, 네트워크, 환경에 접근할 수 있는 상태를 말한다. 여기서는 lockdown, compartment, 명시적인 capability 전달을 통해 이를 제거하는 방법을 설명한다.

하나의 손상된 전이 의존성이 당신의 를 외부로 유출하고, 파일 시스템에 쓰며, 외부 연결을 열 수 있다. 이를 위해 당신의 코드에 취약점이 있을 필요는 없다. 단지 같은 프로세스 안에 존재하기만 하면 된다. JavaScript에서는 기본적으로 모든 모듈이 런타임의 전체 권한을…

의존성은 디스크의 어떤 파일이든 읽을 수 있다. cap-std는 접근 권한을 요청하게 만든다.

Rust 표준 라이브러리는 모든 의존성에 주변 파일 시스템 권한을 부여한다. cap-std는 이를 기능 기반 API로 대체하여 코드가 파일을 열기 전에 해당 경로에 접근할 권리가 있음을 증명하도록 강제한다.

의존성 트리의 모든 크레이트는 를 열거나 디렉터리에 쓰거나, 프로젝트의 모든 파일을 열거할 수 있다. Rust 표준 라이브러리는 접근 권한을 묻지 않는다. 을 호출할 수 있는 코드라면 운영체제가 허용하는 어떤 경로든 접근할 수 있다고 가정한다. cap-std는 이러한 가정을 뒤집는다.…