이 프로젝트는 한 사용자의 터미널에서 학교 e-campus·수강 시스템·ERP에 직접 연결하는 비공식 클라이언트입니다. 학교 계정과 학생 정보를 취급하므로, 코드 공개와 개인 실행 데이터를 구분해서 관리해야 합니다. 2026-10-10에 확인한 문제와 수정·검증 결과는 보안 감사 보고서에 있습니다.
- 학번·비밀번호는 마스킹 입력창 또는 로컬
.env로 제공합니다. 명령행의--sid·--pw는 지원하지 않습니다. 셸 기록과 프로세스 목록에 자격 증명을 남기지 마세요. .env,.local/,data/,downloads/, 캡처·쿠키·세션·키·DB 덤프는 공개하지 않습니다..gitignore는 이미 추적한 파일이나 과거 커밋을 지우지 않습니다.- 입력한 비밀번호와 SSO 자격, 학교 쿠키는 실행 중 메모리에 필요합니다. 로그아웃 시 CLI의 보유 참조·쿠키·캐시를 비웁니다. 학교 서버 세션 폐기나 JavaScript 문자열의 물리적 메모리 삭제를 보장하지 않습니다.
.env는 사용자가 관리하는 평문 자격 파일입니다. 공유·동기화 폴더와 백업의 접근 권한도 확인하세요. POSIX에서는chmod 600 .env를 적용할 수 있습니다. Windows에서는 파일과 상위 디렉터리의 ACL을 확인합니다.- 새 다운로드·출력 파일과 디렉터리는 POSIX 0600·0700으로 생성합니다. Windows의 접근 권한은 ACL을 따릅니다. 기존 디렉터리의 권한을 자동으로 변경하지 않으므로 저장 위치를 개인 폴더로 선택하세요.
- 파일은 실행하지 않고 저장합니다. 학교 첨부도 신뢰하지 못하는 콘텐츠일 수 있으므로 출처와 파일 형식을 확인한 뒤 여세요.
각 서비스는 ecampus.seowon.ac.kr, sugangh.seowon.ac.kr, info.seowon.ac.kr 중 해당 서비스의 정확한 HTTPS origin만 사용합니다. 인증 요청의 리다이렉트도 같은 origin으로 제한합니다. 영상은 승인된 ecampus.seowon.ac.kr·eplus.seowon.ac.kr에서 로그인 쿠키·인증 헤더 없이 받습니다. 프록시 환경변수와 로컬 소켓 경로는 기본 요청 경계를 우회할 수 없습니다.
OTP가 필요한 응답과 로그인 화면에서 받은 쿠키를 인증 완료로 처리하지 않습니다. 추가 인증은 학교 e-campus에서 진행하세요. 학교가 이미 접수한 제출은 클라이언트의 시간 초과나 취소로 되돌릴 수 없습니다. HTTP 전송 계층은 연결 오류 뒤 변경 요청을 자동 재전송하지 않습니다. 엔진의 명시적 재시도 도구는 별도 기능이며 CLI에서 사용하지 않습니다.
호출 추적은 함수 이름·소요 시간·성공 여부만 기록하고, verbose도 서버 원문을 출력하지 않습니다. 사용자가 선택한 학생 프로필·수강·성적 화면과 저장 완료 안내는 개인 정보가 포함될 수 있으므로 실제 계정 실행 화면을 공개 녹화하지 마세요.
lib/back/engine은 별도로 복사해 관리하는 코드입니다. 원본 SDK의 보안 수정은 자동 반영되지 않습니다. getCredentials(), 로그인 결과의 raw·data, cookieJar·http를 직접 읽는 코드는 민감한 데이터를 취급합니다. 함수 어댑터·HTTP 확장 코드는 신뢰하는 개발자 코드만 사용합니다.
npm ci
npm run security:scan
npm run security:history
npm run typecheck
npm test
npm run build
npm audit현재 공개 파일 검사 0건은 모든 개인정보가 없다는 보장이 아닙니다. 검사는 휴리스틱이며 이미지 OCR을 수행하지 않습니다. 새 이미지·영상은 가상 데이터로 만들고 모든 프레임과 메타데이터를 직접 검토한 뒤 docs/media/sources.json에 검토 방식과 해시를 기록합니다.
2026-10-10에 개인정보 이력을 정리한 뒤 저장소를 삭제·재생성하고 현재 코드로 새 main 이력을 시작했습니다. 원래 이름·학번·소속과 개인 녹화·응답 파일을 제거했고 현재 파일 및 전체 참조 이력 검사 후보는 0건입니다. 기존 복제본은 이전 안내에 따라 새로 복제하세요.
공개 전에 다음 절차를 완료하세요.
- 현재 정리한 소스에서
.git과 로컬 실행 데이터를 제외한 공개 스냅샷을 만들거나, 별도의 복제본에서 모든 관련 브랜치·태그의 민감한 이력을 정리합니다. 라이선스와 저작권 표기는 유지합니다. - 실제 자격 증명·세션이 공개된 것으로 확인되면 비밀번호를 바꾸고 해당 세션을 폐기합니다. 이력 삭제로 자격 증명의 유효성이 사라지지는 않습니다.
- 새 공개 저장소 또는 정리한 복제본에서 파일·이력 검사를 다시 실행하고 이미지도 확인합니다. 기존 원격 이력을 교체할 때는 협업자의 복제본·PR·캐시·포크도 함께 처리해야 합니다.
구체적인 이력 정리와 원격 잔존 자료 처리는 GitHub의 민감한 데이터 제거 안내를 따릅니다. 이전 저장소와 정리된 코드의 백업은 로컬 비공개 폴더에 보관했습니다. 새 저장소에는 현재 main 코드만 업로드하고 이전 Git 이력을 연결하지 않았습니다. 2026-10-10 사용자 확인에 따르면 학교 비밀번호 변경·기존 세션 폐기는 아직 수행하지 않았습니다. GitHub Support 접수·내부 삭제 확인도 남아 있으며, 이력 정리 문서의 남은 외부 조치에 상태와 완료 조건을 기록합니다.
계정·쿠키·학생 정보·원문 응답을 공개 이슈에 붙이지 마세요. GitHub 비공개 취약점 제보가 활성화되어 있습니다. 재현에는 가상 값과 최소한의 소스를 제공합니다.
이번 감사는 CWE 분류와 수정, CVE 검토에 필요한 영향 범위·재현 조건을 정리했습니다. 새 CVE 번호를 신청하거나 발급받은 상태는 아닙니다. 정식 번호는 관련 CNA의 검토·할당 절차를 거쳐야 합니다. CVE 신고·신청 안내를 참고하세요.