How to fix commons-compress vulnerability on Gradle ยังไง ฉบับเร่งรัด 🔧💡
How to fix commons-compress: CVE-2024–25710, CVE-2024–26308
สวัสดีครับทุกคน พอดีช่วงนี้ผมได้มีโอกาส Implement service ที่ใช้ gradle เป็นหลักเลยไปเจอว่าตอนนี้ถ้ามีการใช้ Vulnerability scan จะเจอช่องโหว่นึงแน่ ๆ คือ
จากภาพจะเป็นการ Scan จาก Trivy ครับใครยังไม่รู้จักนี้เลย -> Trivy คือ
โดยจะมี 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 ที่น่าสนใจมาคือน้อง
ซึ่งถ้าดูแล้วน้องตอบโจทย์สำหรับ 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 อยู่พักนึงครับ เนื่องจากช่องโหว่ส่วนใหญ่จะมาเร็วไปเร็วเลยอยากจะเขียนบทความสั้น ๆ เร็ว ๆ มาแชร์ให้พี่ ๆ น้อง ๆ ทุก ๆ ท่านครับ หวังว่าจะเป็นประโยชน์ไม่มากก็น้อยครับ ซึ่งถ้าหากว่าพี่ ๆ ท่านไหนมีท่าอื่นอยากจะแชร์ ก็สามารถคอมเม้นไว้ด้านล่างได้เลยครับขอบคุณมากครับผม 🙏🏻