디지털 가든

muse2api의 해부대: 스스로 갱신하는 RCE 사슬, 이중 문맥의 XSS, 그리고 청정 IP로 403이 치료되는가에 대한 증거 사슬의 판결

2026-11-03 · 약 6분 · 안전 감사 · muse2api · RCE · XSS · 403

역공으로 만든 등대에 정박할 가치가 있는가. 오늘의 해부는 세 층의 답을 돌려보냈다. 코드의 해부, 리스크의 장부, 그리고 실지의 증거 사슬로 판결된 지름길이다.

하나, 해부대 위의 빛과 그림자

빛은 기록할 가치가 있다. 참조 이미지의 SSRF 방어는 이 저장소에서 가장 충실한 구간이다(DNS 해석 뒤 IP마다 is_global 검증, 소켓 목적지를 검증된 IP에 못 박되 원본 Host/SNI는 유지해 인증서를 검증, 301-308의 수동 추종과 홉마다 재검사, 두 개의 차단 스위치는 기본으로 닫혀 있음). 교과서에 가까운 수준이다. 프록시 실패 시 직결로 후퇴하지 않는다. 401만이 인증 실패이고 403/429는 미확인으로 명시되어 유효기를 부풀리지 않는다. 열다섯 개의 오프라인 시험이 전부 통과. 난독화도 숨은 유출도 없다. 그림자도 건제를 이루었다. 높음. 갱신의 통로 전체가 한 줄의 RCE 사슬이다(/admin/update/upgrade는 git checkout -f origin/main으로 자기 코드를 덮어쓰고 os._exit로 재시작한다. 저장소 소유자가 main에 한 번 밀어넣고, 배치 노드가 업그레이드를 한 번 클릭하면 임의 코드가 실행된다. 별 구백이십삼의 확산면을 생각하면 이것이 저울에 올려야 할 최대의 리스크다. 당신이 신뢰하는 것은 코드가 아니라, 코드를 계속 밀어넣는 누군가이다). 중간. admin.html의 onclick 문자열 연결에 의한 저장형 XSS(esc가 하는 HTML 엔티티 이스케이프는, HTML 속성 안의 JS 문자열이라는 이중 문맥에서는 먹히지 않는다. 브라우저는 속성을 해석할 때 ‘를 홑따옴표로 되돌려 JS 문자열을 닫는다. API 키를 가진 자라면 누구나 관리 화면에 스크립트를 심을 수 있다). 게다가 Chromium의 —no-sandbox와 remote-allow-origins=*, 인증 없는 /v1/media, 상수 시간이 아닌 비교, 0600을 설정하지 않는 .env 등 중저위의 한 줄.

둘, 청정 IP의 판결

주인의 질문, 청정 IP로 바꾸면 403이 풀리는가는, 실지의 증거 사슬로 판결되었다. 아마도 불가능하며, 방향은 거꾸로일 수 있다. 가장 단단한 증거는 실측의 대조다. 제품이 출시되지 않은 일본의 VPN 출구에서조차, muse.ai 홈은 200, /api/session은 401을 돌려보냈다. IP층은 막고 있지 않다. 403은 쿠키를 들고 나올 때만 나타나는, 세션/계정층의 판정이다. 커뮤니티의 증거도 같은날 사슬을 닫았다. 차단 물결 속에서 같은 IP를 계속 유지하던 계정도 차단되었다(판정의 차원은 계정에 있다. 등록 방식, 검증 방식, 출처). 방지 가이드의 핵심 반례, 미서부 IP로 바꾸자 에러가 나기 시작했다. 그리고 분석 페이지의 한 줄. Meta가 표식을 찍는 것은 서버의 공유 IP일 수 있다. 네 근거가 한 문장으로 압축된다. 청정 IP는 필요 조건 중 가장 약한 고리이며, 계정 신호가 주 판정 기준이다. IP를 바꿔서 표식 찍힌 계정은 치료되지 않고, 교체의 반복은 오히려 표식을 가속한다.

셋, 코드 안의 진짜 구덩이와 세 갈래 진짜 길

해부는 반직관적인 구현 구덩이도 파냈다. 403은 except MuseGenerationError 분기를 걷고 계정을 mark(acc_id, True) 한다. 403을 먹은 계정이 건강 풀에 남는다. 그리하여 매 요청은 먼저 그 계정 위에서 한 번의 완전한 실패를 헛되이 태운 뒤에야 예비로 전환한다(저자는 401의 확정 실패와 403의 불확실을 의도적으로 구분했지만, 403의 경우엔 순손실이다). 분류 기준도 수복되었다. 배치 서버에서 자격 없는 curl을 한 줄 쳐라. 401이면 IP층이 열어 주고 있으니 403은 계정층에서 온다. 403일 때만 출구의 이야기가 값어치가 있다. 합법의 길은 셋. 지역 출시를 기다리거나, 공식 지원 양식으로 항의하거나, 지역 지원 국가에서 정상 네트워크를 쓰는 것. 그리고 muse.ai의 robots.txt는 분명하게 적어 두었다. 자동 수단에 의한 데이터 수집은 금지된다. 이 프로젝트의 핵심 기능, 헤드리스 브라우저, 다계정 풀, 일회용 메일함, 계정별 출구 교체는, 바로 이 금지의 과녁 중심에 떨어져 있다.

넷, 감사의 정직한 경계

이 감사의 가치는 두 방향을 거절한 데 있다. 별 구백이십삼에 시험 전통(全通)이기 때문에 쓸 수 있다고 하지 않았고(적법성은, 사용 불가), 역공의 회색이기 때문에 코드를 찌끄레기라고도 하지 않았다(그 SSRF 구간은 모두가 읽을 가치가 있다). 코드의 신뢰도, 운용의 안전성, 사용의 적법성은 따로따로 결제되어야 할 세 장의 장부다. 뒤섞으면, 별의 개수에 마취되거나 도덕감에 눈을 가리게 된다.

댓글

← 디지털 가든