템플릿의 Symlinks가 보안 문제입니까? 그렇다면, 왜 그렇습니까?


35

Magento는 심볼릭 링크를 통해 템플릿을 사용하지 않는 것이 좋습니다.

Advanced > Developer > Template Settings > Allow Symlinks

경고! 이 기능은 잠재적 인 보안 위험을 나타내므로 프로덕션 환경에서는 권장하지 않습니다.

오늘까지 나는 여기서 어떤 위험도 볼 수 없습니다.

  • 위험은 무엇입니까?

8
나는 이것이 공유 호스트에 대한 위험이라고 생각할 수 있으며, 처음에는 전자 상거래에 사용해서는 안됩니다.
benmarks

3
@ 벤 마크스. 왜 이것을 대답으로 넣지 않습니까?
Marius

2
아주 좋은 질문 @Fabi!
user487772

3
나는 다른 사람들이 더 완전한 답을 제시 할 것이라는 것을 알았습니다. 나는
옳았다

3
@benmarks 웹 사이트는 어떤 식 으로든 질문 당 더 높은 답변이 필요합니다. ;-)
user487772

답변:


40

심볼릭 링크가 반드시 나쁘지는 않습니다.

우선 : symlink 대상을 열려고하면 대상의 파일 권한이 적용됩니다. symlink 대상을 읽거나 쓰거나 실행할 수 없으면 아무 일도 일어나지 않습니다.

그러나 : 문서 루트 외부에서 파일을 실행할 수 있습니다 (때로는 실제로 파일로 수행하려는 작업입니까?). END_LINK하면 관심이가 아닌 suEXEC를 환경과 경우 문제가 발생할 수 있습니다 apache또는 www-data에 사용자가 다른 계정에서 파일을 제공을 담당하고있는 공유 호스팅. 시스템 사용자는 다른 고객의 파일에 액세스 할 수 없지만 apache/www-data대부분의 공유 계정에 대한 읽기 권한이 있습니다. 한 사용자가 공유 호스트에서 다른 사용자의 파일에 액세스 할 수있는 시나리오 일 수 있습니다. 자신의 사용자가 아니라 apache/www-data사용자 와 브라우저를 통해 파일에 액세스합니다 . 요약하면 :이 시나리오에서는 다른 사용자의 파일에 액세스 할 수 있습니다 => 나쁜.

다음 나쁜 점은 공격자가 / etc / passwd와 같은 파일에 대한 심볼릭 링크를 생성하고이 데이터를 다운로드하여이 정보를 계속 진행할 수 있다는 것입니다. 이것은 심볼릭 링크뿐만 아니라 잘못된 서버 구성까지입니다 (이러한 파일에 대한 액세스가 엄격히 제한되어 있습니다). 따라서 심볼릭 링크를 사용하지 않으면 더 많은 공격을 막을 수 있습니다.

심볼릭 링크 자체가 보안 위험이 아니라 서버 구성 문제입니다.


5
대단한 설명-이것은 정답입니다. 본질적으로 "자신의 위험에 따라 사용"
philwinkle

2
아마도 언급 할 가치가있을 것입니다 ( '업그레이드에 대한 혐오'환경에서 보안 관련 버그와 항상 균형을 유지하지만)-Magento는 심볼 링크 app/design를 다른 사소한 익스플로잇과 결합 할 때 폴더 외부의 템플릿 및 레이아웃 파일과 관련된 익스플로잇과 관련이 있습니다. 권한 상승 및 기타 서버 익스플로잇을 위해 관리자가 사용할 수 있습니다.
Alan Storm

1
심볼릭 링크를 지원하려면 Apache httpd에서 SymLinksIfOwnerMatch옵션이 대신 사용되는 것을 고려하십시오 FollowSymlinks.
hakre

15

네, 그렇기 때문에 웹 서버는 일반적으로 "심볼 링크를 따르지 않음"구성 또는 "동일한 사용자로 대상의 심볼릭 링크 만 따르기"를 갖는 이유는 무엇입니까?

