서약 격리 메커니즘을 Linux로 이식할 예정입니다.

최근에 Cosmopolitan C 표준 라이브러리의 저자 를 통해 발표된 Redbean 플랫폼 Linux용 promise() 격리 메커니즘의 구현을 발표했습니다.

그것은 원래 OpenBSD 프로젝트에서 개발한 y 선택적으로 차단할 수 있습니다.응용 프로그램이 사용하지 않는 시스템 호출에 액세스 (일종의 시스템 호출 화이트리스트가 애플리케이션에 대해 구성되며 다른 호출은 금지됩니다). seccomp와 같이 Linux에서 사용할 수 있는 syscall 액세스 제어 메커니즘과 달리 서약 메커니즘은 처음부터 최대한 사용자 친화적으로 설계되었습니다.

systrace 메커니즘을 사용하여 OpenBSD 기본 환경에서 응용 프로그램을 격리하려는 실패한 계획은 개별 시스템 호출 수준에서 격리가 너무 복잡하고 시간 소모적이라는 것을 보여주었습니다.

대안으로 서약이 제안되었는데, 세부 정보로 이동하고 준비된 액세스 클래스를 조작하지 않고 격리 규칙을 생성할 수 있습니다..

예를 들어, 제공되는 클래스는 stdio(입력/출력), rpath(파일 읽기 전용), wpath(파일 쓰기), cpath(파일 생성), tmppath(임시 파일 작업), inet(소켓 네트워크), unix(유닉스 소켓 ), dns(DNS 확인), getpw(사용자 데이터베이스에 대한 읽기 액세스), ioctl(ioctl 호출), proc(프로세스 제어), exec(시작 프로세스) 및 id(권한 제어).

시스템 호출 작업 규칙 허용된 시스템 호출 클래스 목록을 포함하는 주석 형식으로 지정됩니다. 및 액세스가 허용되는 파일 경로의 배열입니다. 수정된 응용 프로그램을 컴파일하고 실행한 후 커널은 지정된 규칙의 준수 여부를 모니터링하는 작업을 인수합니다.

이와 별도로, 코드를 변경하지 않고 애플리케이션을 격리하는 기능으로 구별되는 FreeBSD에 대한 서약 구현이 개발 중이며 OpenBSD에서 서약 호출은 기본 환경과의 긴밀한 통합 및 코드에 주석 추가를 목표로 합니다. 각각의.

서약은 상사가 Linux와 같은 것을 사용해야 한다고 말할 때 우리 모두가 탐내는 금단의 열매와 같습니다. 그게 왜 중요합니까? promise()가 실제로 보안을 이해할 수 있게 해주기 때문입니다. Linux에는 단순한 인간이 이해할 수 있는 보안 계층이 없었습니다.

Linux 서약 포트 개발자는 FreeBSD에서 힌트를 얻었습니다. 코드를 변경하는 대신 애플리케이션 코드를 변경하지 않고도 제한을 적용할 수 있는 추가 유틸리티를 promise.com에서 준비했습니다. 예를 들어 stdio, rpath, inet 및 threadtdio 시스템 호출 클래스에만 액세스하여 curl 유틸리티를 실행하려면 "./pledge.com -p 'stdio rpath inet thread' curl http://example.com »을 실행하면 됩니다. .

이 유틸리티는 RHEL6 이후의 모든 Linux 배포판에서 작동합니다. 루트 액세스가 필요하지 않습니다. 또한, 코스모폴리탄 라이브러리를 기반으로 C 언어 프로그램 코드의 제한 사항을 관리하기 위한 API가 제공되며, 이를 통해 무엇보다도 애플리케이션의 특정 기능과 관련하여 액세스를 선택적으로 제한하는 엔클레이브를 생성할 수 있습니다.

과거에 이것을 시도한 몇몇 개발자가 있었습니다. 이 프로젝트의 대부분은 완료되지 않았기 때문에 이름을 밝히지 않겠습니다. SECOMP와 관련하여 온라인 자습서는 시스템 호출을 화이트리스트에 추가하는 방법만 설명하므로 대부분의 사람들은 인수를 필터링하는 방법을 알아내기 전에 관심을 잃습니다. 앞으로 진행한 프로젝트에는 setuid/setgid/sticky 비트를 변경하는 것과 같은 실수도 있었습니다. 따라서 현재의 대안을 사용해서는 안 됩니다. 이러한 노력을 통해 그 어느 때보다 확약()에 더 가까워졌다고 생각합니다.

구현에는 커널 변경이 필요하지 않습니다. 유틸리티 제약 조건은 SECCOMP BPF 규칙으로 변환되고 Linux의 기본 시스템 호출 격리 메커니즘을 사용하여 처리됩니다. 예를 들어, promise("stdio rpath", 0)를 호출하면 BPF 필터로 변환됩니다.

마지막으로, 그것에 대해 더 알고 싶다면 자세한 내용을 참조하십시오. 다음 링크에서.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.