오픈소스

Openclaw의 os보안 테스트 코드에 Contribute함 (OpenSource Contribute)

m00n0107 2026. 2. 8. 01:42

평소 오픈소스에 관심이 많아 관심있는 오픈소스들의 소스코드를 뜯어보고 내부 로직을 공부하는 것을 틈틈히 해왔다. 2025년에는 무조건 오픈소스의 contributor가 되리라. 라는 목표를 세웠지만 나의 시간투입이 부족해서 결국 PR한번 제대로 못넣어보고 2025년의 실패한 목표로 남겼다 ㅠㅠ 2026년에는 꼭 오픈소스에 기여하는 개발자가 되고싶다는 목표를 마음 속 깊은 곳에 담고 있었다.

 

그런 와중 최근 가장 핫해진 Openclaw를 접하게 되었는데, 기존의 Agent 시스템과 다르게 full Context를 온전하게 유지하면서 로컬 시스템의 executor로서 활용할 수 있다는 점에서 흥미로웠다. 각종 메시지 도구에 연동할 수 있을 뿐 아니라, 실제 권한을 부여해서 os shell, 파일 시스템의 read/write 권한까지 연동할 수 있어, 그저 질문을 주고 받는 챗봇이 아니라 진짜 '비서'로서 도움을 준다.

 

 

실제로 Openclaw가 출시되고 많은 사람들이 wow를 느꼈고, 로컬에서 Openclaw를 사용하기 위해 맥미니를 미친듯이 사대서 맥미니를 구하는게 힘들어졌다. (내 옆자리 개발자분도 Openclaw를 써보기위해서 화끈하게 m4 pro 48gb ram 맥미니를 지르셨다) 오픈소스가 이렇게 핫했던적이 있던가. 최근 04년생 한국 개발자가 개발한 OMO(oh-my-opencode)도 단시간에 엄청난 인기를 끌었지만, Openclaw는 하드웨어 판매에 일시적인 긍정적 외부효과를 줄 정도이니, 더더욱 관심이 안갈 수 없었다.

 

이렇게 재밌고 유용한 프로젝트인 Openclaw는 치명적인 문제가 있다. 바로 '보안 이슈'인데, 요약하자면 로컬 파일의 너무 많은 권한을 들고 있으면 Prompt Injection에 취약하다는 것이다. 자세히 읽어보진않았지만 여기저기서 실제로 개인정보 유출로 피해를 겪은 사례들을 많이 봤고, 여기저기서 업계 전문가들이 '절대 쓰지마라' 라고 하는 것도 여러번 봤다. 확실히 모든 실행 권한을 주는 것은 위험하다. 특히 민감한 환경변수나 key들을 제공하는 것은 한 번 유출되면 시스템 전체에 영향을 줄 수 있기 때문에 기업 차원에서는 더더욱 도입하기 어렵다.

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

아무튼 다시 원래 이야기를 돌아와서 이렇게 말도 많고 탈도 많은 openclaw의 보안에는 어떤 이슈가 있고, openclaw의 개발 팀에서는 보안 대응을 위해 어떤 안전장치들을 마련해놨는지 훑어보고 기여하고싶어 주말에 시간을 내서 소스코드들을 claude code와 함께 분석했다.

 

첫번째 시도 : Issues 해결해줘

우선은 당장 github에 올라온 issue나 bug들을 해결하는 것을 첫번째 전략으로 삼았다. 최근에 올라온 다양한 issues 들을 살펴보았는데,,, 음 일단 올바른 접근 방식은 아니었다. 아무런 맥락없이 다른 사람이 발생한 버그를 단시간에 이해하려하니 어떤 내용인지도 잘 파악이 안돼고 당연하게도 해결할 수 없었다. 무작정 claude code한테 아무거나 이슈 들고와서 해결해. 라는 방식으로 시도도 해봤는데, 막 지 혼자 이것저것 핑퐁하더니 결국 아무것도 해내지 못했다. 정확히 말하면 뭔가 PR은 올렸지만, 별 이유도 알 수 없이 PR을 리뷰해주는 봇한테cancell됐다.

 

이후에도 여러개의 PR을 올렸었는데 리뷰는 커녕 CI 테스트부터 계속 막혔다. 특히 mac 환경이 계속 막혀있었는데, 다른 사용자들도 마찬가지로 너무 사용자가 많아 queue에 계속 걸렸다. 그래서 일단 이런 방식으로 무작정 PR만 난사하는건 좋은 방법은 아니라고 판단했다.

 

두번째 시도 : 클로드야, os별 보안감사 모듈 분석해줘

