일단 진행시켜

Node.js 1.1.9 이전 버전에서 SSRF 취약점 발견 본문

🗞️ 보안 동향 파악 및 나의 생각 정리

Node.js 1.1.9 이전 버전에서 SSRF 취약점 발견

2024. 8. 19. 09:43

1. CVE-2023-42282: SSRF Vulnerability Found in ip Package for Node.js Before Version 1.1.9 Due to Improper Categorization of IP Addresses

https://www.cve.news/cve-2023-42282/

 

CVE-2023-42282: SSRF Vulnerability Found in ip Package for Node.js Before Version 1.1.9 Due to Improper Categorization of IP Add

Security researchers have recently discovered an SSRF (Server Side Request Forgery) vulnerability in the ip package used in Node.js applications before version 1.1.9. This vulnerability has been assigned the CVE identifier CVE-2023-42282 and is considered

www.cve.news

 

[ 요약 ]

1. Node.js 1.1.9 이전 버전에서 사용된 IP 패키지로부터 SSRF(Server Side Request Forgery) 취약점이 발견됐다. 이 취약점은 CVE로 지정되었으며, 공격자가 내부 리소스에 대한 무단 요청이 가능하므로 매우 중요한 것으로 간주되었다.

 

2. Node.js용 IP 패키지를 통해 IP 주소가 개인용인지 공개용인지 파악이 가능하고, IP 주소를 다른 형식으로 변환하는 등의 기능을 사용할 수 있다. 그러나, 1.1.9 이전 버전의 패키지는 특정 IP 주소가 전역 라우팅 기능으로 잘못 분류되어 있어 SSRF 공격에 취약하다. IP주소가 공개적으로 액세스 할 수 있는지에 대한 isPublic 함수의 버그가 그 원인이다.

 

3. 해당 취약점을 통해 애플리케이션을 속여 내부 서비스나 리소스에 대한 무단 요청이 가능해진다. 

const ip = require('ip');

// This IP address should not be considered public, but it is treated as such.
const maliciousIP = 'x7f.1';

if (ip.isPublic(maliciousIP)) {
  console.log('The IP address is incorrectly identified as public:', maliciousIP);
} else {
  console.log('The IP address is correctly identified as private:', maliciousIP);
}

 

잘못된 형식의 IP('x7f.1')을 공용 IP로 잘못 처리하여 잠재적으로 악의적인 내부 요청으로부터 보호하는 검사를 우회할 수 있다.

위 코드는, 공격자가 서버 내에서 승인되지 않은 요청을 보내어 로직을 조작하고 결과적으로 내부 서비스를 악용할 수 있다.

 

4. 위 취약점을 수정하기 위해서는 ip 패키지는 1.1.9 이상으로 버전 업데이트 해야 한다. isPublic 함수가 IP 주소(개인용/공개용)를 올바르게 식별하여 SSRF 공격로부터 보호할 수 있다.

 

5. 보안 취약성으로부터 프로그램을 보호하기 위해서는 주기적으로 최신 버전으로 업데이트하는 것이 중요하다.

 

 

 

SSRF(Server-Side Request Forgery)?

  • 공격자가 서버를 속여 서버를 대신하여 의도하지 않은 리소스나 내부 리소스에 요청을 하도록 하는 웹 보안 취약점
  • 애플리케이션에서 사용자가 URL이나 IP 주소를 제대로 확인하지 않고, 입력하도록 허용할 때 발생
  • 공격자는 일반적으로 제한되는 내부 시스템, DB 또는 기타 개인 리소스에 액세스할 수 있게 되며, 잠재적인 데이터 침해, 무단 작업 또는 내부 네트워크 악용으로 이어질 수 있다.
  • 아웃바운드 요청을 적절하게 검증/제한하는 것이 매우 중요하다.

 


 

🤔 이에 대한 나의 생각

단순한 IP 오분류로 인해 공격자가 중요한 보안 검사를 우회하고 내부 리소스에 액세스할 수 있다는 사실이 터무니없으면서도 놀랍다. 사소해 보이는 버그라도 심각한 보안 위험을 가져다줄 수 있음을 깨달았다.

코드 검토를 엄격히하고, 소프트웨어 라이브러리에 대한 주기적인 업데이트의 중요성을 상기시켜 주는 자료였다.

무엇보다 소프트웨어 개발 시, 기능과 보안의 적절한 균형이 가장 중요한 것 같다.