그리고 웹 서버는 보통 보이는 / etc / shadow와 같은 것을 피하려고 시도하기 때문에 템플릿이 include ()를 통해 구문 분석되므로 magento 템플릿이 훨씬 더 위험합니다. 따라서 파일을 완전히 제어하지 않으면 매우 강력한 보안 누출이 발생할 수 있습니다.

다른 문제가있을 수 있지만, 모든 잠재적 인 공격 시나리오를 알고있는 사람은 많지만 문제가 적은 다른 보안 허점의 조합으로 인해 큰 문제가 발생할 수 있습니다.

또한 얼마 전에 미디어 디렉토리와 심볼릭 링크에 관한 보안 픽스가 있었으므로 가능한 공격 시나리오를 찾아보아야합니다.


1
다른 사람이 서버에서 심볼릭 링크를 만들 수 있다면 이미 그보다 큰 문제에 처한 것입니다. 내 말은-아래 Ben의 의견을 참조하십시오. 공유 호스팅에서 누가 Magento를 호스팅합니까? 요즘 공유 호스팅에서 누가 무엇을 호스팅하고 왜? :)
Sven

3
단순히 사람들이 있기 때문에. 당신은 다른 사람들이 합리적으로 행동하기를 기대할 수 없습니다. 이 작업을 수행하는 사람은 항상 있으며 일반적인 서버 구성과 관련하여 실수를 저지르는 사람이 항상 있습니다.
Flyingmana

14

나는 이것이 공유 호스트에 대한 위험이라고 생각할 수 있으며, 처음에는 전자 상거래에 사용해서는 안됩니다.


1
불행히도 그것은 꽤 많이 사용됩니다.
Piotr Kaminski

2
PCI Security Council 표준에 따르면 기술적으로 퍼블릭 클라우드는 다중 테넌트이므로 "위험"으로 간주됩니다.
philwinkle

4

Magento 패치 SUPEE-9767 에는 APPSEC-1281 : symlinks를 통한 원격 코드 실행이 포함되어 있습니다 . 따라서 템플릿의 Symlink는 보안 문제입니다.

유형 :
원격 코드 실행 (RCE)

CVSSv3 심각도 :
8.8 (높음)

알려진 공격 :
예. 공격자는 관리자 액세스 권한을 얻은 후 구성 보호를 비활성화하고 악성 코드를 업로드하고 있습니다.

설명 :
구성 설정에서 AllowSymlinks 옵션을 사용하면 악성 코드가 포함 된 이미지를 업로드 할 수 있습니다. 이 옵션은 기본적으로 비활성화되어 있지만 구성 설정을 저장하기위한 액세스 권한이있는 공격자는이 옵션을 활성화하고 원격으로 코드를 실행할 수 있습니다.

영향을받는 제품 :
1.9.3.3 이전의 Magento CE 및 1.14.3.3 이전의 Magento EE

고정 :
CE 1.9.3.3, EE 1.14.3.3, SUPEE-9767

기자 :
Wilko Nienhaus


0

허용하지 않는 것이 좋습니다. 심볼릭 링크를 사용하는 동안 js 로딩 오류가 발생했습니다.
많은;

TypeError : $ .widget은 함수가 아닙니다

페이지를 성공적으로로드하려면 4-5 새로 고침을 시도해야합니다.
리소스를 닫은 후 처음으로 리소스로드가 느리게 배포되지는 않지만 js 오류가 사라졌습니다.

추신 : symlink를 비활성화 한 후에는 static.php를 변경할 때마다 배포 된 파일 사본을 삭제해야합니다.


1
죄송합니다. 이해가되지 않습니다. 작동하기 전에 4-5 번 새로 고침해야하나요? 이것은 심볼릭 링크와 어떤 관련이 있습니까?
Fabian Blechschmidt

symlinks를 비활성화하기 전에 :) 내 영어로 죄송합니다.
rbostan

우리는 magento2에 대해 이야기하고 있습니까? 그렇다면 나는 이해하지 못한다는 것을 이해합니다-아직 2에 대한 단서가 없습니다.
Fabian Blechschmidt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.