Bypassing Software Update Package Encryption - Extracting The Lexmark MC3224i Printer Rmware (Part 1)
Bypassing Software Update Package Encryption - Extracting The Lexmark MC3224i Printer Rmware (Part 1)
• Summary
◦ Serial output
1 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
• Wrapping up
• As a side note…
Summary
2 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
package encryption. With the �rmware extracted, the binaries could be reverse-
engineered to �nd vulnerabilities that would allow remote code execution.
PCB overview
The main printed circuit board (PCB) is located on the left side of the printer.
The device is powered by a Marvell 88PA6220-BUX2 System-on-Chip (SoC)
which is specially designed for the printer industry and a Micron
MT29F2G08ABAGA NAND �ash (2Gb i.e. 256MB) for �rmware storage. The
NAND �ash can be easily located on the lower left side of the PCB:
Serial output
The UART connector was quickly identi�ed, which is labeled JRIP1 on the
3 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
PCB:
• review the boot log to understand the �ash layout by observing the device’s
partition information
• scan the boot log for any indications that software signature veri�cation is
performed by the printer
• hope to get a shell in either the bootloader (U-Boot) or the OS (Linux) The
serial output (115200 baud) of the printer’s boot process is shown below:
1 Si Ge2-RevB 3.3.22-9h 12 14 25
2 TIME=Tue Mar 10 21:02:36 2020;COMMIT=863d60b
3
4
5 uidc
6 Failure Enabling AVS workaround on 88PG870
7 setting AVS Voltage to 1050
8 Bank5 Reg2 = 0x0000381E, VoltBin = 0, efuseEscape = 0
9 AVS efuse Values:
10 Efuse Programed = 1
4 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
5 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
On other devices NCC Group reviewed in the past, access to UART pins
sometimes offered a full Linux shell. On the MC3224i the UART RX pin did not
6 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
appear to be enabled, therefore we were only able to view the boot log, but not
interact with the system. It may be possible that the pin is disabled through
e-fuses on the SoC. Alternatively, a zero-ohm resistor may has been removed
from the PCB on production devices, in which case it may be possible to re-
enable it. Since our main goal was to remove the �ash and extract the
�rmware, we did not investigate this further.
7 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
The entire process took about an hour, including testing the connections under
a microscope. The printer booted successfully, hooray! The easy part was
done…
The dumped �ash image is exactly 285,212,672 bytes long, which is more than
268,435,456 bytes in 256MB. This is because the raw read of the �ash includes
spare areas, also referred to as page OOB (out-of-band) data areas. From the
Micron spreadsheet:
Internal ECC enables 9-bit detection and 8-bit correction in 528 bytes (x8) of main
area and 16 bytes (x8) of spare area. […]
During a PROGRAM operation, the device calculates an ECC code on the 2k page in
the cache register, before the page is written to the NAND Flash array. The ECC
code is stored in the spare area of the page.
During a READ operation, the page data is read from the array to the cache register,
where the ECC code is calculated and compared with the ECC code value read from
the array. If a 1- to 8-bit error is detected, the error is corrected in the cache
register. Only corrected data is output on the I/O bus.
8 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
The �ash has two planes, each containing 1024 blocks. Putting everything
together:2 planes * 1024 blocks/plane * 64 pages/block * (2048 + 128) bytes/page
= 285,212,672 Since the spare area is only required for �ash-management use
and does not contains useful user data, we wrote a small script that drops the
128 bytes of OOB data after each 2048-byte page. The resulting �le is exactly
256MB.
9 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
The TIM header format is presented below in the last structure (obviously, it
assumes the OOB data has already been removed):
1 typedef struct {
2 unsigned int Version;
3 unsigned int Identifier;
4 unsigned int Trusted;
5 unsigned int IssueDate;
6 unsigned int OEMUniqueID;
7 } VERSION_I;
8
9 typedef struct {
10 unsigned int Reserved[5];
11 unsigned int BootFlashSign;
12 } FLASH_I, *pFLASH_I;
13
14 // Constant part of the header
15 typedef struct {
16 {
17 VERSION_I VersionBind;
18 FLASH_I FlashInfo;
19 unsigned int NumImages;
20 unsigned int NumKeys;
21 unsigned int SizeOfReserved;
22 } CTIM, *pCTIM;
23
24 typedef struct {
25 uint32_t ImageID; // Indicate which Image
26 uint32_t NextImageID; // Indicate next image in the chain
27 uint32_t FlashEntryAddr; // Block numbers for NAND
28 uint32_t LoadAddr;
29 uint32_t ImageSize;
30 uint32_t ImageSizeToHash;
10 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
As detailed below, the processor was secured by the Lexmark team, so let’s take
a look at some of the relevant �elds that help us extract the images. For a
complete description of each �eld please refer to this Reference Manual:
• TIM header version (3.4.0). This is useful later to identify which version of
Image Info structure (IMAGE_INFO_3_4_0) is used. – Identifier
(0x54494D48) – always ASCII "TIMH", a constant string used to identify a
valid header.
◦ Trusted (0x00000001) – 0 for insecure processors, 1 for secure. The
11 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
◦ ImageSize (0x00000738) – the size of the image, 1,848 bytes for the
header.
12 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
◦ ImageSize (0x0000FD40) – the size of the image, 64,832 bytes for OBMI.
13 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
block signature "UBI#" showing up every 131,072 bytes, i.e. 128KB, i.e.
every �ash block (1 block * 64 pages/block * 2048-bytes/page). In total we
shall see that there were 2,024 UBI blocks resulting in a �le (we named it
ubi_data.bin ) that is 253MB in size.
$ file ubi_data.bin
ubi_data.bin: UBI image, version 1
Ok, so we have an UBI image (named ubi_data.bin ) that contains all the UBI
blocks:What now? First a bit more about UBI…
The �rst four bytes of the �rst page of each erase block starts with "UBI#", as
mentioned above. This shows that the �rst page is occupied by the erase count
header which contains stats used for wear-protection operations. If the block
contains user data, the second page in the block is occupied by the volume
header (starts with "UBI!"). As the �rst two pages of each block contain
metadata, only 62 of the 64 pages (124KB) store user data, a little less than the
expected 128KB.Let’s see what’s inside using the ubi_read tool:
• 1302 blocks used for data (part of a volume), represents the block count sum
for all volumes
14 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
$ ubireader_display_info ubi_data.bin
UBI File
____________________-
Min I/O: 2048
LEB Size: 126976
PEB Size: 131072
Total Block Count: 2024
Data Block Count: 1302
Layout Block Count: 2
Internal Volume Block Count: 1
Unknown Block Count: 719
First UBI PEB Number: 2.0
Image: 0
____________________-
Image Sequence Num: 0
Volume Name:Kernel
Volume Name:Base
Volume Name:Copyright
Volume Name:Engine
Volume Name:InternalStorage
Volume Name:MBR
Volume Name:ManBlock
PEB Range: 0 - 2023
15 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
Volume: Kernel
____________________-
Vol ID: 2
Name: Kernel
Block Count: 95
Volume Record
____________________-
alignment: 1
crc: '0x8abc33f6'
data_pad: 0
errors: ''
flags: 0
name: 'Kernel'
name_len: 6
padding: 'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x
rec_index: 2
reserved_pebs: 133
upd_marker: 0
vol_type: 'dynamic'
Volume: Base
____________________-
Vol ID: 3
Name: Base
Block Count: 927
Volume Record
____________________-
16 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
alignment: 1
crc: '0xc3f30751'
data_pad: 0
errors: ''
flags: 0
name: 'Base'
name_len: 4
padding: 'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x
rec_index: 3
reserved_pebs: 1132
upd_marker: 0
vol_type: 'dynamic'
Volume: Copyright
____________________-
Vol ID: 4
Name: Copyright
Block Count: 1
Volume Record
____________________-
alignment: 1
crc: '0xa065ca'
data_pad: 0
errors: ''
flags: 0
name: 'Copyright'
name_len: 9
padding: 'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x
17 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
rec_index: 4
reserved_pebs: 3
upd_marker: 0
vol_type: 'dynamic'
Volume: Engine
____________________-
Vol ID: 15
Name: Engine
Block Count: 21
Volume Record
____________________-
alignment: 1
crc: '0x66c80b4b'
data_pad: 0
errors: ''
flags: 0
name: 'Engine'
name_len: 6
padding: 'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x
rec_index: 15
reserved_pebs: 34
upd_marker: 0
vol_type: 'dynamic'
Volume: InternalStorage
____________________-
Vol ID: 24
18 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
Name: InternalStorage
Block Count: 256
Volume Record
____________________-
alignment: 1
crc: '0x962ca517'
data_pad: 0
errors: ''
flags: 0
name: 'InternalStorage'
name_len: 15
padding: 'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x
rec_index: 24
reserved_pebs: 674
upd_marker: 0
vol_type: 'dynamic'
Volume: MBR
____________________-
Vol ID: 90
Name: MBR
Block Count: 1
Volume Record
____________________-
alignment: 1
crc: '0x5fee82ff'
data_pad: 0
19 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
errors: ''
flags: 0
name: 'MBR'
name_len: 3
padding: 'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x
rec_index: 90
reserved_pebs: 2
upd_marker: 0
vol_type: 'static'
Volume: ManBlock
____________________-
Vol ID: 91
Name: ManBlock
Block Count: 1
Volume Record
____________________-
alignment: 1
crc: '0x28cd6521'
data_pad: 0
errors: ''
flags: 0
name: 'ManBlock'
name_len: 8
padding: 'x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x
rec_index: 91
reserved_pebs: 2
upd_marker: 0
20 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
vol_type: 'static'
The volumes represent partitions used by the device, some of which are �le
systems:
$ file *.ubifs
img-0_vol-Base.ubifs: Squashfs filesystem, little endian, ve
img-0_vol-Copyright.ubifs: datanimg-0_vol-Engine.ubifs:
img-0_vol-InternalStorage.ubifs: UBIfs image, sequence number 1, length
img-0_vol-Kernel.ubifs: Linux Compressed ROM File System data,
filesimg-0_vol-ManBlock.ubifsimg-0_vol-ManBlock.ubifs: data
img-0_vol-MBR.ubifs: DOS/MBR boot sector; partition 1 : ID=
21 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
The simulated NAND �ash is 256MB and each erase block is 128KB, which
matches the physical �ash. Since we are only mounting one volume of 49MB,
space should not be a problem:
22 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
$ cat /proc/mtd
dev: size erasesize name
mtd0: 10000000 00020000 "NAND simulator partition 0"
$ dmesg | grep "nand:"
[50027.712675] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xda
[50027.712677] nand: Micron NAND 256MiB 3,3V 8-bit
[50027.712678] nand: 256 MiB, SLC, erase size: 128 KiB, page size: 2048
Note that the OOB size reported by dmesg is 64 bytes which is incorrect, since
it should have been 128 bytes. However, since we are simulating the NAND
�ash in RAM this is not an issue. At the time of this writing nandsim does not
support the model of Micron NAND �ash used by the printer.Next, let us erase
all the blocks from start to end. For more details run flash_erase --help :
With all simulated NAND �ash blocks erased, let’s format the partition. The �rst
parameter speci�es the minimum input/output unit, in our case one page. The
second speci�es offset of the volume id, in our case 2048 bytes into the UBI
erase block, as presented earlier in this section of the blog.
23 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
24 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
Additional information about the UBI device can be obtained using ubinfo
/dev/ubi0 and ubinfo /dev/ubi0_0 . Now to put the extracted volume
image in the UBI device 0 and volume 0:
Finally, we can mount the UBI device using the mount command below.
Alternatively, sudo mount -t ubifs ubi0:my_volume_InternalStorage
mnt/ can also be used:
25 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
• auth database, contains user account from when we �rst set up the printer
(username and hash of password)
• calibration data
26 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
$ unsquashfs img-0_vol-Base.ubifs
$ ls -l Base_squashfs_dir
drwxr-xr-x 2 cvisinescu cvisinescu 4096 Jun 22 2021 bin
drwxr-xr-x 2 cvisinescu cvisinescu 4096 Jun 22 2021 boot
-rw-r--r-- 1 cvisinescu cvisinescu 909 Jun 22 2021 Build.Info
drwxr-xr-x 2 cvisinescu cvisinescu 4096 Mar 11 2021 dev
drwxr-xr-x 53 cvisinescu cvisinescu 4096 Jun 22 2021 etc
drwxr-xr-x 6 cvisinescu cvisinescu 4096 Jun 22 2021 home
drwxr-xr-x 8 cvisinescu cvisinescu 4096 Jun 22 2021 lib
drwxr-xr-x 2 cvisinescu cvisinescu 4096 Mar 11 2021 media
drwxr-xr-x 2 cvisinescu cvisinescu 4096 Mar 11 2021 mnt
drwxr-xr-x 5 cvisinescu cvisinescu 4096 Jun 22 2021 opt
drwxr-xr-x 2 cvisinescu cvisinescu 4096 Jun 22 2021 pkg-netapps
dr-xr-xr-x 2 cvisinescu cvisinescu 4096 Mar 11 2021 proc
drwx------ 4 cvisinescu cvisinescu 4096 Jun 22 2021 root
drwxr-xr-x 2 cvisinescu cvisinescu 4096 Mar 11 2021 run
drwxr-xr-x 2 cvisinescu cvisinescu 4096 Jun 22 2021 sbin
drwxr-xr-x 2 cvisinescu cvisinescu 4096 Mar 11 2021 srv
dr-xr-xr-x 2 cvisinescu cvisinescu 4096 Mar 11 2021 sys
drwxrwxrwt 2 cvisinescu cvisinescu 4096 Mar 11 2021 tmp
drwxr-xr-x 10 cvisinescu cvisinescu 4096 Apr 18 2021 usr
drwxr-xr-x 13 cvisinescu cvisinescu 4096 Mar 16 2021 var
lrwxrwxrwx 1 cvisinescu cvisinescu 14 Jun 14 2021 web -> /usr/share
Success… now that we have the binaries, we can begin the task of reverse
engineering them and understand how the printer works: vulnerabilities
included. Part 2 of this blog will further show the reader the process used to
27 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
Wrapping up
• UBI image
◦ Base – squashfs �lesystem for binaries
As a side note…
28 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
During the early days of the project we �rst tried to modify parts of the
�rmware image (including the error correction code in the spare areas). The end
goal was to perform dynamic testing on a live system and eventually obtain a
shell which we could use to dump the binaries, view ruing processes, review
�le permissions, and understand how the Lexmark �rmware works in general. It
required repeated programming of the �ash. While we can reliably re-attach
the �ash on the PCB multiple times, each attempt carries a risk of damage to
both the chip and the PCB pads on which it is mounted. nOrdering replacement
�ash parts from the common vendors was not an option due to chip shortages.
As such we attempted to create a contraption that would help us use the
TSOP-48 adapter directly, basically a poor man’s chip socket.
The connections were good, but the device would not boot past U-Boot (as
observed over serial) for reasons we did not understand:
1 Si Ge2-RevB 3.3.22-9h 12 14 25
2 TIME=Tue Jun 08 20:32:27 2021;COMMIT=863d60b
3
4
29 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
5 uidc
6 Failure Enabling AVS workaround on 88PG870
7 setting AVS Voltage to 1050
8 Bank5 Reg2 = 0x000038E4, VoltBin = 0, efuseEscape = 0
9 AVS efuse Values:
10 Efuse Programed = 1
11 Low VDD Limit = 31
12 High VDD Limit = 31
13 Target DRO = 65535
14 Select Vsense0 = 0
15 a
16 Calling Configure_Flashes @ 0xFFE010A8 12 FE 13 E0026800
17 fves
18 DDR3 400MHz 1x16 4Gbit
19 rSHA compare Passed 0
20 SHA compare Passed 0
21 l
22 Launch AP Core0 @ 0x00100000
23
24
25 U-Boot 2018.07-AUTOINC+761a3261e9 (Jun 08 2021 - 20:32:14 +0000)
26
27 DRAM: 512 MiB
28 NAND: 256 MiB
29 MMC: mv_sdh: 0, mv_sdh: 1, mv_sdh: 2
30 lxk_gen2_eeprom_probe:123: No panel eeprom option found.
31 lxk_panel_notouch_probe_gen2:283: panel uicc type 68, hw vers 19, panel id 98, display type 11, firmware
32 found smpn display TM024HDH49 / ILI9341 default
33 lcd_lvds_pll_init: Requesting dotclk=40000000Hz
34 found smpn display Yeebo 2.8 B
35 ubi0: default fastmap pool size: 100
36 ubi0: default fastmap WL pool size: 50
37 ubi0: attaching mtd1
38 ubi0: attached by fastmap
39 ubi0: fastmap pool size: 100
40 ubi0: fastmap WL pool size: 50
41 ubi0: attached mtd1 (name "mtd=1", size 253 MiB)
42 ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
43 ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
44 ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
45 ubi0: good PEBs: 2018, bad PEBs: 8, corrupted PEBs: 0
46 ubi0: user volume: 7, internal volumes: 1, max. volumes count: 128
30 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
47 ubi0: max/mean erase counter: 4/2, WL threshold: 4096, image sequence number: 0
48 ubi0: available PEBs: 0, total reserved PEBs: 2018, PEBs reserved for bad PEB handling: 32
49 Loading file '/shared/pm/softoff' to addr 0x1f6545d4...
50 Unmounting UBIFS volume InternalStorage!
51 Card did not respond to voltage select!
52 bootcmd: setenv cramfsaddr 0x1e800000;ubi read 0x1e800000 Kernel 0xb63208;sha256verify 0x1e800000 0x1f36
53 Read 11940360 bytes from volume Kernel to 1e800000
54 Code authentication success
55 ### CRAMFS load complete: 2165 bytes loaded to 0x100000
56 ## Executing script at 00100000
57 ### CRAMFS load complete: 4773552 bytes loaded to 0xa00000
58 ### CRAMFS load complete: 5123782 bytes loaded to 0x1600000
59 ## Booting kernel from Legacy Image at 00a00000 ...
60 Image Name: Linux-4.17.19-yocto-standard-2f4
61 Image Type: ARM Linux Kernel Image (uncompressed)
62 Data Size: 4773488 Bytes = 4.6 MiB
63 Load Address: 00008000
64 Entry Point: 00008000
65 ## Loading init Ramdisk from Legacy Image at 01600000 ...
66 Image Name: initramfs-image-granite2-2021061
67 Image Type: ARM Linux RAMDisk Image (uncompressed)
68 Data Size: 5123718 Bytes = 4.9 MiB
69 Load Address: 00000000
70 Entry Point: 00000000
71 ## Flattened Device Tree blob at 01500000
72 Booting using the fdt blob at 0x1500000
73 Loading Kernel Image ... OK
74 Using Device Tree in place at 01500000, end 01516b28
75 UPDATING DEVICE TREE WITH st:1fec4000 sz: 12c000
76
77 Starting kernel ...
78
79 Booting Linux on physical CPU 0xffff00
80 Linux version 4.17.19-yocto-standard-2f4d6903b333a60c46f1f33da4b122d1 (oe-user@oe-host) (gcc version 7.3
81 CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=30c5383d
82 CPU: div instructions available: patching division code
83 CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
84 OF: fdt: Machine model: mv6220 Lionfish 00d L
85 earlycon: early_pxa0 at MMIO32 0x00000000d4030000 (options '')
86 bootconsole [early_pxa0] enabled
87 FIX ignoring exception 0xa11 addr=a7ff7dfe swapper/0:1
88
31 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
32 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
The signal integrity due to cable length was a concern and we tried to use a
shorter cable, unfortunately with the same results.
At this point the return on investment for the time spent was low, so we
decided to better invest the time on reversing the binaries. Turned out it was a
good idea as we will see in the second part of this blog coming soon.
interesting
During the Autumn of 2023, Google engaged NCC Group to conduct a security
assessment of the white paper entitled “RSA Blind Signatures with Public
Metadata”, along with the corresponding IETF draft for “Partially Blind RSA
Signatures”. The work is inspired by the growing importance of anonymous
tokens for the privacy…
Max Groot and Erik Schamper TL;DR Introduction During incident response
engagements we often encounter antivirus applications that have rightfully
triggered on malicious software that was deployed by threat actors. Most
commonly we encounter this for Windows Defender, the antivirus solution that
is shipped by default with Microsoft Windows. Windows Defender…
Uncategorized
34 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
During late summer 2023, Aleo Systems Inc. engaged NCC Group’s
Cryptography Services team to conduct an implementation review of several
components of snarkVM, a virtual machine for zero-knowledge proofs. The
snarkVM platform allows users to write and execute smart contracts in an
ef�cient, yet privacy-preserving manner by leveraging zero-knowledge…
35 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
Technical Advisory –
Multiple
Vulnerabilities in
Nagios XI
36 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
Call us on:
General Number:
441612095200
443316300690
Contact Us Compliance
Accessibility Remediation
37 of 38 12/17/2023, 1:22 PM
Bypassing software update package encryption – extracting the Lexma... https://research.nccgroup.com/2022/02/17/bypassing-software-update-p...
Software Resilience
38 of 38 12/17/2023, 1:22 PM