[MariaDB_Audit] CVE-2026-3494 #1 :: Security_Analysis
새로운 현상 발견
4개의 쿼리를 사용하면서, 테스트를 했을 때 오히려 11.8.6 이상의 버전에서 로그가 기록이 되지 않는 현상이 두개가 발견되었다.
- PoC Query #2 | PoC Query #3
PoC Query #2_뭐지..?
# MariaDB 10.3.39
20260412 13:28:22,77f802a94157,root,localhost,53,79,QUERY,mysql,'SELECT * FROM user',1046
20260412 13:34:38,77f802a94157,root,localhost,53,80,QUERY,mysql,'select * from mysqql.user',1146
# MariaDB 11.8.6
20260412 13:34:38,67aec2205de2,root,localhost,10,82,QUERY,mysql,'select * from mysqql.user',1146
# MariaDB 11.8.5
20260412 13:34:38,90bb7eb5918d,root,localhost,9,79,QUERY,mysql,'select * from mysqql.user',1146
20260412 13:34:56,90bb7eb5918d,root,localhost,9,80,QUERY,mysql,'SELECT * FROM user',1046
(1) Database를 선택하지 않고 (2) 존재하지 않는 테이블에 대해 SELECT를 수행했을 때,
11.8.5 이하 버전에서는 1046 에러가 기록되었지만, 11.8.6 에서 기록되지 않았다.
PoC Query #3_이건 또 뭘까
# MariaDB 10.3.39
20260412 14:08:05,77f802a94157,root,localhost,56,92,QUERY,mysql,'SET PASSWORD\n\nfor \'u01\'@\'localhost\' = PASSWORD(*****)',0
# MariaDB 11.8.6
# 기록되지 않음
# Not Record
# MariaDB 11.8.5
20260412 14:08:05,90bb7eb5918d,root,localhost,10,88,QUERY,mysql,'SET PASSWORD\n\nfor \'u01\'@\'localhost\' = PASSWORD(*****)',0
MariaDB 재단에서 PoC Query #3에 대해 쿼리를 수행했을 때 로그가 남지 않도록 삭제된 것을 미리 확인했었다.
기록이 되지 않는 것이 맞다.
그럼.. 패치를 통해서 기록이 되도록 업데이트 된 것이라고 볼 수 있을까..? 라는 의문이 사라지지 않았다.
MariaDB Jira 제보
의문이 해결되지 않아, MariaDB Jira에 이번 패치를 통한 로그에 대해 오히려 적용이 잘못된 것 아닌지를 알아보고자 제보를 했다.
MariaDB Chief Architect 과의 댓글을 통한 의견 공유
활동(댓글)을 통해 Sergei Golubchik과 계속된 의견을 공유하면서 질의를 하였다.
처음으로 Sergei Golubchik가 달아놓은 댓글에는 아래 내용이 포함되어 있었다.
I couldn't repeat 1), a query that fails with "No database selected" is logged with server_audit_events='QUERY_DCL,QUERY_DDL,QUERY_DML' just fine.
2) is intentional and is completely unrelated to multi-lines or inline comments, see the original commit, referenced from CVE, you can see that removing SET PASSWORD from the log is part of the commit
I couldn't repeat 3), furthermore if you check the test case for the server_audit plugin, you can see that multi-line select with embedded comments is part of the regression suite.
1번은 테스트 할 수 없었고, 2번은 의도한것이고, 3번은 이해가 되지 않는 듯했다.
결국, Docker 파일을 통해 환경을 다시 구현했고, 관련 코드를 제공하여 직접 수행해볼 수 있도록 환경을 제공했다.
GitHub - Kelnor/CVE-2026-3494_Verfication: Reproduction and Analysis of CVE-2026-3494 · GitHub
MariaDB Chief Architect 는 "일관성" 을 주장
1번 테스트에 대해, SELECT 문이라는 것을 인식하기 전 이라고 한다.
즉, 11.8.5 버전 이하에서는 수행한 Query가 어떤 DML인지에 대해서 우선적으로 판단했지만,
11.8.6 에서는 DML이라고 판단하기 이전에, 해당 Query가 정상적인 쿼리인지에 대해 검증하는 로직이 추가된 것으로 판단했다.
데이터베이스가 없는데, 없는 DB에 SELECT를 했으니 이건 DML이 아닌 다른 오류라는 것이다.
2번 테스트에 대해, Sergei Golubchik 는 한가지 예시를 제시했다.
SET @a=1, password=password('qqq');
Sergei Golubchik는 위 Query와 같이, 이전에 사용된 동작이 버그들을 일으켰다는 내용으로 제시했다.
또한, 일관성에 관한 문제라고 얘기했다.
또다시 추측
2번 테스트에 대해, Sergei Golubchik가 제시한 쿼리를 보다보니, 약간 이해가 되었다.
SET 구문은 여러 작업을 콤마(,) 로 묶어서 한번에 실행할 수 있는데,
SET @a=1 는 DML이고, password=password('qqq'); 는 DCL 이라는 점에서, 과연 Audit_Plugin이 해당 쿼리에 대해, QUERY_DML로 로깅 해야할지, QUERY_DCL로 로깅해야할지 혼돈이 올 수 있다는 것을 깨달았다.
만약 내가 사용한 쿼리처럼 SET PASSWORD에 관한 구문은 QUERY_DCL로 분류될 수 있지만,
QUERY_DML로 분류될 수 있는 상황이 발생할 수도 있다는 것이다.
또한, Sergei Golubchik는 "일관성" 이라고 했던 것이 생각났다.
아.. 일관성 유지를 위해 그냥 QUERY 로 설정한 것 이구나..
일단 마무리..
Sergei Golubchik과의 의견 공유는 일단락 되었다.
재단에서는 이번 조치가 일관성을 유지하기 위한 측면이라고 하는데,
나는 조금 생각이 다르긴 했지만, 보안 및 가용성 부분을 계속 얘기한다고 해서 이번 패치가 바뀌지 않을 것이라고 판단했다.
댓글을 통해 MariaDB Parser 설계에 대해 내가 인지하지 못한 부분이 있었던 것 같다고 마무리했다.
그럼에도 보안업자로서..
변경된 패치를 통해서 내 의견은 다음과 같다.
모든 행위에 대해서 기록하려면 "QUERY_DML", "QUERY_DCL", "QUERY_DDL" 로 설정되어 있던 것을 "QUERY"로 변경해야 한다는 것이다.
그러면 운영 입장에서 가용성에 문제가 생길 수 있다고 생각한다.
기관의 규모가 클수록, QUERY로 모든 로그를 기록하면 하루에도 {N}GB 이상의 로그가 쌓일 수 있을 것이고,
용량이 가득찰 경우, 과거의 로그가 삭제되거나 혹은 새로운 로그가 기록되지 않을 수 있을 것이라고 본다.
물론, 원격 로그서버가 구축되어 있고, 연동되어있다면 말을 달라진다.
다만, 모든 회사가 syslog 서버가 있는 것이 아니기 때문에, QUERY가 다시 세분화 될 필요가 있을 것이라고 판단한다.
만약.. 비용이 어느정도 있다면..?
QUERY로 설정하여 모든 로그를 남기면서,
1. ELK, Splunk와 같은 syslog 를 구축하는 것
비용이 불가능하다면..?
1. server_audit_excl_users 설정으로 모니터링이 불필요한 시스템 계정 및 애플리케이션 계정의 로깅을 제외하는 방법도 고려해볼 수 있을 것이라고 판단한다.
최종 결론
이번 CVE-2026-3494는 QUERY의 혼돈 및 일관성적인 측면을 적용하기 위한 패치였다.
무조건 기록되지 않는 것이 아니라, 분류 미스로 인한 문제였으며, 이를 모두 기록하기 위해 세분화가 아닌 단순한 설정으로의 변경이다.
새로운 지식 습득
11.8.5 이하의 버전에서 기록이 되지 않을 수 있다는 것이 어떤 내용인지 자세하게 알 수 있었고,
보안컨설팅을 나갔을 때 그 기관에서 MariaDB를 사용하고 있고, server_audit가 활성화 되어있다면,
server_audit_events를 통해 현재 적용된 설정을 확인해보고, events가 DCL, DML, DDL로 세분화 되어 설정되어 있는 경우에
QUERY로 설정해야만 모든 행위를 기록할 수 있다고 말할 수 있게 되었다.
'Security > CVE_DB' 카테고리의 다른 글
| [MariaDB_Audit] CVE-2026-3494 #1 (0) | 2026.08.30 |
|---|






















