project-copacetic / copacetic

๐Ÿงต CLI tool for directly patching container images!
https://project-copacetic.github.io/copacetic/
Apache License 2.0
908 stars 60 forks source link

[REQ] support for app-level patching #147

Open sherifkayad opened 1 year ago

sherifkayad commented 1 year ago

What is your question?

Hey there ๐Ÿ‘‹ .. First of all thanks for this great project! .. Just was curious, if there's a plan to also (maybe conditionally) support patching application specific dependencies and not only OS-level dependencies.

Some background / example context: A Spring Boot App that's running on eclipse-temurin:17-jre-alpine might have the list of vulnerabilties below:

myregistry.com/some-app:latest (alpine 3.17.3)

Total: 2 (UNKNOWN: 0, LOW: 0, MEDIUM: 2, HIGH: 0, CRITICAL: 0)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Library   โ”‚ Vulnerability โ”‚ Severity โ”‚ Installed Version โ”‚ Fixed Version โ”‚                           Title                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ libcrypto3 โ”‚ CVE-2023-1255 โ”‚ MEDIUM   โ”‚ 3.0.8-r3          โ”‚ 3.0.8-r4      โ”‚ Input buffer over-read in AES-XTS implementation on 64 bit โ”‚
โ”‚            โ”‚               โ”‚          โ”‚                   โ”‚               โ”‚ ARM                                                        โ”‚
โ”‚            โ”‚               โ”‚          โ”‚                   โ”‚               โ”‚ https://avd.aquasec.com/nvd/cve-2023-1255                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค               โ”‚          โ”‚                   โ”‚               โ”‚                                                            โ”‚
โ”‚ libssl3    โ”‚               โ”‚          โ”‚                   โ”‚               โ”‚                                                            โ”‚
โ”‚            โ”‚               โ”‚          โ”‚                   โ”‚               โ”‚                                                            โ”‚
โ”‚            โ”‚               โ”‚          โ”‚                   โ”‚               โ”‚                                                            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
2023-05-12T17:08:53.318+0200    INFO    Table result includes only package filenames. Use '--format json' option to get the full path to the package file.

Java (jar)

Total: 8 (UNKNOWN: 0, LOW: 0, MEDIUM: 5, HIGH: 1, CRITICAL: 2)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     Library                      โ”‚  Vulnerability   โ”‚ Severity โ”‚ Installed Version โ”‚ Fixed Version โ”‚                            Title                             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ org.springframework:spring-web (application.jar) โ”‚ CVE-2016-1000027 โ”‚ CRITICAL โ”‚ 5.3.27            โ”‚ 6.0.0         โ”‚ spring: HttpInvokerServiceExporter readRemoteInvocation      โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ method untrusted java deserialization                        โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ https://avd.aquasec.com/nvd/cve-2016-1000027                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค          โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ org.yaml:snakeyaml (application.jar)             โ”‚ CVE-2022-1471    โ”‚          โ”‚ 1.30              โ”‚ 2.0           โ”‚ Constructor Deserialization Remote Code Execution            โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ https://avd.aquasec.com/nvd/cve-2022-1471                    โ”‚
โ”‚                                                  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค                   โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                  โ”‚ CVE-2022-25857   โ”‚ HIGH     โ”‚                   โ”‚ 1.31          โ”‚ Denial of Service due to missing nested depth limitation for โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ collections                                                  โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ https://avd.aquasec.com/nvd/cve-2022-25857                   โ”‚
โ”‚                                                  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค                   โ”‚               โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                  โ”‚ CVE-2022-38749   โ”‚ MEDIUM   โ”‚                   โ”‚               โ”‚ Uncaught exception in                                        โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ org.yaml.snakeyaml.composer.Composer.composeSequenceNode     โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ https://avd.aquasec.com/nvd/cve-2022-38749                   โ”‚
โ”‚                                                  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค          โ”‚                   โ”‚               โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                  โ”‚ CVE-2022-38750   โ”‚          โ”‚                   โ”‚               โ”‚ Uncaught exception in                                        โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ org.yaml.snakeyaml.constructor.BaseConstructor.constructObj- โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ ect                                                          โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ https://avd.aquasec.com/nvd/cve-2022-38750                   โ”‚
โ”‚                                                  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค          โ”‚                   โ”‚               โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                                                  โ”‚ CVE-2022-38751   โ”‚          โ”‚                   โ”‚               โ”‚ Uncaught exception in                                        โ”‚
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ java.base/java.util.regex.Pattern$Ques.match                 โ”‚       
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ https://avd.aquasec.com/nvd/cve-2022-38751                   โ”‚       
โ”‚                                                  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค          โ”‚                   โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค       
โ”‚                                                  โ”‚ CVE-2022-38752   โ”‚          โ”‚                   โ”‚ 1.32          โ”‚ Uncaught exception in java.base/java.util.ArrayList.hashCode โ”‚       
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ https://avd.aquasec.com/nvd/cve-2022-38752                   โ”‚       
โ”‚                                                  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค          โ”‚                   โ”‚               โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค       
โ”‚                                                  โ”‚ CVE-2022-41854   โ”‚          โ”‚                   โ”‚               โ”‚ DoS via stack overflow                                       โ”‚       
โ”‚                                                  โ”‚                  โ”‚          โ”‚                   โ”‚               โ”‚ https://avd.aquasec.com/nvd/cve-2022-41854                   โ”‚       
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  

