Linux는 오픈 소스입니다. 코드에 백도어나 트로이 목마가 없다고 얼마나 확신할 수 있습니까? [폐쇄]

Linux는 오픈 소스입니다. 코드에 백도어나 트로이 목마가 없다고 얼마나 확신할 수 있습니까? [폐쇄]

Linux에는 수백만 줄의 코드와 수많은 장치 드라이버가 있으므로 트랩도어와 트로이 목마를 숨길 수 있는 장소가 많습니다. 대규모 프로그램을 이해하는 데는 오랜 시간이 걸리고 소프트웨어에는 항상 잠재적인 결함이 있기 때문에 NSA나 FSB가 Linux에 악성 코드를 도입하려고 하지 않는다는 것이 믿기지 않습니다. 그들은 항상 Windows와 iOS의 제로데이 취약점을 찾고 있습니다. Linux는 순항 미사일을 포함한 모든 장치에서 실행되므로 이는 문제가 될 것입니다.

답변1

네, 당신이 말하는 공격은 (공급망 공격오픈 소스 프로젝트에서)은 가능할 뿐만 아니라 악의적인 행위자에 의해 시도되는 경우도 많습니다(). 하지만 소스코드가 공개되어 있기 때문에 결국 악성코드가 발견될 수밖에 없으며, 특히 대규모 프로젝트의 경우 더욱 그렇습니다. 이를 소스 코드에 액세스할 수 없고 공급업체를 암묵적으로 신뢰해야 하는 비공개 소스와 비교하면 일반적으로 오픈 소스 모델이 더 안전하다는 것을 알게 될 것입니다.

답변2

이 질문은 흥미롭기는 하지만 "Linux"에 대한 상당히 일반적인 통념과 오해를 포함하고 있습니다. 우선, Linux 운영체제 같은 것은 없습니다. Linux는 커널이며, 이 경우 이러한 구별이 중요합니다.

커널은 주요 주요 릴리스이든 마이너 패치 릴리스이든 지속적으로 릴리스됩니다. 일부 공급업체는 주요 버전 번호를 변경하지 않고 리포지토리 커널을 패치합니다. 이는 어려운 일입니다. 보안이 걱정된다면 해당 접근 방식을 사용하지 않을 것입니다. 왜냐하면 두 번째 수준의 가능한 버그, 즉 원래 Linux 커널 버전을 추가하기 때문입니다. 코드 베이스, 둘째, 배포 저장소에서 안정적인 커널을 패치하는 데 사용되는 패치 세트입니다.

따라서 "리눅스"라는 것은 없습니다. Linux 커널의 경우에도 특정 순간에 이루어진 특정 커밋을 기반으로 하는 버전이 있습니다. 이러한 릴리스는 장기 지원일 수 있습니다. 즉, 현재 Greg Kohn-Hartman이 보안 수정 사항과 같은 항목을 백포트하기 위해 지원 수명 주기 동안 이러한 릴리스를 패치하고 있거나 배포판에서 커널을 선택하고 동결한 후 해당 A 분기를 유지 관리하고 있음을 의미합니다. 예를 들어, 현재 IBM이 소유하고 있는 회사인 Redhat은 내부 문화 측면에서 다른 회사에 속하지 않았을 때와는 다른 기업입니다.

누군가가 "linux this 또는 linux that"이라고 묻는 것을 볼 때마다 Windows 10, 11 또는 OSX 버전 x 또는 y, Android 버전 x 또는 y 또는 iOS 버전이 아닌 해당 단어에 해당하는 실제 항목이 없기 때문에 눈살을 찌푸립니다. x 또는 y는 모두 잘 알려진 엔터티입니다.

