People often ask me "How did you learn how to hack?" The answer: by reading. This page is a collection of the blog posts and other articles that I have accumulated over the years of my journey. Enjoy!
io_uring is a Linux kernel interface for providing asynchronous I/O. The basics of io_uring can be found here.read_iter. If this is not provided, then another function is called to perform an iterative read/write of the file. The pointer req->rw.addr is incremented by the size of the read/write. IORING_OP_PROVIDE_BUFFERS option, the pointer can contain a kernel buffer instead of a userland buffer. arbitrary free primitive on nearby chunks. Using this, a use after free could be trivially taken advantage of. com.apple.gamed does not properly check for the com.apple.developer.game-center entitlement. As a result, any app can read the Apple IDs Email and Username, get an auth token for several apple applications, read some mail/ messages and much more. com.apple.nehelper with a bundle ID, it returns an array of the UUIDs if the app with the bundle IDs is installed. Knowing what other apps a user has installed could be used for targeting users in foreign countries. com.apple.nehelper accepts a user parameter called sdk-version. if this value is larger than 524288 the entitlement check for com.apple.developer.networking.wifi-info is skipped. This results in the WiFi information, such as the SSID, being accessible to the application.Analyticsd. This allows for the stealing of medical information, device usages, screen time, crashes and few items. The author does not say the actual vulnerability, or if this was just open. Registry is responsible for the registration and search of services.
Provider registers services to the Registry, while reporting real time info.
Consumer gets a list of services from Registry. Then, can call the Provider directly.
Monitor is used to view what is going on in the instance.
Hessian deserialization options, which were responsible for previous CVEs. This was done by forcing the code down unexpected paths. This was mainly found with CodeQL. lookupService(path). This will look up the service by path while the later does it by version AND path. This desync allows the verification to not find anything but the actual deserialization to successfully retrieve the object. /etc/passwd to obtain root. -oP override_pid_file_path option allows to create an arbitrary file as root. However, we do not control the contents of the file. Still, could be used to turn off ASLR in SYS or something like that. An similar vulnerability exists within the same flag but for file deletion instead via a race condition between file validation and file deletion with a symlink.deliver_selectstring_sender function. This appears to process a string via sprintf that can be a string of arbitrary length. The POC is literally just exim -S `perl -e 'print "A" x 128000'`.strncopy, securely. However, after this call, the pointer is incremented by the size of the string being copied, which could be larger than the allowed buffer size. -F flag is used, the parse_fix_phrase function will still write a NULL byte to the buffer, even though a buffer of size 0 was created. closed-on-exec.smtp_ch_index can be reset to 0 while later being processed as smtp_ch_index-1 in an array. This leads to an out of bounds read that is not super exploitable but interesting!spool_read_header calls fgets to read lines from the spool header file. The first section is a very large buffer with a fixed size. Since the buffer is not enlarged, it is vulnerable to a truncation issue, since the call to fgets restricts the size. Using this, a newline injection vulnerability is possible, but much less versatile as before. BDAT series of commands, another function pointer is added though, which should eventually be set back to the original one. In several cases bad code paths, it is possible to NOT get this function pointer reset, causing unintended consequences to happen. This only leads to a stack exhaustion via a re-entry problem. smtp_refill is used to read input characters from an SMTP client; it calls smtp_getc to read individual characters from the buffer. The function smtp_ungetc pushes characters back into the buffer after being read by the reading function above. By swiftly closing a connection after no data has been written, a call to smtp_ungetc can be made with EOF (-1) that will write to the -1 index. struct pointer is saved to a local stack to be used. However, at some point, the function smtp_setup_msg could be called, which frees all allocated POOL_MAIN memory. Since this local variable is not set to NULL, it creates a use after free vulnerability. This use after free is on a VERY powerful object, as it allows for a memory leak and a write-what-where primitive. memcmp, making this a very weird thing to exploit. web.flow.opera.com is the domain that loads this data. This appears to be a plain HTML on the page, which can be viewed with the browser dev tools. The page interacts with the browser extensions, but it was not apparent in the browser toolbox. –show-component-extension-options, the hidden extensions are shown, which shows Opera Touch Background.
const html = e.dataTransfer.getData('text/html');
const src = html.match(//);
if (src && src[1]) {
const parser = document.createElement("span");
parser.innerHTML = src[1];
}
innerHTML. If an attacker can control this input, they can get code execution in the context of the page. dataTransfer object on something being dragged does NOT have to be the location of an image. In fact, it can be anything. As a result, setting dataTransfer to <img src=x onerror=alert(1)> pop an alert pop, resulting in XSS. SEND_FILE and OPEN_FILE permissions. Using this, we can write to a file with an executable script then open a will, which will execute it on demand. authinfo struct is initialized to 0. These two facts turn the user into root from the request!forceDelete action actually worked on AppleNews! com.apple.news.public container. This is because authenticated calls to Cloudkit were being made through the Notes app, which was improperly scoping the requests being sent. com.apple.shortcuts instead. This mis-configuration did not allow for direct editing but got him a properly scoped token. workspaces URI on the system. This allowed for the launching of applications with username, password and other things using the URI only. %20 for a space), argument injection is becoming less and less common for these though.--gpu-launcher of this is known to have a command injection problem, this is bad!workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE
will launch a calculator on Windows systems, which demonstrates code execution on the device.