[하루한줄] Tampering with arbitrary packages in @types scope of npm
URL
Tampering with arbitrary packages in @types scope of npm
Target
dt-mergebot
Explain
Definitely Typed의 pull request 관리 bot에서 취약점이 발견되었습니다. Definitely typed는 @type scope 속 npm 패키지를 관리하는 프로젝트로 해당 취약점을 악용하면 악성 pull request를 merge 해 @type scope속 임의의 패키지를 조작할 수 있습니다.
취약점이 존재하는 dt-mergebot은 다음과 같은 작업을 합니다.
- pull request로부터 변화된(changes) 파일을 fetch
- 패키지에 해당 파일이 있는지 검사
- 패키지 관리자에게 보고
- 패키지 관리자가 승인하면 해당 pull request는 merge 권한 부여
- pull request 작성자가
Ready to merge
코멘트를 달면 merge 수행
문제는 dt-mergebot이 pull request의 merge권한을 계산할 때 첫 100개의 file만을 fetch 하기 때문에 101개 이상의 changes가 있는 pull request는 101 번째 파일부터 권한 검사 대상에서 제외됩니다.
query PR($pr_number: Int!) {
repository(owner: "DefinitelyTyped", name: "DefinitelyTyped") {
id
pullRequest(number: $pr_number) {
[...]
files(first: 100) {
totalCount
nodes {
path
additions
deletions
}
}
[...]
}
}
}
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.