How to fix commons-compress vulnerability on Gradle ยังไง ฉบับเร่งรัด 🔧💡

Pitch Kantapit
odds.team
Published in
2 min readApr 23, 2024

How to fix commons-compress: CVE-2024–25710, CVE-2024–26308

สวัสดีครับทุกคน พอดีช่วงนี้ผมได้มีโอกาส Implement service ที่ใช้ gradle เป็นหลักเลยไปเจอว่าตอนนี้ถ้ามีการใช้ Vulnerability scan จะเจอช่องโหว่นึงแน่ ๆ คือ

Trivy Scan

จากภาพจะเป็นการ Scan จาก Trivy ครับใครยังไม่รู้จักนี้เลย -> Trivy คือ

org.apache.commons:commons-compress

โดยจะมี 2 ช่องโหว่คือ CVE-2024–25710, CVE-2024–26308

ซึ่งถ้าหาก Team มี definition of done ว่าถ้ามีช่องโหว่ที่สูงกว่า High จะถือว่างานไม่เสร็จ งั้นลองเปลี่ยน ไปใช้ Image Tag อื่นดูมั้ยยย งั้นอันไหนดีหล่ะ

จากภาพนะครับ ขอตอบว่าไม่ได้เพราะ ณ วันที่ 24/04/2024 นี้นั้นไม่มี gradle image ไหนรอดไปได้เลย อาจจะเป็นเพราะว่าเมื่อไม่นานมานี้มีข่าวเกี่ยวกับ lib ยอดนิยมอย่าง XZ ซึ่งบังเอิญเจ้า commons-compress นี้ก็มีไปใช้ XZ พอดิบพอดี

งั้นทางออกที่เร็วที่สุดตอนนี้ที่ผมใช้คืออะไร ใช่ครับถ้าพูดถึงท่าที่เร็วที่สุดคงหนีไม่พ้นการเปลี่ยน Base image ครับ ซึ่งก่อนหน้าผมเคยหนีไปซบ openjdk มาแต่ก็ยังคงเจอ ช่องโหว่พอ ๆ กัน แต่วันนี้ผมไปเจอ tag ที่น่าสนใจมาคือน้อง

openjdk:23-ea-17-jdk

ซึ่งถ้าดูแล้วน้องตอบโจทย์สำหรับ service ที่ผมกำลัง implement เลยครับ ผลลัพธ์ที่ได้เลยออกมาเป็นท่านี้ครับ

FROM gradle:jdk17-focal AS build-stage
WORKDIR /app

COPY . .
RUN ./gradlew clean build

FROM openjdk:23-ea-17-jdk
WORKDIR /app
COPY --from=build-stage /app/build/libs/app.jar .
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

ผมเอาน้องมาใช่เป็น Base image ใน Part ของ Multi-stage ครับเพราะเนื่องจาก gradle:jdk17-focal ที่ใช้เนี่ยยังมีช่องโหว่อยู่

Conclusion

ซึ่งหลังจากที่ไปท่านี้แล้วก็ Scan ไม่เจอช่องโหว่นี้แล้วครับ (แต่ยังติดตัวอื่น ๆ อยู่ แหะ ๆ 😅) สำหรับบทความนี้ก็เกิดหลังจากที่ผมได้ลองหา Solution อยู่พักนึงครับ เนื่องจากช่องโหว่ส่วนใหญ่จะมาเร็วไปเร็วเลยอยากจะเขียนบทความสั้น ๆ เร็ว ๆ มาแชร์ให้พี่ ๆ น้อง ๆ ทุก ๆ ท่านครับ หวังว่าจะเป็นประโยชน์ไม่มากก็น้อยครับ ซึ่งถ้าหากว่าพี่ ๆ ท่านไหนมีท่าอื่นอยากจะแชร์ ก็สามารถคอมเม้นไว้ด้านล่างได้เลยครับขอบคุณมากครับผม 🙏🏻

--

--