2010-04-01 5 views
7

Ideone 사이트에서 사용자는 원격 서버에서 실행할 코드를 업로드합니다. 이것은 온라인 판사의 기능과 유사합니다.악성 코드로부터 온라인 판사를 보호하는 방법은 무엇입니까?

문제는 사용자가 시스템을 해킹하려고 시도하는 코드를 업로드 할 수 있다는 것입니다. C 및 C++에서는 특정 시스템 호출 집합을 비활성화하는 것이 쉽지만 (일부 .dll을 패치하는 것), 다른 언어에 대해서는 확신 할 수 없다는 것을 알고 있습니다.

온라인 판사가 고급 언어 (Erlang, Haskell)를 지원하려면 시스템을 어떻게 보호해야합니까?

+0

github에서 "safeexec"프로젝트를 검색 할 수 있습니다. – daveagp

답변

2

권한이없는 사용자로 샌드 박스에서 실행됩니다. 절대적으로 빠를 수는 없지만 지속적인 손상이나 심각한 손상을 초래할 수 있습니다. 또한 문제의 언어 런타임에 대한 가능한 옵션이나 수정에 의존하지 않습니다. 완전히 컴파일 된 언어 (즉, 런타임 해석기 없음)를 다루는 경우이 작업을 수행 할 수도 있습니다.

예를 들어 Erlang을 사용하십시오. Erlang을 실행하는 데 필요한 것만 포함하는 chroot jail을 설정하십시오. 비 특권 사용자 계정과 홈 디렉토리를 추가하십시오. 실행할 코드를 가져와 모든 파일/디렉토리 권한을 확인하고 권한이없는 UID로 변경 한 다음 코드를 실행하십시오.

위의 위키피디아 기사에서 감옥 설정에 대한 자세한 지침을 찾을 수 있습니다. 절차와 요구 사항은 OS마다 약간 씩 다릅니다.

관련 문제