> -----Original Message----- > From: acpi-request@xxxxxxxxxxxxxxxxx [mailto:acpi- > request@xxxxxxxxxxxxxxxxx] On Behalf Of David Renz > Sent: Saturday, August 19, 2017 7:29 PM > To: linux-acpi@xxxxxxxxxxxxxxx > Cc: acpi@xxxxxxxxxxxxxxx; Intel Product Security Incident Response Team > <Intel.Product.Security.Incident.Response.Team@xxxxxxxxx>; > david.renz@xxxxxx > Subject: [acpi] Corrupt ACPI code (HP Pavilion Desktop PC 570-p0xx) > [~170 ACPI-related failures found by FWTS] > > Hello, > > I reported this issue a while ago to some people from redhat.com, who > forwarded my mail to <secure@xxxxxxxxx>, but I didn't receive any reply > for about 2 weeks, and unfortunately I lost my access to this mail > account. Therefore I'm sending/posting this once more using my > university's mail address, since I would be able to recover the access > if I should lose it again. [Please send your mail to this address in > case somebody should have tried to contact me using that old mail > address in the meantime.] > > > This is the report generated by FirmwareTestSuite (FWTS, > https://wiki.ubuntu.com/FirmwareTestSuite/Reference): > https://pastebin.com/TapPuPMg > > > > To provide an example of the numerous ACPI-related error messages found > by FWTS: > > FAILED [LOW] AMLAsmASL_MSG_NOT_REFERENCED: Test 1, Assembler remark in > line 1141 > Line | AML source > ------------------------------------------------------------------------ > -------- > 01138| Store (Buffer (0x18) {}, Local7) > 01139| CreateDWordField (Local7, 0x00, A119) > 01140| CreateDWordField (Local7, 0x04, A120) > 01141| CreateDWordField (Local7, 0x08, A121) > | ^ > | Remark 2089: Object is not referenced (Name [A121] is within > a > method [A037]) > 01142| CreateDWordField (Local7, 0x0C, A122) > 01143| CreateDWordField (Local7, 0x10, A123) > 01144| CreateDWordField (Local7, 0x14, A124) > > > > One of my friends also owns a similar HP Pavilion Desktop PC, and having > performed a test run using FWTS didn't show any ACPI-related > error/failure messages in his case, so I assume that this behavior and > all these errors can definitely not be considered as being normal. > > > > ACPI-related error messages can also be seen in the kernel output when > booting any Linux distro, e. g. in case of openSUSE Leap 42.2 it > reports: > [...] > [ 12.291867] ACPI Error: Field [D128] at 1152 exceeds Buffer [NULL] > size 160 (bits) (20150930/dsopcode-236) > [ 12.291875] ACPI Error: Method parse/execution failed [\HWMC] (Node > ffff880197cb5b30), AE_AML_BUFFER_LIMIT (20150930/psparse-542) > [ 12.291891] ACPI Error: Method parse/execution failed > [\_SB.WMID.WMAA] (Node ffff880197cb7d60), AE_AML_BUFFER_LIMIT > (20150930/psparse-542) > [ 12.291939] ACPI Error: Field [D128] at 1152 exceeds Buffer [NULL] > size 160 (bits) (20150930/dsopcode-236) > [ 12.291943] ACPI Error: Method parse/execution failed [\HWMC] (Node > ffff880197cb5b30), AE_AML_BUFFER_LIMIT (20150930/psparse-542) > [ 12.291947] ACPI Error: Method parse/execution failed > [\_SB.WMID.WMAA] (Node ffff880197cb7d60), AE_AML_BUFFER_LIMIT > (20150930/psparse-542) > [ 12.291988] ACPI Error: Field [D128] at 1152 exceeds Buffer [NULL] > size 160 (bits) (20150930/dsopcode-236) > [ 12.291990] ACPI Error: Method parse/execution failed [\HWMC] (Node > ffff880197cb5b30), AE_AML_BUFFER_LIMIT (20150930/psparse-542) > [ 12.291997] ACPI Error: Method parse/execution failed > [\_SB.WMID.WMAA] (Node ffff880197cb7d60), AE_AML_BUFFER_LIMIT > (20150930/psparse-542) > [ 12.292066] input: HP WMI hotkeys as /devices/virtual/input/input4 > [ 12.292243] ACPI Error: Field [D128] at 1152 exceeds Buffer [NULL] > size 160 (bits) (20150930/dsopcode-236) > [ 12.292247] ACPI Error: Method parse/execution failed [\HWMC] (Node > ffff880197cb5b30), AE_AML_BUFFER_LIMIT (20150930/psparse-542) > [ 12.292262] ACPI Error: Method parse/execution failed > [\_SB.WMID.WMAA] (Node ffff880197cb7d60), AE_AML_BUFFER_LIMIT > (20150930/psparse-542) > [ 12.292308] ACPI Error: Field [D128] at 1152 exceeds Buffer [NULL] > size 160 (bits) (20150930/dsopcode-236) > [ 12.292316] ACPI Error: Method parse/execution failed [\HWMC] (Node > ffff880197cb5b30), AE_AML_BUFFER_LIMIT (20150930/psparse-542) > [ 12.292325] ACPI Error: Method parse/execution failed > [\_SB.WMID.WMAA] (Node ffff880197cb7d60), AE_AML_BUFFER_LIMIT > (20150930/psparse-542) > [...] > > > > By just analyzing the kernel boot output it seems that this ACPI code / > its execution results in a memory remapping and that it has an effect on > the interrupt routing: > [...] > [ 0.438260] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 > [ 0.438355] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem > 0xf8000000-0xfbffffff] (base 0xf8000000) > [ 0.438358] PCI: MMCONFIG at [mem 0xf8000000-0xfbffffff] reserved in > E820 > [ 0.438363] PCI: Using configuration type 1 for base access > [ 0.462685] ACPI: Added _OSI(Module Device) > [ 0.462689] ACPI: Added _OSI(Processor Device) > [ 0.462691] ACPI: Added _OSI(3.0 _SCP Extensions) > [ 0.462692] ACPI: Added _OSI(Processor Aggregator Device) > [ 0.465615] ACPI: Executed 1 blocks of module-level executable AML > code > [ 0.477070] ACPI: Interpreter enabled > [ 0.477102] ACPI: (supports S0 S3 S4 S5) > [ 0.477104] ACPI: Using IOAPIC for interrupt routing > [ 0.477143] PCI: Using host bridge windows from ACPI; if necessary, > use "pci=nocrs" and report a bug > [ 0.477704] [Firmware Bug]: ACPI: No _BQC method, cannot determine > initial brightness > [ 0.479303] [Firmware Bug]: ACPI: No _BQC method, cannot determine > initial brightness > [...] > [ 0.481669] [Firmware Bug]: ACPI: No _BQC method, cannot determine > initial brightness > [ 0.484553] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) > [ 0.484562] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM > ClockPM Segments MSI] > [ 0.484816] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME > AER PCIeCapability] > [ 0.484830] acpi PNP0A08:00: [Firmware Info]: MMCONFIG for domain > 0000 [bus 00-3f] only partially covers this bridge > [...] > > > Finally it seems that this memory remapping makes it possible to inject > hidden kernel modules (which I was able to detect using the Volatility > Framework previously, apart from kernel hooks): > > [ 11.536189] resource sanity check: requesting [mem > 0xddf78000-0xddf7bfff], which spans more than MSFT0101:00 [mem > 0xddf78000-0xddf78fff] > [ 11.536192] ------------[ cut here ]------------ > [ 11.536198] WARNING: CPU: 3 PID: 587 at ../arch/x86/mm/ioremap.c:198 > __ioremap_caller+0x293/0x350() > [ 11.536199] Info: mapping multiple BARs. Your kernel is fine. > [ 11.536199] Modules linked in: tpm_crb(+) ablk_helper cryptd fjes > 8250_dw processor soundcore gpio_amdpt button video thermal > i2c_designware_platform i2c_designware_core xfs libcrc32c sd_mod uas > usb_storage crc32c_intel amdkfd amd_iommu_v2 ehci_pci ehci_hcd xhci_pci > nvme nvme_core amdgpu ahci libahci i2c_algo_bit xhci_hcd drm_kms_helper > libata syscopyarea sysfillrect sysimgblt fb_sys_fops ttm usbcore > usb_common drm sg scsi_mod efivarfs autofs4 > [ 11.536273] CPU: 3 PID: 587 Comm: systemd-udevd Tainted: G W > 4.4.79-18.26-default #1 > [ 11.536275] Hardware name: HP HP Pavilion Desktop PC 570-p0xx/82FE, > BIOS F.12 05/19/2017 > [ 11.536277] 0000000000000000 ffffffff8132a157 ffff8801f5bd3ad0 > ffffffff81a50b3a > [ 11.536286] ffffffff8107ef11 > [ 11.536287] ffffc90000cb8000 ffff8801f5bd3b20 ffffc90000cb8000 > [ 11.536294] 0000000000004000 > [ 11.536296] ffff8800daa41600 ffffffff8107ef8c ffffffff81a48a78 > [ 11.536302] Call Trace: > [ 11.536315] [<ffffffff81019ea9>] dump_trace+0x59/0x320 > [ 11.536321] [<ffffffff8101a26a>] show_stack_log_lvl+0xfa/0x180 > [ 11.536324] [<ffffffff8101b011>] show_stack+0x21/0x40 > [ 11.536330] [<ffffffff8132a157>] dump_stack+0x5c/0x85 > [ 11.536334] [<ffffffff8107ef11>] warn_slowpath_common+0x81/0xb0 > [ 11.536337] [<ffffffff8107ef8c>] warn_slowpath_fmt+0x4c/0x50 > [ 11.536341] [<ffffffff81066f93>] __ioremap_caller+0x293/0x350 > [ 11.536347] [<ffffffff8134316d>] devm_ioremap_nocache+0x3d/0x80 > [ 11.536351] [<ffffffffa026d3ac>] crb_acpi_add+0x13c/0x290 [tpm_crb] > [ 11.536366] [<ffffffff813afada>] acpi_device_probe+0x4a/0x1c0 > [ 11.536373] [<ffffffff81471ca7>] driver_probe_device+0x1f7/0x420 > [ 11.536377] [<ffffffff81471f4b>] __driver_attach+0x7b/0x80 > [ 11.536382] [<ffffffff8146fb98>] bus_for_each_dev+0x58/0x90 > [ 11.536386] [<ffffffff814710e9>] bus_add_driver+0x1c9/0x280 > [ 11.536389] [<ffffffff8147290b>] driver_register+0x5b/0xd0 > [ 11.536394] [<ffffffff81002138>] do_one_initcall+0xc8/0x1f0 > [ 11.536399] [<ffffffff8118b9bc>] do_init_module+0x5a/0x1d7 > [ 11.536408] [<ffffffff8110af87>] load_module+0x1e97/0x2800 > [ 11.536411] [<ffffffff8110bac0>] SYSC_finit_module+0x70/0xa0 > [ 11.536419] [<ffffffff81610772>] entry_SYSCALL_64_fastpath+0x16/0x71 > [ 11.537802] DWARF2 unwinder stuck at > entry_SYSCALL_64_fastpath+0x16/0x71 > > [ 11.537803] Leftover inexact backtrace: > > [ 11.537806] ---[ end trace 31411d409269e2e9 ]--- > > > Full dmesg output on pastebin.com: > https://pastebin.com/164qUxnW > > > > This is not directly ACPI-related, but since it makes the impression > that the ACPI code's execution leads to the system getting compromised, > I hope it's alright if I quote only a few findings which were reported > when performing a Lynis system audit: > > - Comparing sysctl key pairs with scan profile > - kernel.core_uses_pid (exp: 1) [ > DIFFERENT ] > - kernel.ctrl-alt-del (exp: 0) [ OK ] > - kernel.kptr_restrict (exp: 2) [ > DIFFERENT ] > - kernel.randomize_va_space (exp: 2) [ OK ] > - kernel.sysrq (exp: 0) [ > DIFFERENT ] > - net.ipv4.conf.all.accept_redirects (exp: 0) [ > DIFFERENT ] > - net.ipv4.conf.all.accept_source_route (exp: 0) [ OK ] > - net.ipv4.conf.all.bootp_relay (exp: 0) [ OK ] > - net.ipv4.conf.all.forwarding (exp: 0) [ OK ] > - net.ipv4.conf.all.log_martians (exp: 1) [ > DIFFERENT ] > - net.ipv4.conf.all.mc_forwarding (exp: 0) [ OK ] > - net.ipv4.conf.all.proxy_arp (exp: 0) [ OK ] > - net.ipv4.conf.all.rp_filter (exp: 1) [ > DIFFERENT ] > - net.ipv4.conf.all.send_redirects (exp: 0) [ > DIFFERENT ] > - net.ipv4.conf.default.accept_redirects (exp: 0) [ > DIFFERENT ] > - net.ipv4.conf.default.accept_source_route (exp: 0) [ > DIFFERENT ] > - net.ipv4.conf.default.log_martians (exp: 1) [ > DIFFERENT ] > - net.ipv4.icmp_echo_ignore_broadcasts (exp: 1) [ OK ] > - net.ipv4.icmp_ignore_bogus_error_responses (exp: 1) [ OK ] > - net.ipv4.tcp_syncookies (exp: 1) [ OK ] > - net.ipv4.tcp_timestamps (exp: 0) [ > DIFFERENT ] > - net.ipv6.conf.all.accept_redirects (exp: 0) [ > DIFFERENT ] > - net.ipv6.conf.all.accept_source_route (exp: 0) [ OK ] > - net.ipv6.conf.default.accept_redirects (exp: 0) [ > DIFFERENT ] > - net.ipv6.conf.default.accept_source_route (exp: 0) [ OK ] > > > Also "chkrootkit" classified three network related binaries as "packet > sniffers": > wlan0: PACKET SNIFFER(/sbin/wpa_supplicant[798], > /sbin/wpa_supplicant[798], /sbin/dhclient[21562] > > Having disassembled these files it wasn't difficult for me to understand > why they were classified this way, e. g. by looking at the strings > contained in the disassembled "wpa_supplicant" file: > vaddr=0x00164118 paddr=0x00164118 ordinal=906 sz=85 len=84 > section=.rodata type=ascii string=TDLS: Channel switching is prohibited > in this BSS - reject request to switch channel > [...] > vaddr=0x00166ce0 paddr=0x00166ce0 ordinal=1154 sz=100 len=99 > section=.rodata type=ascii string=RSN: Replace PMKSA entry for the > current AP and any PMKSA cache entry that was based on the old PMK > [...] > > By the way, a Google search returned only three hits when searching for > each of these strings, and the source code which these hits refer to > doesn't look very trustworthy actually, e. g.: > https://gitlab.gwdg.de/eap- > saml/hostapd/blob/hostap_2_5/src/rsn_supp/tdls.c > https://w1.fi/cgit/hostap/plain/src/rsn_supp/pmksa_cache.c > > > [Sorry if this should be considered as being off-topic, but since it can > probably be assumed that this ACPI code on my computer is compromised, I > think it's very reasonable to assume that the system gets compromised by > its execution and not for any other reason - I didn't download or > install anything before having made these observations, so mentioning > this could not really be regarded as being 'off-topic' in this context.] > > > The full disassembly of "wpa_supplicant" and "dhclient", plus the > extracted and disassembled ACPI code from my system can be downloaded > from the GoogleDrive folder I gave shared access to: > https://drive.google.com/open?id=0B62Y5Qk_rdbWdzBsWmt1eEl3YlU > > > > If anyone would like to send me a reply, please send your mail also to > my other address <sheer.itsec@xxxxxxxxxxxxxx> to ensure that it will > reach me. I would really appreciate it, if this issue would receive some > attention and gets investigated / further analyzed by people being able > to do so, since having one's computer infected by a highly-sophisticated > firmware-based rootkit while not knowing anything about the reason / > background of this is not very pleasant. > > [Moore, Robert] Please send or post the acpidump for this machine; I didn't see it above. > > Kind regards and thanks in advance > > David Renz -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html