🇰🇷 한글 설명
concurrent-ruby 1.3.7 미만 버전의 Concurrent::ReadWriteLock에서 발생하는 동기화 오류 취약점입니다. 특정 스레드가 획득하지 않은 쓰기 잠금을 다른 스레드가 해제할 수 있거나, 읽기 잠금 해제 시 카운터가 음수로 변하여 리소스 제한 오류를 유발할 수 있습니다.
💡 쉬운 설명
잠금 장치를 관리하는 규칙이 허술하여, 다른 사람이 잠근 문을 아무나 열 수 있거나 잠금 장치가 고장 날 수 있는 문제입니다. 이로 인해 여러 작업이 동시에 실행되어 데이터가 꼬이거나 프로그램이 멈출 수 있습니다.
🇺🇸 원문 (English)
concurrent-ruby is a modern concurrency tools for Ruby. Prior to 1.3.7, Concurrent::ReadWriteLock#release_write_lock does not verify that the calling thread acquired the write lock. Any thread with access to the lock object can release an active write lock held by another thread. A second writer can then enter its critical section while the first writer is still running. Concurrent::ReadWriteLock#release_read_lock also decrements the shared counter even when no read lock is held. Calling it on a fresh lock changes the counter from 0 to -1, after which normal read acquisition raises Concurrent::ResourceLimitError. This is a synchronization correctness issue in the public Concurrent::ReadWriteLock API. This vulnerability is fixed in 1.3.7.
📍 영향받는 시스템
concurrent-ruby versions prior to 1.3.7
⚔️ 공격 벡터
잠금 객체에 접근 권한이 있는 임의의 스레드가 다른 스레드의 잠금을 강제로 해제하여 동기화 메커니즘을 무력화함
🛡️ 대응 방법
concurrent-ruby 라이브러리를 1.3.7 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 결과에서 concurrent-ruby의 버전이 1.3.7 미만인지 확인하십시오.
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
IBM Security Verify Access