다운로드한 GitHub 오픈소스(글래스 템플릿 등) 실행 전 악성코드·개인정보 유출 점검하는 AI 프롬프트
해외에서 받은 깃허브 코드(글래스 디자인 템플릿 등)가 있는데, 이상한 코드를 심어두는 것도 있다고 해서 좀 꺼려지더라고요. 다운로드한 GitHub 저장소를 실행하기 전에 보안·개인정보 위험을 점검하려면 어떻게 하면 좋을까요?
선생님들의 답 3개
다운받고 해당 폴더를 프로젝트 폴더로 지정하신 다음에, 보안이나 개인정보 부분에서 문제가 될 만한 코드를 찾아달라고 해보시는 것도 방법이 될 것 같아요.
이런 구체적 지시를 추천드려요. ① 특정 코드가 함수를 참조할 때 반환값이 코드나 프로그램 내부로 돌아오지 않고 외부로 향하는 함수가 있는지 ② 코드를 통해 발생한 메모리 읽기/쓰기 과정에서 프로그램·텍스트레이블·버튼레이블 기능과 관련 없는 읽기/쓰기가 일어나지는 않는지 ③ 프로그램 사용 시 브라우저에 개인정보 관련 캐시 데이터를 남기고 있지는 않은지 확인해줘. 팁: '보안이나 개인정보 부분에서 문제가 될 만한'이라고만 말하면 실제 위험한 코드 자체를 그냥 맥락의 일부라고 생각하고 넘길 수 있어요. 대신 문제가 될 수 있는 '상태'나 '현상'을 지시하면 코드를 하나하나 뜯어서 지적해줍니다.
제가 쓰는 전체 보안 점검 프롬프트예요. [역할] 너는 보안 코드 리뷰어이자 개인정보 보호 감사자다. 나는 GitHub 저장소를 다운로드한 뒤 해당 폴더를 프로젝트 폴더로 지정해서 실행하기 전에 보안과 개인정보 위험을 점검하려고 한다. 프로젝트 전체 코드 기준으로 악성 코드, 개인정보 유출, 토큰 탈취, 외부 전송, 불필요한 메모리/파일 접근, 브라우저 캐시·로컬스토리지 잔존 문제를 분석해줘. [중요] README 설명만 믿지 말고 실제 코드 기준으로 판단해라. 코드 일부만 보고 전체가 안전하다고 단정하지 마라. 확실하지 않은 부분은 '확인 필요'라고 표시해라. 위험한 코드가 있으면 파일명·함수명·코드 위치·위험 이유·수정 방법을 함께 제시해라. 분석 기준: 1. 데이터 흐름 추적: 사용자 입력값/API 응답/파일·브라우저 저장소·환경변수에서 읽은 값이 코드 내부에서 어디로 이동하는지 추적. 사용자 입력(이름·이메일·토큰·API키·위치·파일 내용)이 어디로 전달되는지, 반환값이 내부 UI/상태/로컬 로직으로 돌아오는지 아니면 외부 서버·webhook·analytics·logging·telemetry·DB·cloud function으로 전송되는지, 정상 기능과 무관하게 외부로 나가는 흐름이 있는지. 찾을 패턴: fetch/axios/XMLHttpRequest, requests/httpx/urllib, WebSocket/EventSource, sendBeacon, FormData 전송, external API, Discord/Telegram/Slack webhook, GA/Firebase Analytics/Sentry/LogRocket/Mixpanel, console.log에 개인정보·토큰 출력, 서버 로그에 인증정보 남기는 코드. 2. 외부 반출 가능 함수 탐지: 반환값을 내부로 돌려보내지 않고 외부로 전송하는 함수. sendData/reportError/logEvent/trackUser/syncData/backup/update/collect/telemetry/analytics/upload/submit/webhook/notify류, 이름은 정상인데 내부에서 fetch/post 호출, try/catch에서 에러+환경변수·사용자데이터를 외부 로깅으로 보내는 코드, 동의 없이 자동 실행되는 네트워크 전송. 3. UI 기능과 무관한 메모리·파일 읽기/쓰기: 홈/다운로드/문서/바탕화면/브라우저 프로필/SSH키/클라우드 설정 폴더 접근, 단순 웹앱·게임인데 OS 파일·프로세스·환경변수·시스템 정보 접근, unsafe/포인터/native module, 불필요한 clipboard·camera·mic·location·notification·contacts 권한. Python 키워드(os.environ/os.system/subprocess/pathlib.Path.home/open/shutil/tempfile/pickle/marshal/ctypes/mmap/socket/requests.post/base64/eval/exec), JS/TS 키워드(process.env/child_process/fs.readFile·writeFile/path.join/os.homedir/localStorage/sessionStorage/indexedDB/document.cookie/navigator.clipboard·geolocation/WebSocket/fetch/axios/eval/Function/atob/btoa/Buffer.from/postMessage/chrome.storage), Electron 키워드(ipcRenderer/ipcMain/shell.openExternal/remote/preload/contextBridge/nodeIntegration/webSecurity/자동 업데이트). 4. 브라우저 개인정보 캐시·저장소: localStorage/sessionStorage/IndexedDB/cookies/Cache Storage/Service Worker cache/history/URL query/form autocomplete/다운로드/console logs/Firebase·Supabase client cache/OAuth redirect URL/access·refresh token 저장 위치. 로그인 토큰·API키가 localStorage에 저장되는지, refresh token이 평문으로 남는지, 이름·이메일·채팅·업로드 파일명·프롬프트가 저장소에 남는지, 로그아웃 후에도 민감정보가 남는지, 캐시삭제·세션만료·로그아웃 처리 코드가 있는지. 5. 설치·실행 과정 위험: README/package.json/lock파일/requirements/pyproject/Dockerfile/.env.example/.github·workflows/install·setup.sh/pre·postinstall/vite·next·webpack.config/진입점 파일 확인. 위험 명령: curl URL | bash, wget | sh, powershell -Command, 알 수 없는 npx 패키지, sudo, chmod +x 후 즉시 실행, rm -rf, 외부 스크립트 다운 후 실행, postinstall 네트워크·파일 접근. 6. 의존성 위험: typosquatting/유명 패키지 유사 가짜/설치 시 자동 실행/취약점 알려진·오래된/과도 권한/네이티브 바이너리·빌드 시 외부코드 실행/lockfile 불일치. 7. 권한 요청 분석: 파일·클립보드·위치·카메라·마이크·알림·백그라운드·탭·쿠키·저장소·네트워크·시스템 명령 권한이 기능상 필요한지, 불필요하면 위험 신호로 표시. 8. 최종 출력 형식: [전체 위험도](낮음/보통/높음/매우 높음), [실행 가능 여부](바로 실행/가상환경만/Docker 격리만/실행 보류/실행 금지), [핵심 판단 근거], [외부 전송 의심 코드](표), [개인정보·토큰 접근 코드](표), [브라우저 저장소·캐시 위험](표), [UI 무관 읽기/쓰기](표), [설치 과정 위험](표), [반드시 확인해야 할 파일], [안전하게 실행하려면](1~5단계), [수정 권고], [최종 결론](한 문단).