🇰🇷 한글 설명
CallBackery 0.62.0 이전 버전의 Perl 모듈은 복원된 설정 백업 내 sqlite3 셸 명령을 통해 OS 명령 실행이 가능합니다. restoreConfigBlob() 함수가 백업의 데이터베이스 덤프를 sqlite3 명령줄 셸에 전달하며, 점(.)으로 시작하는 줄이 셸 명령으로 실행됩니다. 이로 인해 .shell, .system 명령으로 OS 명령을, .load 명령으로 네이티브 코드를 실행할 수 있습니다.
💡 쉬운 설명
CallBackery라는 프로그램이 백업 파일을 복원할 때 특수한 명령이 들어 있으면 그 명령을 그대로 실행해 버립니다. 백업 파일을 제공할 수 있는 사람은 애플리케이션 권한으로 임의의 명령을 실행할 수 있습니다.
🇺🇸 원문 (English)
CallBackery versions before 0.62.0 for Perl allow OS command execution via sqlite3 shell commands in a restored configuration backup.
restoreConfigBlob() feeds the database dump in a backup to the sqlite3 command-line shell. The shell runs lines starting with a dot as its own commands, so .shell or .system in the dump runs an OS command and .load loads native code.
Anyone who can supply a backup to be restored can run arbitrary commands as the application user.
📍 영향받는 시스템
CallBackery for Perl 0.62.0 미만 버전
⚔️ 공격 벡터
조작된 백업 파일에 sqlite3 점 명령(.shell, .system, .load)을 삽입하여 복원 시 OS 명령 실행
🛡️ 대응 방법
CallBackery를 0.62.0 이상으로 업데이트하고, 신뢰할 수 없는 백업 파일의 복원을 금지합니다.
🔧 검증 코드
출력된 버전이 0.62.0 미만이면 취약하므로 업데이트가 필요하고, 0.62.0 이상이면 패치된 버전입니다.
perl -MCallBackery -e 'print $CallBackery::VERSION, "\n"' 2>/dev/null || cpanm --info CallBackery 2>/dev/null | head -1