Switch System Flaws: Difference between revisions
Line 954: | Line 954: | ||
| January 30, 2023 | | January 30, 2023 | ||
| February 26, 2023 | | February 26, 2023 | ||
| [[User:Yellows8|yellows8]] | |||
|- | |||
| [[NS_services|ns]] RequestMoveApplicationEntity/EstimateSizeToMove buffer overflow | |||
| ns RequestMoveApplicationEntity eventually calls a func which: Loops through the input buffer. If any entry has value 6, it will call another func to copy data from state to output safely (uses the max_count param). Otherwise, it copies the input buffer to an outbuf (located on caller's stack) without any size validation (inlined memcpy), even though there is a max_count param. | |||
Additional memwrites are also done to the above outbuf following the initial memcopy. This can be avoided if the buffer doesn't contain bytes with values 3-6 (if using values in that range is really needed, the cmd input StorageId param can be set to the required value so that the specified value doesn't trigger the memwrite). Value 6 shouldn't be used anyway (see above). | |||
ns EstimateSizeToMove first calls the same func which does the copy above (outbuf is also located on stack), then it calls another func. Hence, same vuln here. | |||
By corrupting just the first byte of x29 with EstimateSizeToMove, one can obtain infoleaks. This method with x29 essentially only works with [15.0.0+]. Pre-15.0.0 would require a different method with partial overwrite of retaddr, however it's unknown whether this would actually work for infoleak (would require [12.0.0+] for the stack layout change). | |||
With EstimateSizeToMove where x29 is overwritten, the output u64 is the leaked ptr (can be codebin-region). Note that the cmd has to return Result=0 for this to work. x29 is used to load the value which is copied to the cmdreply rawdata. | |||
As of [17.0.0+] an error is thrown if the input array count is larger than 8 (size of the stack dst-array). | |||
| ns-sysmodule stack buffer overflow, allowing ns infoleak+ROP. | |||
| [[17.0.0]] | |||
| [[17.0.0]] | |||
| January 2, 2023 | |||
| October 17, 2023 | |||
| [[User:Yellows8|yellows8]] | | [[User:Yellows8|yellows8]] | ||
|} | |} |