🔍 CVE-2024-49756

5.3
CVSS Score
MEDIUM
2024-10-23
2026-04-15 00:35
✅ 완료

🇰🇷 한글 설명

AshPostgres 2.0.0~2.4.10 이전 버전에서 변경 필드가 없는 특정 update action 실행 시 정책 검증이 스킵되는 취약점입니다. 이로 인해 사용자가 실행할 수 없어야 하는 부작용(hooks/side effects)이 실행될 수 있으며, 권한 없는 데이터 접근은 방지됩니다.

💡 쉬운 설명

AshPostgres에서 데이터 업데이트 시 보안 규칙이 특정 상황에서 무시될 수 있습니다. 의도하지 않은 동작(예: 알림 전송, 로그 기록)이 실행되어 시스템 부작용을 초래할 수 있습니다.

🇺🇸 원문 (English)

AshPostgres is the PostgreSQL data layer for Ash Framework. Starting in version 2.0.0 and prior to version 2.4.10, in certain very specific situations, it was possible for the policies of an update action to be skipped. This occurred only on "empty" update actions (no changing fields), and would allow their hooks (side effects) to be performed when they should not have been. Note that this does not allow reading new data that the user should not have had access to, only triggering a side effect a user should not have been able to trigger. To be vulnerable, an affected user must have an update action that is on a resource with no attributes containing an "update default" (updated_at timestamp, for example); can be performed atomically; does not have `require_atomic? false`; has at least one authorizer (typically `Ash.Policy.Authorizer`); and has at least one `change` (on the resource's `changes` block or in the action itself). This is where the side-effects would be performed when they should not have been. This problem has been patched in `2.4.10` of `ash_postgres`. Several workarounds are available. Potentially affected users may determine that none of their actions are vulnerable using a script the maintainers provide in the GitHub Security Advisory, add `require_atomic? false` to any potentially affected update action, replace any usage of `Ash.update` with `Ash.bulk_update` for an affected action, and/or add an update timestamp to their action.

📍 영향받는 시스템

AshPostgres 2.0.0 ~ 2.4.9 (Elixir/Phoenix 프레임워크)

⚔️ 공격 벡터

update 필드가 없는 빈 update action을 호출하여 정책 검증 우회 및 부작용 트리거

🛡️ 대응 방법

2.4.10 이상으로 업그레이드 또는 require_atomic? false 설정, Ash.bulk_update 사용, update timestamp 추가

🔧 검증 코드

반환된 버전이 2.4.10 이상이면 패치됨, 2.4.9 이하면 취약함

Shell / Script
grep -A 10 'ash_postgres' mix.lock 2>/dev/null | grep -oE '"[0-9]+\.[0-9]+\.[0-9]+"' | head -1

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

💻 영향받는 소프트웨어

Git