모든 소스코드를 읽고 openclaw의 보안 취약점이 어떤 것들이 있는지 뽑아내달라고 하면서 이것저것 핑퐁&deep dive하다보니, claude한테 의외의 답변을 들었다. "openclaw는 보안 대응이 잘 되어있고 보안감사 시스템이 완벽해요 !" 뭐 이런 내용이었다. 당연하게도 production에 실제로 활용되는 메인 로직 코드들에 보안 문제가 있을리는 없었다. 그 모든 로직들을 직접 살펴볼 수도 없고 내가 분석시킨 클로드 또한 omo의 ultrawork 모드로 빙글빙글 돌렸으니, opus 4.5를 일단 믿기로 했다.

 

그래서 차라리 보안 감사관련 테스트 코드를 더 뜯어보자 ! 라는 더 낮은 목표를 잡고, 전체적인 보안감사 시스템을 살펴보기 시작했다. openclaw는 os별로 보안 감사 코드와 테스트 코드들로 보안 감사가 모듈화되어 준비되어있었다. 그런데 이때 다른 os와 다르게 window 환경에서의 ACL(access control list)작업에서 테스트 스크립트가 없는 것을 발견했다(나말고 클로드가). 사실 테스트 코드를 추가하는 것 정도는 production에 의존성이 걸리는 것도 아니고, 잘 작동하기만한다면 merge하지 않을 이유가 없기 때문에 테스트 스크립트를 짜서 Pull request를 올렸다. 이미 mac에서는 올바르게 ACL test를 하는 테스트 코드들이 있었고, 윈도우 os에서 해야하는 ACL작업 또한 그에 맞춰 총 26개의 모듈 테스트 ts파일을 만들었다.

 

그 결과..

CI 하는 과정에서 뭔가 이슈가 있었는지 PR을 올린지 하루정도 뒤에 저렇게 comment가 달렸고, 확인한 내용을 즉각 수정해서 이것저것 다시 PR을 올렸다.

 

그렇게 또 하루정도가 지나고..

Openclaw의 메인테이너인 steipete가 main에 merge시켰다는 메일을 받았다 ! 아니근데.. 왜 rebase했지? 솔직히 큰 차이는 없지만 저렇게 rebase하면 PR의 author이 한 번 사라지기 때문에 내가 contributor로 안남는다는게 좀 마음에 안들었다. 물론 쟤나 나나 여러개 터미널 띄워놓고 열심히 토큰을 태워가며 Openclaw의 main branch에 코드를 반영하는 사람이지만 그래도 내가 시간 쓴 만큼 contributor로서 흔적을 남기고 싶었다. 

 

그래서 혹시 나 Co-authored로 commit해줄 수 있어? 라고 약간 찌질하게 부탁했는데, 별 대답없이 그냥 해줬다,, ㅋㅋ

 

 

그리고 추가로 올렸던 PR중에 docs에서 plugin을 plugins라고 코드에 오타를 내서 404error를 띄우는 에러가 있었는데 그 PR도 merge해줬다.. 뭐 이건 사실 왜 틀려있는진 모르겠는데 클로드가 틀렸다니까 가서 보니 진짜 오타가 나있어서 그거 수정해주고 한 이틀 후 두번째 merge도 얼떨결에 해냈다.

 

이렇게 수정해달라는 comment왔는데 갑자기 1분 뒤에 쿨하게 그냥 자기가 알아서 수정해서 PR merge시켜줌...

 

그래서 결국 한 일주일만에 Openclaw PR #9308, #9335에 merge를 성공시키며 OpenClaw의 Contributor가 되었다 ! 

 

사실 좀 짧게 요약했지만 중간에 이런저런 이슈들이 있었다. 내가 올린 CI 상에서 테스트가 서로 deadrock이 걸려서 혹시 캔슬해줄 수 있냐,, 라고 메인테이너한테 여러번 요청하기도하고 되게 쓸데없는 PR도 여러번 올리고 했는데, 요즘은 PR 을 올리는 즉시 AI 여러개가 달라붙어서 꼼꼼하게 리뷰를 하기 때문에 쉽지만은 않은 것 같다.

 

솔직히 내 PR은 서비스 관점에서는 엄청나게 유의미한 dependency가 걸려있는 스크립트도 아니기도하고, 그 자체로 critical한 변경은 아닐 수 있겠지만 어찌됐건 window의 ACL test는 openclaw 사용자 입장에서 당연히 보안상 중요한 문제긴하다. 특히나 icacls 출력 파싱, 상속 권한 처리, DENY 권한 필터링 등 실제 Window의 OS 환경을 고려해야하는 설계들은 거대한 맥락 속에서 AI가 코딩하다보면 놓칠 수도 있는 것들이다. 이전같았으면 사람 대 사람이 몇 주 동안 디스커션해야하는 것들이 이제는 당연하게 AI가 코딩하고, AI가 문제점 찾고, AI가 Commit후 PR올리면, AI가 리뷰하고 코멘트 주고, AI가 merge하는게 좀 신기하다. 하지만 이제는 이게 훨씬 더 당연한 시대인거고 이런 전체적인 워크플로우에 익숙해지는 AI-Native가 중요한 것 같다는 생각이 든다.

 

 

반응형