It looks like you're using an Ad Blocker.
Please white-list or disable AboveTopSecret.com in your ad-blocking tool.
Thank you.
Some features of ATS will be disabled while you continue to use an ad-blocker.
Last week’s mass-wiping of Western Digital My Book Live storage devices involved the exploitation of not just one vulnerability but a second critical security bug that allowed hackers to remotely perform a factory reset without a password, an investigation shows.
The vulnerability is remarkable because it made it trivial to wipe what is likely petabytes of user data. More notable still was that, according to the vulnerable code itself, a Western Digital developer actively removed code that required a valid user password before allowing factory resets to proceed.
a Western Digital developer actively removed code that required a valid user password before allowing factory resets to proceed.
function post($urlPath, $queryParams = null, $ouputFormat = 'xml') [
// if(!authenticateAsOwner($queryParams))
// [
// header("HTTP/1.0 401 Unauthorized");
// return;
// ]
I am so confused now, the course I take, they teach me to back engineer every program that checks credentials or does file operations I write, for so called exploits. Keep it simple and straightforward and then try to disturb it.
Second, why is $quaryParams set to null to be checked by the authenticateAsOwner function? I don't get it at all.
originally posted by: ThatDamnDuckAgain
a reply to: machineintelligence
a Western Digital developer actively removed code that required a valid user password before allowing factory resets to proceed.
Hm okay I am a beginner in programming and looked at the code.
function post($urlPath, $queryParams = null, $ouputFormat = 'xml') [
// if(!authenticateAsOwner($queryParams))
// [
// header("HTTP/1.0 401 Unauthorized");
// return;
// ]
First, why do they check a negative login response from that function? The ! negates the return result. So if the function returns true, it's negated to false and the code inside the brackets is never executed. Even more, if for some reasons the function "post" is never called, this indicates that then the user already has all the rights, but will cancel them if the login comes back wrong. This looks like a way of writing the code allowed for easy commenting out.
Analog, this would be like a door that's always open put if you want to go through, it locks up if you do not have a key. Wouldn't it be wiser to program a closed door and check if we open it for the ones with the correct credentials?
I am so confused now, the course I take, they teach me to back engineer every program that checks credentials or does file operations I write, for so called exploits. Keep it simple and straightforward and then try to disturb it.
Second, why is $quaryParams set to null to be checked by the authenticateAsOwner function? I don't get it at all.
originally posted by: Tekner
a reply to: ThatDamnDuckAgain
It's PHP, and it looks correct to me in the article with [] < Apparently this site is sanitizing the curly braces into brackets
function get($urlPath, $queryParams=null, $ouputFormat='xml')[
// if(!authenticateAsOwner($queryParams))
// [
// header("HTTP/1.0 401 Unauthorized");
// return;
// ]
function post($urlPath, $queryParams=null, $ouputFormat='xml')[
// if(!authenticateAsOwner($queryParams))
// [
// header("HTTP/1.0 401 Unauthorized");
// return;
// ]
addnumber(3); //will produce 6
addnumber(3,3); //produce 9
addnumber(); //will produce 3 or error out depending on the language and whether integers are default initialized with 0.
Western Digital is offering data recovery for free to affected customers, from your link:
originally posted by: machineintelligence
There are forensic tools to recover this lost data but the process is slow and expensive and never recovers everything.
Update 6/29/2021, 9:00 PM: Western Digital has published an update that says the company will provide data recovery services starting early next month. My Book Live customers will also be eligible for a trade-in program so they can upgrade to My Cloud devices. A spokeswoman said the data recovery service will be free of charge...
Western Digital stopped supporting the My Book Live in 2015
Example, $QueryParams could hold the previous input from another session, if you called post and forgot to actually supply a $QueryParams it could potentially use the old data, by initializing it to null it will just crash, well it should, but again, the function is commented out so it doesn't matter at all.
It is good practice to initialize variables to null if there's a chance garbage data could be supplied that causes undefined behaviour.