Linux 커널에서는 다음 취약점이 해결되었습니다. USB: dummy-hcd: 인터럽트 동기화 오류 수정 이는 dummy-hcd 드라이버의 동기화 오류를 수정합니다. 는 오류에는 다소 관련된 역사가 있습니다. 동기화 메커니즘 커밋 7dbd8f4cabd9("USB: dummy-hcd: 오류 수정)에 의해 도입되었습니다. 동기화 변경"), 에뮬레이트된 "인터럽트 활성화"를 추가했습니다. sync_irq()를 에뮬레이트하는 코드와 함께 플래그를 지정합니다. 현재의 모든 핸들러 콜백
Linux 커널에서는 다음 취약점이 해결되었습니다.
USB: dummy-hcd: 인터럽트 동기화 오류 수정
이는 dummy-hcd 드라이버의 동기화 오류를 수정합니다. 는 오류에는 다소 관련된 역사가 있습니다. 동기화 메커니즘 커밋 7dbd8f4cabd9("USB: dummy-hcd: 오류 수정)에 의해 도입되었습니다. 동기화 변경"), 에뮬레이트된 "인터럽트 활성화"를 추가했습니다. sync_irq()를 에뮬레이트하는 코드와 함께 플래그를 지정합니다. 현재 핸들러 콜백이 모두 반환되었습니다.)
그러나 에뮬레이트된 인터럽트 비활성화가 너무 늦게 발생했습니다. 핸들러 콜백 루틴을 포함하는 것은 다음과 같다고 들었습니다. 바인딩이 해제되고 더 이상 콜백이 발생하지 않습니다. 커밋 4a5d797a9f9c("usb: 가젯: dummy_hcd: 가제트_setup에서 gpf 수정")을 통해 이 문제를 해결하려고 했습니다. sync_irq() 에뮬레이션 코드를 dummy_stop()에서 다음으로 이동합니다. 바인딩 해제 콜백 전에 실행되는 dummy_pullup().
하지만 에뮬레이트된 인터럽트 비활성화 때문에 여전히 경쟁이 있었습니다. 아직 너무 늦게 일어났어요. dummy_pullup()으로 이동할 수 없습니다. 그 루틴은 임박한 상황이 아닌 다른 이유로 호출될 수 있기 때문입니다. 바인딩을 해제합니다. 따라서 7dc0c55e9f30("USB: UDC 코어: 추가 udc_async_callbacks 가젯 op") 및 04145a03db9d("USB: UDC: 구현 dummy-hcd의 udc_async_callbacks")는 UDC 코어를 허용하는 API를 추가했습니다. 인터럽트와 콜백이 에뮬레이트된 시기를 정확히 dummy-hcd에 알려줍니다. 비활성화되어야 합니다.
그것은 우리를 현재의 상황으로 인도하는데, 이는 여전히 잘못된 것입니다 에뮬레이트된 sync_irq()가 에뮬레이트되기 전에 발생하기 때문입니다. 인터럽트 비활성화! 그건 좋지 않아요. 왜냐하면 더 많이 에뮬레이션된다는 뜻이거든요. 동기화_irq() 에뮬레이션이 실행된 후에 인터럽트가 발생할 수 있습니다. 콜백 핸들러가 실행될 가능성이 있는 경우 가젯 드라이버가 바인딩 해제되었습니다.
이 문제를 해결하려면 동기화_irq() 에뮬레이션 코드를 아직 이동해야 합니다. 다시 한 번 dummy_udc_async_callbacks() 루틴으로 이동합니다. 에뮬레이트된 인터럽트 요청을 활성화 및 비활성화합니다. 는 이제 에뮬레이트된 인터럽트가 실행된 후 즉시 동기화가 실행됩니다. 장애인, 그것이 속한 곳입니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 78.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 78.00 |
VPI 공식 vpi-v1 기준