Deno의 보안 모델은 샌드박스가 아니라 샌드박스 흉내다

I'm not a fan of Deno's security model (2024)

Deno는 '기본적으로 안전함'을 내세우며 권한 시스템으로 표준 라이브러리 접근을 통제하지만, 저자는 이 모델이 근본적으로 불안전하고 오해를 부른다고 주장한다. 권한 프롬프트가 공격자가 제어하는 터미널 채널에 출력된다는 점, 그리고 --allow-run=uname 같은 권한이 PATH와 LD_PRELOAD 같은 환경 변수를 통해 손쉽게 우회된다는 점을 실제 코드로 시연한다. 결국 프로세스 자체가 샌드박스되지 않았기에, 진짜 격리가 필요하면 bwrap을 쓰라고 권한다.

Deno 프로세스는 실제로 샌드박스된 것이 아니라, 샌드박스인 척할 뿐이다.
  1. jFriedensreich

    나는 Deno의 팬이었다. 적어도 그들은 시도를 했으니까. 권한을 제대로 처리하려는 대체 런타임이 있었던 것도 아니고, 사용자 상호작용과 함께 비동기(!) 권한을 허용하는 운영체제 도구가 있는 것도 아니잖아. 우리에게 정말 필요한 건 사용하기 간단하면서도 '제품화된', 그러나 진정한 오픈 소스 솔루션이야. 어떤 소프트웨어든 실행을 중단시키고 run, fs, 네트워크 등에 대한 정책을 평가할 수 있고, 프로세스와 컨텍스트 수준에서 추론할 수 있는 그런 거 말이지.

  2. ximm

    그리고 내가 알기로는, 이건 지금 OpenCode나 비슷한 것들이 쓰는 것과 정확히 같은 보안 모델이야

  3. hoppp

    Deno는 공식 지원이 1년 남았어...

    나는 그 보안 모델이 좋았어. 적어도 node와 달리 뭔가가 있었으니까.

  4. phyzome

    사실 나는 가끔 사용자로부터 민감한 입력을 요청해야 하는 터미널 프로그램을 가지고 있어. 공격자의 데이터가 출력된 뒤에 요청해야 할 수도 있지. 어떻게 처리해야 할지 계속 고민 중이었어!

    내 계획은 유니코드로 (손실 있게) 인코딩하고, 제어 문자를 제거하고, 시각적인 프레임을 추가하는 거였어. 그 외에 고려해야 할 게 있을까? 표준적인 접근 방식이 있나? 아직 이걸 제대로 조사해보진 않았는데, 여기서 나온 김에 누군가 알지도 모르겠다 싶어서.

    (관심 있는 사람이 있으면 이건 https://codeberg.org/timmc/breakmancer 야.)

  5. kevin_thibedeau

    > 권한 프롬프트가 "부분적으로 보인다" (이모지가 보인다)

    터미널은 이모지를 텍스트 표시 형태로 렌더링하도록 설정할 수 있어. 그러면 이모지가 일반 텍스트처럼 이스케이프 시퀀스로 색을 입힐 수 있는 단색 글리프가 되지. 보안 모델을 여기에 걸어두면 안 되는 문제야.

이 날의 다른 글

2026-11-08