CVE-2026-93477 in ash
요약
\~에 의해 VulDB • 2026. 09. 25.
ash-project ash에서 동적으로 결정된 객체 속성에 대한 부적절하게 제어된 수정 취약점이 발견되어, 사용자가 대량 삭제(bulk destroy) 및 대량 업데이트(bulk update) 경로에서 비공개(action argument의 private) 인자 값을 설정할 수 있습니다.
public?: false로 선언된 action arguments는 신뢰할 수 있는 서버 측 코드(예: Ash.Changeset.set_private_argument/3를 통해)에 의해서만 설정되어야 하며, 최종 사용자 입력으로부터 설정되어서는 안 됩니다. CVE-2026-55736은 비대량(non-bulk) changeset 경로에서 사용자 제공 파라미터 맵에서 private arguments를 제거하여 수정되었으나, 대량 삭제 및 대량 업데이트 경로는 커버되지 않았습니다.
Ash.Actions.Destroy.Bulk.base_changeset/5와 Ash.Actions.Update.Bulk.base_changeset/5는 호출자가 제공하는 파라미터 맵의 모든 키를 action의 모든 argument와 매칭시키며 public? 체크가 수행되지 않고, 일치하는 항목이 base changeset에 적용됩니다. 따라서 대량 삭제 또는 대량 업데이트 action(예: AshJsonApi, AshGraphql, 또는 요청 파라미터를 Ash.bulk_destroy/4 또는 Ash.bulk_update/4로 전달하는 컨트롤러를 통해)에 파라미터를 제출할 수 있는 호출자는 해당 action의 모든 private argument를 설정할 수 있습니다. 여기에는 action의 변경 사항이나 검증에서 arg(...) 템플릿으로 참조되는 인자도 포함됩니다. 애플리케이션이 이 인자를 어떻게 사용하는지(예: 권한 부여나 레코드 소유권을 결정하는 acting_user_id, 또는 감사 메타데이터)에 따라 무결성 위반 또는 privilege escalation로 이어질 수 있습니다.
해당 문제는 대량 경로 모두에서 argument 매칭 시 public?을 포함해야 하며, private arguments는 :private_arguments 옵션을 통해 서버 측에서만 설정 가능하게 유지됩니다.
이 이슈는 ash: 2.17.15부터 3.33.11 미만 버전까지 영향을 미칩니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.