🇰🇷 한글 설명
VOS(구 Versa FlexVNF)의 Node.js 웹 서비스 /decryptTest 엔드포인트가 세션 인증 미들웨어보다 먼저 등록되어 있습니다. 하드코딩된 동일한 키와 IV로 인해 공격자는 인증 없이 유효한 토큰을 생성하여 완전히 인증된 세션을 획득할 수 있습니다. 프로비저닝 완료 후 Node.js 웹 서비스를 비활성화하면 이 취약점은 악용되지 않습니다.
💡 쉬운 설명
네트워크 장치의 설정 자동화 기능에 누구나 로그인할 수 있는 숨겨진 문이 열려 있습니다. 공격자는 비밀번호 없이도 장치를 완전히 제어할 수 있습니다.
🇺🇸 원문 (English)
The Node.js web service on VOS (previously Versa FlexVNF) is used for URL-based Zero Touch Provisioning (ZTP) of the VOS appliance and is not required after provisioning is complete. The /decryptTest endpoint of this service is registered in server.js before the session authentication middleware and creates an authenticated session whenever it receives a token that decrypts successfully. Because the key and initialization vector (IV) used for decryption are hardcoded and identical across all VOS appliances, an unauthenticated attacker with network access can compute a valid token, submit it to /decryptTest, and obtain a fully authenticated session without providing any credentials.
Versa’s security hardening guide for Hubs, Branches, and Controllers recommends disabling the Node.js web service after the initial provisioning of the VOS device. This vulnerability is not exploitable on VOS devices where the Node.js web service has been disabled.
📍 영향받는 시스템
Versa VOS (구 Versa FlexVNF) 장치 중 Node.js 웹 서비스가 활성화된 모든 버전
⚔️ 공격 벡터
네트워크 접근이 가능한 공격자가 하드코딩된 키/IV로 토큰을 생성해 /decryptTest에 전송하여 인증 없이 세션 획득
🛡️ 대응 방법
프로비저닝 완료 후 Node.js 웹 서비스를 비활성화하고 Versa 보안 강화 가이드에 따라 패치를 적용
🔧 검증 코드
서비스가 'active (running)' 또는 '+'로 표시되면 Node.js 웹 서비스가 실행 중이므로 취약할 수 있으며, 'inactive', 'dead', '-' 또는 결과가 없으면 비활성화 상태로 판단합니다.
systemctl status vos-node 2>/dev/null || service --status-all 2>/dev/null | grep -i node