이 문제가 실제로 존재하고 보안 문제가 게시자의 마음을 사로잡고 있다고 가정하면, 우리가 이미 알고 있는 내용은 다음과 같습니다.

  • 서버를 포함하여 액세스 체인의 어느 곳에서도 Windows를 실행하고 있지 않습니다.
  • Android를 사용하거나 전화 등을 통해 어떤 것에도 액세스할 수 없습니다.
  • 데스크톱 유형의 상황에 대해 이야기하고 있다면 Google 스파이웨어를 제외한 Chromium과 같은 완전한 샌드박스 브라우저를 사용하고 있는 것입니다.
  • 객관적으로 서버에 대해 이야기하면 GUI 항목, 데스크탑, 창 관리자 등 추가 보안 취약점을 유발할 수 있는 추가 항목이 실행되지 않습니다. 그렇다면 보안은 분명히 우선 순위가 아닙니다.
  • 실행 중인 시스템은 제거되어 실행하도록 구성한 것만 실행하며 추가 패키지나 서비스는 포함하지 않습니다. 즉, Debian Net Install과 같이 기본 베어본 설치를 허용하는 배포판을 제외한 거의 모든 배포판의 기본 설치가 아닙니다.

이 모든 것이 적용된다면 우리는 아마도 보안에 상당히 진지한 노력을 기울이고 있을 것입니다. 이 시점에서는 적절하게 구성된 SELinux 또는 기타 잘 구성된 방화벽과 같은 Linux 커널 보안 기능에 초점을 맞추는 것이 합리적입니다. 인터넷 등

그러나 시작하기 전에 이러한 단어가 무엇을 의미하는지 파악하는 것이 중요합니다. 예를 들어 "리눅스는 안전합니까?"라고 묻는 것은 기본적으로 이 맥락에서는 아무 의미가 없습니다. 예를 들어 모든 새 버전으로 업데이트된 현재 커널을 실행하고 있다고 가정할 때 당신은 제대로 작성되지 않은 비보안 소프트웨어가 포함되어 있고 일부 표준 해킹 기술(예: 단순 버퍼 오버플로)을 통해 케이지에서 빠져 나올 수 있는 Xorg 데스크탑을 실행하고 있다면 보안이 전혀 없습니다.

SELinux(개인적으로는 익숙하지 않지만 제가 생각하는 기본 아이디어는 이해합니다)가 올바르게 구성되면 특정 공격 벡터가 꽤 잘 완화될 수 있다고 이해합니다.

반면에, 보안이 정말로 가장 큰 관심사라고 확신한다면 OpenBSD를 진지하게 고려하게 될 것입니다. OpenBSD는 보안에 있어서 타협하지 않는 사람들에 의해 개발되었습니다. 그것은 숫자가 우선이고 다른 것은 아무것도 아닙니다. 모든 것은 그 다음입니다. . 그건 그렇고, 이것은 매우 잘 설계된 훌륭한 운영 체제입니다.

이는 매우 엄격하게 제어되고 매우 높은 코딩 표준을 갖고 있으며 해당 분야의 숙련된 사람들에 의해 검사되고 무작위 코드나 기여자를 전혀 허용하지 않기 때문에 진정한 보안을 위한 최선의 선택입니다. 또한 대규모 프로젝트가 아니기 때문에 설계상 공격 표면이 훨씬 더 작으며 일부 사용자나 다른 사용자에게 불편을 주지 않도록 유지 관리되지 않거나 디버깅할 수 없는 코드를 유지하는 대신 항상 덤프하기 때문입니다. 이것은 안전이 정말로 최우선으로 여겨지는 부분입니다.

모든 코드베이스와 마찬가지로 트릭을 도입할 수 있습니다. 특히 시간이 지남에 따라 관련이 없는 커밋으로 분리하는 경우 더욱 그렇습니다. 나는 이 트릭을 사악한 목적이 아닌 오래된 프로젝트에서 직접 사용했습니다. 단지 사용자가 실패 위험을 높이는 방식으로 사용할 수 있다는 사실을 알리고 싶지 않았기 때문입니다. 오늘날까지 이 트릭은 누구도 발견하지 못했습니다. 매우 간단합니다. 저는 접근 방식을 취하고 이를 여러 커밋으로 나누고 코드의 분명히 다른 위치에서 트릭이 작동하도록 하는 개별 논리 비트를 찾았습니다.

그러나 Linux를 사용하는 사람들은 매우 훌륭하고 우수성이 무엇인지 알고 OpenBSD를 따르며 기업 데이터 센터 사용자를 위해 너무 많은 타협을 마다하지 않지만 이러한 사항을 알고 적극적으로 수정해 왔습니다. 그들과 함께 문제를 해결하세요.

