SUPEE-9767, 모드 맨 및 심볼릭 링크


16

SUPEE-9767으로 Magento 상점을 패치하고 싶습니다. SUPEE-9767에 대한 문서는 패치를 적용하기 전에 설정 해제 심볼릭 링크로 나에게 말한다 :

패치를 적용하거나 최신 릴리스로 업그레이드하기 전에 Symlinks 설정을 비활성화하십시오. 설정이 활성화 된 경우 구성 파일 설정을 무시하고 변경하면 데이터베이스를 직접 수정해야합니다.

그러나 modman 을 사용 하여 모듈을 관리하고 일부 모듈이 템플릿 파일을 사용하기 때문에 modman의 README의 제안에 따라 Symlinks 설정이 활성화됩니다. 보안 패치 SUPEE-9767-가능한 문제 의 게시물 중 하나로 Symlinks 설정을 활성화 된 상태로 두는 것이 안전 합니까? 제안합니다 (새 사용자이므로 아직 게시물에 댓글을 달 수 없습니다)?

modagent를 사용하여 Magento 1.x 모듈을 관리하는 사용자는 symlink를 비활성화하지 않아야합니다. 이는 modman 모듈을 비활성화합니다.

Symlinks 설정을 활성화 한 상태에서 상점이 APPSEC-1281 : symlinks를 통한 원격 코드 실행에 노출되지 않습니까?이 패치로 해결되는 보안 위협은 무엇입니까?

이 패치 후에 modman을 템플릿 파일과 함께 사용하는 다른 방법이 있습니까? (modman의 README가 언급 한 "Mage / Core / Block / Template.php의 패치 된 버전"옵션에 대해서는 알고 있지만 코어 파일을 패치하는 것은 위험 해 보입니다.)


1
프로젝트에서 Modman과 Composer를 사용하고 있습니다. 수년 동안 Magento의 Symlinks 옵션은 폭탄으로 간주되지 않았습니다. 갑자기 폭탄입니다! 알림과 설명이없는 이러한 변경은 많은 사람들에게 많은 문제를 야기 할 것입니다. Magento의 Modman과 Composer의 미래에 대해 슬 Sad니다.
ADDISON74

1
그것은 상당히 도전입니다. 투자를 기꺼이하려는 경우 병합 (심볼릭 링크없이) 아티팩트를 생성하는 빌드 프로세스를 작성하는 것이 정말 좋은 방법입니다.
Swift에서 조셉 Otter

이에 대한 훌륭한 기사는 tomlankhorst.nl/… 에서 찾을 수 있습니다. 여기 에서 그는 "에이전트 사용 가능"경고를 제거하는 방법도 설명합니다. Magento 1.9.3.4.
ehannes

답변:


14

이 변경에 대한 몇 가지 설명은 다음과 같습니다.

먼저 Peter O'Callaghan이 설명을 읽으면 크게 이해하게 될 것입니다 : https://peterocallaghan.co.uk/2017/06/appsec-1281-dangerous-symlinks/

또 다른 흥미로운 읽을 거리는 Max Chadwick 의이 게시물입니다 https://maxchadwick.xyz/blog/what-allow-symlinks-actually-does

이 수정은 실제로 템플릿 지시문을 통해 이미지와 같은 업로드 가능한 컨텐츠를 호출하는 것에 관한 것입니다.

심볼릭 링크와 관련된 문제는 관리자 액세스로만 이용할 수 있으며 Magento는 이미지 업로드에 대한 보호 기능을 추가했습니다.

그것들은 설정 자체뿐만 아니라 그것을 악용하는 알려진 방법에 대한 보호 장치입니다.

따라서 관련된 위험을 이해하면 심볼릭 링크를 활성화 된 상태로 둘 수 있습니다.

새로 설치하기 위해 활성화해야하는 경우 다음을 실행할 수 있습니다.

UPDATE core_config_data SET value = 1 WHERE path = "dev/template/allow_symlink";

심볼릭 링크를 활성화 한 상태로두면 "APPSEC-1281 : 심볼릭 링크를 통한 원격 코드 실행"으로부터 작업장을 어떻게 보호 할 수 있습니까?
ehannes 2016 년

악용에 백엔드 액세스가 필요하므로 백엔드에 대한 액세스를 보호하여 @ehannes. 또한 이미지 업로드에는 추가 콜백 유효성 검사가 있습니다.
디지털 피아니즘의 Raphael

3
관리자 액세스 권한을 얻으면 전체 Magento 백엔드 인터페이스에 액세스 할 수 있습니다. 이미지 업로드 스크립트에서 발견 된이 단계의 악용에 관심이있는 사람은 누구입니까? 악의적 인 사용자는 모든 제품을 삭제하고 상상할 수없는 일을 할 수 있습니다. 토론은 "진정한 관리자가 여러 가지 방법으로 백엔드를 보호하지 않는 바보이기 때문에이 사용자가 관리자 권한을 얻는 경우"로 시작해야합니다.
ADDISON74


2
Peter O'Callaghan은 "따라서 누군가 누군가가 관리자 패널에 액세스 할 수 있다면 악의적 인 포함을 수행하여 RCE를 달성 할 수 있습니다"라고 말합니다. 이것은이 토론에서 일반적인 결론 인 것 같습니다. 앞에서 언급했듯이 악의적 인 사용자가 관리자 패널에 액세스 할 수있는 경우 RCE보다 걱정할 사항이 더 있습니다. 누구든지 토론에 추가해야 할 것이 있으면하십시오. 어쨌든, 나는 당신이 @RaphaelatDigitalPianism을 훨씬 더 명확하게 만들었다 고 생각 하며이 대답을 받아 들일 것입니다.
ehannes

6

이 문제는 심볼릭 링크가 아니며, 다음과 같은 수준에 도달하는 경로입니다 ../../../../../media/tmp/hahaha.png. 내가 틀렸다면 나를 깨우 치십시오. "수정"의 제목은 "심볼 링크 허용"이며이를 활성화하면을 사용하여 구현 된 검사가 비활성화됩니다 realpath(). 제 생각에는 그냥 안전한 더욱 확대됨과 심볼릭 링크와 여전히 호환 같다 수정은 사용하는 것입니다 strpos($path, '..')및 / 또는이 있는지 확인하기 위해 realpath()같은 특정 위험 디렉토리 일치 mediavar. 이와 같이 구현하면 구성 할 필요가 없으며 항상 활성화되어 수천 개의 상점을 중단하지 않아도됩니다.

어쨌든, 웹 서버 사용자는 소스 코드 디렉토리에 파일을 쓸 수있는 권한이 없어야합니다 (Magento Connect처럼 ...). 악성 코드가 어딘가에 작성되어 블록 템플릿으로 실행되는 것을 방지 할 수있는 또 다른 방법입니다.

따라서 심볼릭 링크에 대한이 공격은 잘못 지시되었으며 더 나은 수정이 존재합니다. 사실, 나는 1 년 전에 하나제공 했으며 modman github README에 링크가 있습니다.


0

composer 파일의 여분으로 magento-deploystrategy를 복사하도록 설정하면 파일이 Symlinks가 아닌 공급 업체 폴더에서 복사됩니다.

    "extra":{
        "magento-root-dir":"./",
        "magento-deploystrategy":"copy",
        "magento-force": true
    }

그런 다음 core_config_data를 수정하여 dev / template / allow_symlink의 값을 0으로 설정할 수 있습니다

정보를위한 자원


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.