With Copa, I am so glad that I can get libcrypto3 & libssl3 patched and hence get no base image vulnerabilties anymore. However, what about the lovely snakeyaml in my application? ๐Ÿ˜„ .. Despite using the latest (or maybe I could say fairly new) version of the Spring Boot framework, the upstream project didn't update the vulnerable library .. soooo

sozercan commented 1 year ago

@sherifkayad glad to hear copa worked to patch OS vulnerabilities!

We would love to patch app/framework level vulns but I think it depends on the language. Since copa does not have access to application source code and doesn't rebuild it from source, it will not work for all cases (like Go, for example). This requires more design work on how it may or may not work for each language.

This might be better fit for interpreted languages like python or javascript. This is assuming those packages can be tracked down to and pulled from repositories like npm or pypi, etc.

I am not super familiar with Java dependencies, but if they can pulled from a central repo without rebuilding the app and ensure updates won't have breaking changes, than it might be possible.

sherifkayad commented 1 year ago

@sozercan thanks for your feedback ๐Ÿ™‚ .. Java dependencies can be pulled / tracked from the Maven central repository (exactly the same idea like NPM).

However, I think you are right with the re-compilation issue to make sure the app would work still as expected. Probably for NPM (or even Go) you have to re-compile the app anyways. Isn't that right?

RobertKielty commented 4 months ago

Not only would a userland application have to be recompiled, CI for the application would have to be re-run to ensure that expected behaviors of the application remained the same.

Would it make sense to have Copacetic deliver a patched (but fundamentally untested) userland application? I think not, because CI tools fulfill that function for userland applications already and the variablity accross how applications are tested using those tools is just too great.

The Copacetic docs should probably note that patching userland applications is out of scope for the project if it has not done so already?

sozercan commented 4 months ago

We are working on a related project called Dalec to be able to define and create applications, which can then be patched using copa.

With Dalec, users can create a spec to define and create application packages, and then containers with minimal runtime dependencies. After testing and publishing the application packages and containers, and then installing via applicable package managers, copa will be able to "patch" them. Dalec is in early stages right now, any feedback is welcome!

ashnamehrotra commented 3 months ago

Java patching investigation - https://docs.google.com/document/d/1CqoGLv5sLpUIay9-jwfZgiq8DN5fGskhGe92ObR_8ao/edit?usp=sharing

reneleonhardt commented 2 months ago

Java patching investigation - https://docs.google.com/document/d/1CqoGLv5sLpUIay9-jwfZgiq8DN5fGskhGe92ObR_8ao/edit?usp=sharing

If you need a challenge when Hello World is too easy... ๐Ÿ˜… https://hub.docker.com/r/confluentinc/cp-kafka is notoriously known for never rebuilding images (OS patches) and using the oldest app dependencies (even if newer patch releases require no code changes and fix high or critical security vulnerabilities like in ZooKeeper). But be warned, their images are complicated and huge because they use not only 1 classpath, but 2 classpath folders, with slightly different dependency versions... it's multiple images in one ๐Ÿคท