netbox-data-flows는 DataFlow 테이블 내부에 렌더링된 ObjectAlias 이름에 XSS를 저장했습니다.
'ObjectAlias' 객체를 생성하거나 편집할 수 있는 인증된 사용자는 별칭 이름에 임의의 HTML/JavaScript를 저장할 수 있습니다. 해당 페이로드는 나중에 DataFlow 테이블 보기에서 이스케이프되지 않은 상태로 렌더링되어 다른 사용자가 영향을 받은 페이지를 볼 때 저장된 XSS를 발생시킵니다.
이 문제는 플러그인의 사용자 정의 테이블 열 렌더러에서 안전하지 않은 HTML 생성으로 인해 발생합니다.
main 관련 코드(bf96eac, 검토 당시 origin/main과 동일한 커밋):
netbox_data_flows/models/objectaliases.py
ObjectAlias.name은 사용자가 제어합니다(CharField).ObjectAlias.__str__()은 self.name을 직접 반환합니다.netbox_data_flows/tables/dataflows.py
DataFlowTable.sources 및 DataFlowTable.destinations는 ObjectAliasListColumn을 사용합니다.netbox_data_flows/tables/columns.py
ObjectAliasListColumn.render()는 object_list_to_string(value.all(), linkify=True)를 호출합니다.netbox_data_flows/utils/helpers.py
object_list_to_string()은 다음을 사용하여 원시 앵커 태그를 만듭니다.
``파이썬
mark_safe(separator.join(f'{o}' for o in object))
별칭 텍스트({o})가 이스케이프되지 않고 HTML에 삽입된 다음 전체 문자열이 안전한 것으로 표시됩니다. ObjectAlias.__str__()은 사용자가 제공한 이름을 반환하므로 별칭 이름의 HTML/JS가 피해자의 브라우저에서 실행됩니다.
이는 최소한 다음을 포함하여 DataFlowTable을 렌더링하는 모든 페이지에 영향을 미칩니다.
DataFlowTable을 재사용하는 모델 탭환경:
단계:
sources 또는 destinations에 있도록 DataFlow를 생성하거나 편집합니다.트리거할 간단한 경로는 데이터 흐름 목록 페이지입니다. 'DataFlowTable'을 렌더링하는 다른 페이지도 테스트해야 합니다.
이는 저장된 크로스 사이트 스크립팅 취약점입니다.
영향을 받은 사용자:
DataFlow 테이블을 렌더링하는 페이지를 볼 수 있는 인증된 사용자가능한 영향:
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 87.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 87.00 |
VPI 공식 vpi-v1 기준