
Node.js의 안전하지 않은 역직렬화(CVE-2017-5941)에 대한 교육 데모로, 쿠키 기반 페이로드 인젝션 및 리버스 셸 악용을 포함한 보안 교육용입니다.
Node.js는 JavaScript로 서버 기능을 구현하는 데 사용되는 오픈 소스 런타임 환경입니다.
Node.js 내 특정 소프트웨어 패키지에는 역직렬화를 처리하는 취약한 함수가 포함되어 있어, 클라이언트가 특수하게 조작된 쿠키를 제공하면 승인되지 않은 명령이 실행됩니다.
이 취약점은 재현되었으며, 잠재적으로 리버스 셸을 실행할 수 있습니다. 이는 클라이언트 요청의 쿠키에서 읽은 무결하지 않은 입력 데이터 때문에 가능합니다. 클라이언트는 자신의 쿠키를 수정하고, bash 명령을 포함한 안전하지 않은 페이로드를 주입한 후 서버로 전송하면 서버가 해당 명령을 맹목적으로 실행합니다. 이로 인해 승인되지 않은 사용자가 데이터베이스 또는 전체 머신에 접근할 수 있습니다.
이러한 유형의 취약점이 지니는 윤리적 함의는 백엔드 서버의 데이터베이스에서 접근할 수 있는 데이터에 있습니다. 데이터에 따라 사용자의 보안에 해가 될 수 있으며, 회사의 신뢰성과 평판에 영향을 미칠 수 있습니다. 따라서 다른 공격자보다 먼저 취약점을 찾는 것이 중요합니다. Snyk, Burp Suite 및 기타 유료 옵션과 같은 다양한 도구를 사용하여 이러한 취약점을 식별할 수 있습니다.
이 취약점을 완화하는 가장 좋은 방법은 적절한 입력 삭제(sanitisation)를 수행하고 Node.js 내에서 취약한 unserialise 함수의 사용을 중단하는 것입니다. 이 취약한 함수의 대체품인 JSON.parse를 사용하는 것이 권장됩니다.