🇰🇷 한글 설명
Apache PLC4X(PLC4J) Java 구현체에서 과도한 메모리 할당, 제한 없는 리소스 할당 및 제어되지 않는 재귀 호출로 인해 서비스 거부(DoS)가 발생할 수 있습니다. 특히 OPC UA 드라이버의 경우 인증 전 단계에서 취약점이 노출되어, 공격자가 서버를 사칭하여 클라이언트 애플리케이션의 메모리나 스택을 고갈시킬 수 있습니다.
💡 쉬운 설명
공격자가 가짜 데이터를 보내 프로그램이 감당할 수 없는 엄청난 양의 메모리를 사용하게 만들어 컴퓨터를 멈추게 할 수 있습니다. 인증을 하기 전 단계에서 공격이 가능하므로 보안 설정이 되어 있어도 위험할 수 있습니다.
🇺🇸 원문 (English)
Memory Allocation with Excessive Size Value, Allocation of Resources Without Limits, and Uncontrolled Recursion in the Java implementation of Apache PLC4X (PLC4J) allow a malicious or impersonated device to exhaust the memory or stack of the client application, causing a denial of service.
In the OPC UA driver these defects are reachable before authentication: the offending data is parsed while the secure channel and session are being established, before the server's identity has been bound to it. Configuring a trusted server therefore does not prevent exploitation by an attacker who can
impersonate it.
The individual defects are:
- Length-prefixed byte strings are allocated at the size claimed on the wire before the length is checked against the data actually received (0.10.0 through 0.13.1).
- Array fields in generated protocol parsers pre-allocate a list with the element count claimed on the wire, allowing a single count field to trigger a multi-gigabyte allocation. This parser is shared by all PLC4J drivers; the OPC UA driver is the verified pre-authentication path (0.10.0 through 0.13.1).
- The OPC UA driver accumulates message chunks without enforcing the negotiated maximum chunk count and message size (0.12.0 through 0.13.1).
- The OPC UA driver pre-allocates collections using element counts received from the server (0.10.0 through 0.13.1).
- Recursive protocol types are parsed without a nesting-depth limit. The same defect in the Go implementation is covered by CVE-2026-102510 https://cveprocess.apache.org/cve5/CVE-2026-102510 .
This issue affects Apache PLC4X: from 0.10.0 before 1.0.0.
Users are recommended to upgrade to version 1.0.0, which fixes the issue.
📍 영향받는 시스템
Apache PLC4X: 0.10.0 버전부터 1.0.0 미만 버전
⚔️ 공격 벡터
인증 전 단계에서 조작된 길이 정보나 재귀적 구조를 가진 OPC UA 메시지를 전송하여 리소스 고갈 유도
🛡️ 대응 방법
Apache PLC4X를 취약점이 해결된 1.0.0 버전 이상으로 업그레이드하십시오.
🔧 검증 코드
출력된 버전 번호가 1.0.0 미만(예: 0.13.1)인지 확인하여 취약 여부를 판단합니다.
mvn dependency:list | grep 'org.apache.plc4x' | awk '{print $4}'