따라서 이것이 허수아비가 아니라면 우리는 귀하가 OSX나 Windows를 사용하고 있지 않고 Android를 사용하고 있지 않다는 것을 알고 있습니다. 최소한 보안이 유지되어야 하는 시스템에 액세스하거나 처리할 수 있는 어떤 것도 사용하지 않는다는 것입니다. 그렇지 않은 경우에는 실제로 문제가 되지 않습니다.

비자유 소프트웨어의 본질과 본질은 소스 코드를 볼 수 없다는 것입니다. 즉, osx와 windows에 관해 질문조차 할 수 없다는 뜻입니다. 그리고 제 기억이 맞다면 Windows는 최근에 엄청난 데이터 유출 사고를 당했고, 코드 베이스는 여러 번 긁힐 정도로 오랫동안 지하 크래커에 노출되었습니다.

다소 놀랍게도 OpenBSD는 실제로 보안 및 좋은 보안 관행 준수와 관련하여 OSX 커널(osx 데스크탑이나 프로그램이 아닌 커널은 무엇이든 될 수 있음)에 상당히 높은 점수를 제공합니다. 그러나 이것은 내가 OSX와 상호 작용할 때 개인적으로 본 것과 일치하지 않습니다. 소프트웨어의 여러 영역에서 심각하게 부족한 엉성하고 매우 견고하지 않은 시스템이라는 것을 알았습니다. 표지 아래에 있는 내용에 대한 자신감. 오픈소스가 아니어서 확인할 수 없습니다.

커널과 함께 또는 커널에서 실행되는 항목(추가 모듈, 드라이버, 필요하지 않은 항목 등)이 많을수록 커널 위에서 실행되는 항목이 많아질수록 보안 허점이 더 많아집니다.

Linux 커널, BSD 커널 등의 경우 레이아웃은 대략 다음과 같습니다.

커널 > 셸, 도구, 서버, 프로세스 관리 등 > 디스플레이 > 데스크탑 > 데스크탑 프로그램. 기본적으로 서버만 실행하는 커널과 서버와 상호 작용하는 셸을 실행할 수 있는데, 이것이 가장 안전합니다.

systemd와 같이 성장하는 blob은 실제 보안에 관해 이야기할 때 매우 관련성이 높은 또 다른 문제입니다. 이는 완전히 추적하거나 이해하기가 약간 어렵습니다. 이는 PID 1로 실행되지만 본질적으로 너무 많은 작업을 수행하기 때문에 중요한 위험 요소라고 생각합니다. 그러나 systemd는 Linux를 실행하는 데 필요하지 않으므로 다시 보안 우선순위로 귀결되어 필요한 것만 실행하고 실행 중인 모든 항목이 설치되는 이유를 이해합니다.

즉, 내 워크스테이션에는 약 30GiB의 데이터가 포함된 / 파티션이 있습니다. 그 중 1GiB는 커널이고 나머지는 서버, 프로그램, 데스크톱, 디스플레이 관리자 등입니다.

이것은 대부분의 사람들이 "Linux"라는 용어를 사용할 때 언급하는 것이므로 그다지 유용한 용어가 아닙니다.

그러나 나는 폐쇄 소스 OS보다는 Linux 커널을 사용하는 사람들을 신뢰하는 경향이 있습니다. 또는 비자유 nvidia 커널 드라이버 blob 또는 "펌웨어"라고도 불리는 wifi blob과 같은 비자유 블록 및 blob이 큰 OS를 사용하는 OS를 신뢰하는 경향이 있습니다. , 적어도 미국에서는 법적 요구 사항에 따라 비공개 소스이기도 합니다.

하지만 그 외에 보안을 최우선으로 생각한다면 OpenBSD를 실행하겠습니다. 둘째, 저는 Linux를 실행하는 베어본 현재 커널 서버를 실행하고 있으며 필요한 도구만 올바르게 잠기고 보호되어 실행하고 있습니다. 제가 알고 있는 모든 운영 체제 중에서 OpenBSD만이 제대로 잠겨 보호되고 있습니다.

관련 정보