🇰🇷 한글 설명
PraisonAI의 LinearBot은 4.6.56 이상 4.6.59 미만 버전에서 0.0.0.0에 공개 웹훅 리스너를 열며, LINEAR_WEBHOOK_SECRET을 선택 사항으로 취급합니다. 시크릿이 없으면 서명 검증(Linear-Signature)이 완전히 생략되어 인증되지 않은 공격자가 위조된 AgentSession 요청을 보낼 수 있습니다. 이 문제는 4.6.59 버전에서 패치되었습니다.
💡 쉬운 설명
인증 없이 누구나 이 봇에 가짜 요청을 보낼 수 있는 취약점입니다. 공격자는 봇이 Linear에 이 응답을 게시하도록 만들 수 있습니다.
🇺🇸 원문 (English)
PraisonAI is a multi-agent teams system. From version 4.6.56 to before version 4.6.59, PraisonAI's LinearBot starts a public webhook listener on 0.0.0.0 and treats LINEAR_WEBHOOK_SECRET as optional. When the secret is absent, startup only logs a warning and _handle_webhook() skips Linear-Signature verification entirely. An unauthenticated network caller who can reach the webhook endpoint can submit a forged Linear-Event: AgentSession request. The forged request is parsed, scheduled for background processing, dispatched to _handle_agent_session(), and passed into BotSessionManager.chat(). The bot then attempts to post the agent response back to Linear under the configured bot token. The PoV is offline and deterministic. It does not contact Linear. It calls the webhook handler directly, monkey-patches the outbound Linear comment path, and proves both sides of the boundary. This issue has been patched in version 4.6.59.
📍 영향받는 시스템
PraisonAI 4.6.56 이상 4.6.59 미만을 사용하는 LinearBot 배포 환경
⚔️ 공격 벡터
웹훅 엔드포인트에 Linear-Event: AgentSession 헤더를 가진 위조 요청을 직접 전송하여 서명 검증 없이 봇 세션을 실행시킴
🛡️ 대응 방법
PraisonAI를 4.6.59 이상으로 업그레이드하고 LINEAR_WEBHOOK_SECRET 환경변수를 반드시 설정하며, 웹훅 엔드포인트를 신뢰된 네트워크로 제한
🔧 검증 코드
출력된 버전이 4.6.59 미만(4.6.56 이상)이면 취약하므로 업그레이드가 필요하고, 4.6.59 이상이면 패치가 적용된 것입니다.
pip show praisonai 2>/dev/null | grep -i '^version'