
에이전트, 스킬, 도구(Gmail, Calendar)를 갖춘 자체 호스팅 AI 워크스페이스로, 전적으로 자신의 프로바이더 API 키(BYOK)로 실행됩니다. 자신의 키를 가져오세요 — Groq, OpenRouter, NVIDIA, Hugging Face, Google AI.
org.asynchttpclient:async-http-client(AsyncHttpClient, "AHC")의 26개 저장소 수준 보안 권고에 대한
오프라인 검사기.
이 도구는 여러분의 jar가 실제로 어떤 권고에 노출되어 있는지 알려주고, Dependabot과 OSV가
볼 수 없는 권고를 표시하며, 한 줄에 하나의 답을 제공합니다:
3.0.142.16.1은
수정되지 않을 5개의 권고에 여전히 영향을 받습니다. 유일한 해결책은 3.0.14로 이동하는 것입니다.단일 jar, 런타임 의존성 없음, 완전 오프라인, Java 17+.
정정 (2026-10-12, v0.2.0). 이 도구와 README의 v0.1.0은 다음과 같이 말했습니다: "전역 데이터베이스는 17개 중 4개만 나열한다", "Dependabot은 3.0.12를 설치하라고 한다", "실제 답은
3.0.13/2.16.1이다". 세 가지 모두 2026-09-19에는 사실이었지만 이제는 어느 것도 사실이 아닙니다: 업스트림은 2026-09-24에 5개의 권고를 추가로 발표했고(3.0.14에서 수정됨, 2.x에서는 수정되지 않음), 2026-10-08에는 GitHub 전역 데이터베이스가 9개의 항목을 더 수집했습니다. v0.1.0은3.0.13과2.16.1을 깨끗하다고 보고합니다 — 그렇지 않습니다. v0.2.0을 사용하세요.
2026-09-24에 유지관리자들은 5개의 권고를 발표했습니다. 각 권고는 Patches 섹션을 다음과 같은 동일한 문장으로 끝냅니다:
2.x 계열은 지원 종료이며 수정 사항을 받지 않습니다. 3.0.14로 업그레이드하세요.
5개 모두 2.16.1에서 끝나는 2.x 범위를 나열합니다 — Maven Central의 최신 2.x 릴리스이며 —
수정 버전은 비어 있습니다:
| 권고 | 심각도 | 2.x 범위 | 내용 | 필요 조건 |
|---|---|---|---|---|
CVE-2026-107230 | 높음 | >= 2.0.0, <= 2.16.1 | 풀링된 연결이 NTLM / Negotiate / 프록시 로그인 전반에 걸쳐 여전히 공유됨 (GHSA-vvp4-63h8-v5pm의 불완전한 수정) | 오리진 또는 프록시에 대한 NTLM, Kerberos 또는 SPNEGO, 또는 SOCKS / CONNECT 프록시에서의 모든 로그인, 그리고 하나의 클라이언트를 통해 서로 다른 신원으로 보내는 요청. 오리진에 대한 Basic 및 Digest는 영향을 받지 않음 |
CVE-2026-107227 | 높음 | >= 2.2.0, <= 2.16.1 | WebSocket permessage-deflate 메시지가 크기 제한 없이 팽창됨 | setEnablewebSocketCompression(true) — 기본값은 꺼짐 — 그리고 신뢰할 수 없거나 평문 WebSocket 서버 |
CVE-2026-107228 | 중간 | >= 2.1.0, <= 2.16.1 | setHeader / addHeader로 설정한 Cookie 헤더가 쿠키 저장소의 쿠키로 대체됨 (CVE-2024-53990 수정의 우회) | 쿠키 저장소 — 기본값은 켜짐 — 가 해당 오리진에 대한 쿠키를 보유 |
CVE-2026-107226 | 중간 | >= 2.1.0, <= 2.16.1 | 평문 HTTP로 수신한 쿠키가 HTTPS로 설정된 Secure 쿠키를 심거나, 덮어쓰거나, 삭제할 수 있음 | 동일 사이트의 평문 및 HTTPS 오리진 간에 공유되는 하나의 쿠키 저장소 |
CVE-2026-107229 | 중간 | >= 2.16.0, <= 2.16.1 | 기본 쿠키 저장소의 불완전한 오리진 검사 (public-suffix private 섹션, IP 호스트, …) | 하나의 클라이언트가 여러 오리진에 접근하며, 그중 하나가 공격자의 영향을 받음 |
두 개의 높음 등급에 대해 정확히 말하자면: 둘 다 기본 설정으로 일반 요청을 수행하는 클라이언트에는
적용되지 않습니다. CVE-2026-107227은 WebSocket 압축이 켜져 있어야 하고, CVE-2026-107230은
NTLM / Kerberos / SPNEGO 또는 인증 프록시가 필요합니다. 세 개의 중간 등급이 기본 쿠키 저장소에
영향을 미치는 것들입니다. 이 도구는 여러분이 클라이언트를 어떻게 사용하는지 알지 못합니다; 버전 범위가
말하는 바를 보고하고 판단은 여러분에게 맡깁니다.
달라지는 점: "2.16.1로 업그레이드하세요"는 더 이상 답이 아닙니다. 2.12.3과 같은 이전 2.x 버전은
2.x 수정이 있는 권고를 해결하기 위해 2.16.1로 올릴 수 있습니다 — 그리고 그 후에도 위의 5개 범위
안에 여전히 속합니다(2.16.0 미만에서 업그레이드하면 범위가 2.16.0에서 시작하는
CVE-2026-107229가 오히려 추가됩니다). 도구는 정확히 그렇게 출력하며, 2.16.1에 대해서는 1로
종료합니다.
Dependabot과 OSV는 프로젝트 자체의 Security → Advisories 페이지를 읽지 않습니다. 이들은
GitHub 전역 권고 데이터베이스를 읽습니다. 2026-10-12 기준으로, GET /advisories/<GHSA>는
26개 저장소 권고 중 9개에 대해 404를 반환합니다:
CVE-2026-107281, CVE-2026-107279, CVE-2026-107232,
CVE-2026-107284, CVE-2026-102740, CVE-2026-102737, CVE-2026-85718, CVE-2026-85719) —
그중 2개는 유지관리자가 높음으로 평가했으며(CVE-2026-107232, CVE-2026-85719), 둘 다
프록시 자격 증명에 관한 것입니다.CVE-2026-107229).데이터베이스가 따라잡고 있습니다 — 8월 배치 중 4개는 2026-09-17에, 5개는
2026-10-08에 추가되었으므로 이 숫자는 계속 변할 것입니다. 모든 적중 항목은
Dependabot/全局库:已收录 / 未收录("전역 데이터베이스에 포함됨 / 포함되지 않음")와 함께 출력되며,
도구는 테이블이 생성된 날짜를 출력합니다. tools/recheck_before_publish.py는 오늘도 그 격차가
여전히 존재하는지 알려줍니다.
3.x의 경우 실질적인 영향은 이제 작습니다. 전역 데이터베이스만으로 계산해도
대상 버전은 3.0.14입니다. 버전 <= 3.0.11의 경우 누락된 두 개의 높음 등급 권고는
그냥 표시되지 않습니다.
알아둘 만한 또 다른 차이점이 있습니다. CVE-2026-107282는 유지관리자가 높음으로,
전역 데이터베이스에서는 치명적으로 평가합니다. 규칙 테이블은 유지관리자의 평가를 유지합니다.
CVE-2026-85721(높음)은 기본 설정에 적용되는 항목입니다. 자동 응답 압축 해제가
기본적으로 켜져 있고, HTTP/1.1 경로는 전체 크기에 제한 없이 본문을 팽창시킵니다.
악의적이거나 침해된 서버 — 또는 전송 중 응답을 수정할 수 있는 누구든 — 힙을 고갈시키는
작은 gzip/deflate 본문을 보낼 수 있습니다. 영향 범위: <= 3.0.11 및 <= 2.16.0.
이 항목은 전역 데이터베이스에 있으므로 Dependabot이 이에 대해 경고합니다.
범위에는 >=, <=, <, 명시적 = 3.0.12, 그리고 맨 3.0.0이 섞여 있습니다. 동일한 3.0.11이
CVE-2026-55688(< 3.0.11)에서는 안전하고 CVE-2026-107232
(<= 3.0.11)에서는 영향받음입니다. 규칙 테이블은 모든 연산자를 작성된 그대로 유지하며,
tools/gen_rules.py의 어서션과 단위 테스트는 경계가 이런 식으로 동작하지 않게 되면 실패합니다.
파서가 인식하지 못하는 범위 조각은 오류입니다 — 절대 "영향 없음"이 아닙니다. 빈 수정 버전은
권고 텍스트 자체가 해당 라인이 수명 종료라고 말할 때만 허용되며, "이 라인에는 수정 없음"으로
저장되고 절대 "영향 없음"으로 저장되지 않습니다.
저장소와 전역 데이터베이스 모두 권고를 포함하지만 범위에 대해 불일치하는 경우,
규칙 테이블은 합집합을 취합니다. 현재: CVE-2024-53990(저장소는 3.x 버전
3.0.0만 나열하고, 전역 데이터베이스는 2.x >= 2.1.0, < 2.12.4도 나열) 및
CVE-2026-107230(동일한 범위로, 한쪽은 <= 3.0.13, 다른 쪽은 < 3.0.14로 작성됨).
pom.xml을 스캔하지 않습니다AHC는 보통 SDK나 클라이언트 라이브러리에 의해 끌려오는 전이적 의존성입니다. artifactId는
pom.xml에 절대 나타나지 않을 수 있습니다. 이 도구는 실제로 배포되는 jar 내부의
META-INF/maven/org.asynchttpclient/async-http-client/pom.properties를 읽습니다 — Spring Boot
fat-jar(BOOT-INF/lib)나 WAR(WEB-INF/lib)에 중첩된 jar도 포함합니다.
레거시 1.x 좌표 com.ning:async-http-client는 동일한 artifactId를 가집니다. 나열되지만
판정되지는 않습니다.
java -jar async-http-client-check.jar target/ # scan build output
java -jar async-http-client-check.jar myapp.jar # fat-jar / war, nested jars included
java -jar async-http-client-check.jar --version-of 2.16.1 # judge a version directly
각 적중 항목은 ID, 심각도, 제목, 영향 범위, 수정 버전(또는 无(2.x 线已停止维护) — "없음, 2.x 라인은 지원 종료"), 그리고 전역 데이터베이스에 해당 항목이 있는지 여부를 출력합니다. 출력은 중국어입니다.
| 코드 | 의미 |
|---|---|
0 | 26개 중 어느 것에도 영향받지 않음, 그리고 모든 파일을 실제로 읽었음 |
1 | 영향받음 — 2.16.1 포함, v0.1.0에서는 이를 0으로 보고했음 |
2 | 판단할 수 없음 — 잘못된 인자, AHC jar를 찾을 수 없음, 인식할 수 없는 버전, 또는 공개된 범위를 벗어나는 사전 릴리스 버전 |
4 | 일부 파일을 읽을 수 없음 — zip이 아니거나, 잘렸거나, I/O 실패 |
"읽을 수 없었다"와 "안전하다"는 반드시 서로 다른 문장이어야 합니다. 정상적으로 비어 있는 jar(순수한 22바이트 EOCD 레코드)는 읽기 실패가 아닙니다. 한 파일이 영향을 받았고 동시에 다른 파일을 읽을 수 없는 경우, 종료 코드는 1로 유지됩니다.
async-http-client에 대해서만. AHC가 의존하는 Netty jar의 Netty CVE는 다루지 않습니다.3.0.15를 릴리스하거나, 전역 데이터베이스에서 누락된 항목을 추가할 수 있습니다 — 이미 한 번 그런 일이 있었습니다(상단의 정정 참조).src/main/java/dev/mikko/ahccheck/RuleTable.java는 생성되며, 절대 수동으로 편집하지 않습니다:
python tools/gen_rules.py --dry # run the assertions only
python tools/gen_rules.py # regenerate the table
저장소 수준의 권고(vulnerable_version_range, patched_versions)를 읽고, 각각을 전역 데이터베이스에서 조회한 뒤, 모든 규칙의 필드로 "Dependabot에 표시됨: 예/아니오"를 기록합니다. 일곱 가지 검증이 통과해야 하며, 그렇지 않으면 아무것도 기록되지 않습니다. 권고 개수와 전역 데이터베이스에서 누락된 정확히 9개의 집합이 여전히 기준선과 일치해야 하고, 빈 수정 버전은 2.x 계열에서 권고 텍스트에 지원 종료 문구가 포함된 경우에만 나타나야 하며, 3.x 교집합은 3.0.14이고 수정되지 않은 2.x 권고 다섯 개의 집합은 변경되지 않아야 합니다. 해당 버전들은 Maven Central에서 200을 반환하고, 센티널은 404를 반환하며, Maven Central에는 2.16.1보다 새로운 2.x 릴리스가 없어야 합니다. 2.16.1은 정확히 그 다섯 개에 해당하고, 3.0.13은 모두 3.0.14에서 수정된 다섯 개에 해당하며, 3.0.14는 아무것에도 해당하지 않아야 합니다. 모든 연산자 스타일이 존재하고 경계 사례가 여전히 뒤집혀야 하며, 저장소/전역 불일치는 여전히 정확히 알려진 것들이어야 합니다.
실제 jar 엔드투엔드 검사는 tools/e2e_real_jars.py에 있습니다(Maven Central의 실제 jar, fat-jar와 WAR 포함). tools/recheck_before_publish.py는 독립적인 소스로 주장을 재검증합니다 — OSV는 3.0.14가 깨끗하고 2.16.1은 그렇지 않다고 말합니다 — 그리고 전역 데이터베이스와 Maven Central을 각각 양성 대조군과 센티널과 함께 확인하며, 무언가 변경되면 0이 아닌 값으로 종료합니다.
Apache License 2.0 — LICENSE 참조.