![The Internet The Internet](http://a.fsdn.com/sd/topics/internet_64.png)
![Bug Bug](http://a.fsdn.com/sd/topics/bug_64.png)
![Programming Programming](http://a.fsdn.com/sd/topics/programming_64.png)
![IT IT](http://a.fsdn.com/sd/topics/it_64.png)
![Technology Technology](http://a.fsdn.com/sd/topics/technology_64.png)
Netgear Routers DoS UWisc Time Server 447
numatrix writes "For the last few months, hundreds of thousands of netgear routers being sold had hardcoded values in their firmware for ntp synchronization, causing a major denial of service to the University of Wisconsin's network before it was filtered and eventually tracked down. Highlights how not to code embedded devices." A really excellent write-up of the incident.
and now... (Score:5, Funny)
oh, and fp.
Obligatory Scooby Doo reference (Score:5, Funny)
So who got fired? (Score:4, Interesting)
Yah right. Some hapless low level programmer probably got all the blame for putting test data in there in the first place.
Re:So who got fired? (Score:2, Insightful)
Re:So who got fired? (Score:4, Insightful)
QA isn't just for spell checking.
Re:So who got fired? (Score:2, Informative)
Re:So who got fired? (Score:5, Insightful)
Bah.
This is one 'simple mistake' by one company that namaged to send a constant "250,000 packets-per-second (and over 150 megabits-per-second)".
Now I know Netgear is a pretty big outfit, but there are LOTS of companies like that out there, and these little mistakes can add up. How much network traffic could be avoided with proper programming?
Also, this kind of makes me think about the useless network activity my XP box (bleh) tries to send out. Multiply that by millions and millions, and you get a number a whole lot bigger than the one above.
Who pays for all that wasted bandwidth?
Re:So who got fired? (Score:5, Insightful)
Re:So who got fired? (Score:3, Informative)
Windows Time Service (Score:4, Interesting)
One would expect millions of XP boxes phoning home daily would overload a time server. For myself, I've changed the NTP server to a different server (which I will not name) and had somewhat more reliable time syncing.
The commands are net time
Re:Windows Time Service (Score:4, Insightful)
Re:So who got fired? (Score:5, Insightful)
Netgear reported that the non-UW addresses were used for debugging by the developers.
Here's the interesting part: at least two of those are 12.* addresses --- cablemodems with attbi.com. So if you want to know who the developer responsible is, it might be a reasonable guess it's whoever lives at those IP addresses!
Re:So who got fired? (Score:3, Interesting)
About once a month a link to my company goes up on the MSN home page (about 3 links down in the top news section). It's like a firehouse and that peaks at an insane 14MBits/second.
Expecting a public service to handle 100 MBits is ridiculous. It was an erroneous mistake by netgear and there should be severe reprecusions.
Re:So who got fired? (Score:5, Insightful)
This was a big screwup - when an NTP query fails, you don't start retrying every second until it comes back. You don't hardcode a single server address for it. And you don't put this in 700,000 pieces of released hardware.
Re:So who got fired? (Score:3, Insightful)
Usually, someone should say "hey, are we following the RFC for the protocol here?"
Usually, someone should say "isn't hardcoding one single IP address for a service a bad design idea?"
None of these things apparently happened. It may not show up in "testing" (hey, everything worked fine) but in quality assurance, they should be checking their code for anomalies.
Re:So who got fired? (Score:3, Insightful)
Its up to the developer to follow the required standards and up to the architect to make sure bad design decisions are not made.
The grandparent was implying that it was the fault of a tester that the bug went undetected. My point is that in the absence of a spec, mistakes such as this can only be discovered and repaired by the developers.
(Im also not trying to
Re:So who got fired? (Score:3, Insightful)
They didn't hardcode just one address. They hardcoded a bunch of them but, by the time UWisc figured out what was happening, they were the only one of the public servers left standing (at least, at the original IP address). BTW: {,X}NTPD doesn't support DNS names for all parts of it's config file, either.
In other words, NetGear managed to DOS a number of public NTP servers out of existence.
The proble
Re:So who got fired? (Score:3, Insightful)
A code review would hopefully catch the "hey, we're only using *one single time server for all our hardware* and the *hey, there's no way of configuring this short of patching the firmware* parts. Maybe the address part was overlookable, but the other bits?
>> Usually, someone should say "hey, are we following th
Poor uWisc (Score:5, Funny)
Now the
Bad form in general (Score:5, Insightful)
Or any other kind of software for that matter.
Now... (Score:2, Funny)
Re:Now... (Score:2)
-Rusty
Indeed (Score:5, Funny)
"/* Huge Bodge */"
"/* Kludge */"
"/* Magic numbers are cool */"
Re:Indeed (Score:4, Funny)
/* Too drunk -- debug later */
Re:Now... (Score:2)
If Netgear lifted code from Linux, and SCO is basically saying they own & want royalties from Linux, then couldn't they ask for royalties for any code that was once part of the Linux kernel? (Think userland drivers that were once in the kernel)
Boy, Just because code touched the kernel, would mean that SCO would/could own that code too. Hope SCO doesn't get any ideas about that...
I did that to myself once (Score:5, Funny)
If they did it to my NTP server... (Score:5, Funny)
Re:If they did it to my NTP server... (Score:2)
-B
Re:If they did it to my NTP server... (Score:3, Informative)
An impropperly formatted response, like "2/30/2003", would probably get people's attention.
From RFC 958 [faqs.org]: NTP timestamps are represented as a 64-bit fixed-point number, in seconds relative to 0000 UT on 1 January 1900.
Re:If they did it to my NTP server... (Score:3, Funny)
Alas, not true... (Score:5, Informative)
This is a case of ill-designed, badly written, poorly debugged, wretchedly tested code. The article details the testing of a code fix that still didn't fix things properly. On the bright side, Netgear is trying to Do The Right Thing now, and they deserve credit for that.
Hasn't /. learned? (Score:5, Funny)
In other news at the University... (Score:5, Funny)
Our usage graph...You Jerks! (Score:5, Interesting)
http://www.cs.wisc.edu/cgi-bin/cricket/grapher.cg
Yeah, I work at the CSL at UW Computer Sciences, and the tracking of this netgear issue was quite an interesting tale. Had us stumped for quite some time.
Re:Our usage graph...You Jerks! (Score:5, Funny)
Go ahead, give us another, I dare ya!
Re:Our usage graph...You Jerks! (Score:4, Insightful)
don't get me wrong, I love the irony, but your network admins are having enough troubles on a Friday already.
Re:Our usage graph...You Jerks! (Score:5, Informative)
The load is fine. It's already subsiding. We can handle slashdottings, heh.
Look at the weekly graph, we had 2 this week already!
Just slows down for a while, but doesn't break anything.
Re:Our usage graph...You Jerks! (Score:5, Funny)
ShortSpecialBus, eh? ;-)
Re:Our usage graph...You Jerks! (Score:3, Informative)
Think mrtg
Correct so far.
Its dynamic in the sense that it is generated at regular intervals, but it is static in the sense the webserver is serving pre-generated content.
So, yes, the page is static.... most of the time.
Not necessarily true. I run Cricket on my own network, and the images are generated by grapher.cgi; the HTML doesn't point to static images that get replaced on the server at regular intervals. Although grapher.cgi will return cached copies if one exists, you still
I wonder what NetGear's liability is. (Score:5, Interesting)
Comment removed (Score:5, Insightful)
Re:I wonder what NetGear's liability is. (Score:5, Insightful)
It would probably be deductable, passing some of the cost on to we taxpayers; but would sit alot better with public perceptions of the company.
Set up a few CS scholarships or funding a chair at the University would help.
They could turn it into a publicity coup and end up paying out less in the long run (and screw the lawyers too). Some (not all) insurance companies have finally discovered that it's usually cheaper to negotiate with the plaintiff right away, avoiding all of the sabre rattling and lopping off a third (or more) of the total probable cost.
Litigation is rarely the best answer.
Re: (Score:3, Interesting)
Re:I wonder what NetGear's liability is. (Score:3, Insightful)
I disagree. Netgear is obviously liable, but just because they could be sued doesn't mean they should be. There's a fine line between excercising your rights over others and being an ass, one that I think is crossed way too often. In this case, as you say, the actual damages (bandwidth) are vague. More importantly, Netgear and UWisc got together and are fixi
Re:I wonder what NetGear's liability is. (Score:5, Interesting)
I mean, we're talking 150+ Mbps here, for months on end. That's $15K/mo in bandwidth, assuming they have a really good deal and pay only $100/Mbps/mo.
Re:I wonder what NetGear's liability is. (Score:5, Informative)
Re:I wonder what NetGear's liability is. (Score:5, Informative)
Now did NetGear get permission (Score:4, Interesting)
Re:Now did NetGear get permission (Score:5, Informative)
Check out the NTPd man pages- I believe this server is a second echelon mirror.
Re:Now did NetGear get permission (Score:3, Funny)
Didn't you mean to say stratum?
Unless NTP is really a cover up to a top secret government information collection service =)
Where's my tin foil hat?
Analysis Tools used in this article.. (Score:5, Interesting)
RRGrapher, FlowScan and Cflow being ones I have never messed with..
Cool.. new tools to play with!
Delicious irony (Score:5, Funny)
Err why ? (Score:3, Insightful)
especially a home router....sounds like another port open for someone to hack at for no real gain....
Re:Err why ? (Score:5, Insightful)
Re:Err why ? (Score:2)
Re:Err why ? (Score:5, Interesting)
Home centric routers do not tend to have their clocks set before shipping as there is no assurance that a battery keeping that clock powered will be doing so ver the entire span of time from manufacture to customer plugging it in. Even if it did the drift involved would give some inaccuracy as well.
There are two correct solutions. One is that Netgear should operate their own time server and hard code that server as a secondary or fallback time server. The primary time server should be aquired from the internet service provider when they get their network ip address via dhcp.
-Rusty
Who pays? (Score:2)
Re:Who pays? (Score:2)
Re:Who pays? (Score:3, Interesting)
Just a suggestion.
NTP should be responsibility of network server (Score:5, Informative)
Re:NTP should be responsibility of network server (Score:2)
hate to nitpick (or is it knitpick?), but this doesn't matter does it? especially if the code uses the hostname...
infact, when I was learning about NTP(date) a little while back -- i found a few pages detailing Wisonsin's Uni as a good sync for your time....
makes one wonder if the guys at Netgear read the same pages...and hardcoded it in
hmmmm/.
OT: answering side question in parent. (Score:3, Informative)
I hope... (Score:2)
blaster (Score:2, Funny)
Ouch! (Score:3, Funny)
It's not about just embedded devices... (Score:5, Insightful)
Highlights how not to code embedded devices
I think this highlights a "how not to code" idea, period. In 1986, when I was taking a BASIC (boo, hiss) course in high school, I learned that values should be expressed as variables even if the coder does not expect them to change. So instead of using (32 feet/second^2), one should instead declare g once, using whatever units are appropriate, and thereafter refer to g instead of a hardcoded value. If g changes, the coder need only update one line.
Note: I am not a programmer/coder/developer in any sense of any of the words, so technical nits should remain unpicked; however, if I am completely out in left field, please feel free to point that out.
Re:It's not about just embedded devices... (Score:5, Insightful)
So you're not in left field, it's just that the developer who wrote the software apparently did exactly what you said, which was not relevent to the mistake at hand, which was more about the faulty implementation of the NTP service, and the fact that it was hardcoded to a single IP address.
SEGA's online game servers (Score:5, Insightful)
It's not a new story, but I think it bears repeating as a showcase of stupidity.
Re:SEGA's online game servers (Score:3, Informative)
Well, yeah, with Dreamcast games like Alien Front Online [hotgames.com], or with more or less any game since the birth of the console, the read-only nature of the media is a problem. It's hard to issue a patch for a game cartridge or CD, and recalls would be expensive.
The idea a multiplayer game that only has one server to connect to should stir strong feelings of hatred and scorn in any sensible geek. The sheer idiocy of coding in an IP instead of a domain name should be obvious.
Re:It's not about just embedded devices... (Score:5, Funny)
Re:It's not about just embedded devices... (Score:5, Funny)
oh, and we laughed long and hard at the guy who put down:
Nah, that's not a problem (Score:3, Funny)
The programmer would catch on pretty quick when it didn't compile. Now, if he declared it as a float, on the other hand...
Netgear should bear the cost... (Score:5, Insightful)
i know USA isnt .AU but.. (Score:2, Insightful)
i think net gear should be thankfull that
it wasnt sued for the bandwidth costs and
the reduced levels of service for the uni..
And then, on friday august 22 2003.. (Score:5, Funny)
(Geography)Re:And then, on friday august 22 2003.. (Score:2, Informative)
Re:And then, on friday august 22 2003.. (Score:2, Informative)
Simple Fix (Score:5, Funny)
After 6 seconds, the netgear will crash and burn as a result of the Y2K38 problem and the requests will be no more.
Think Strata (Score:5, Informative)
Unfortunately, the code droids seem to think that there's something magical about being at Stratum 2 instead of Stratum 3 or Stratum 4; also, they seem perfectly willing to take advantage of a nonprofit consortium (the owners/operators of public Strat 1 clocks) instead of spending the $500 or so on hardware to service their own customers, who presumably paid them for something.
Anyone else remember the Good Old Days when it was considered polite to ask first before using someone else's clock?
[Truechiming since 1987...]
Re:Think Strata (Score:3, Insightful)
If you're running a large network where clock synchronization is important, you are MUCH better off running your own time server than having you clients talk to someone else's, regardless of stratum. Otherwise the amount of jitter with all your NTP clients going longer distances to fetch the time will actually result in less consistent times overall.
Re:Think Strata (Score:3, Interesting)
Just my $0.02
Strata ain't the issue (Score:4, Informative)
Actually, Netgear was using a stratum 2 time server [gvsu.edu], namely ntp1.cs.wisc.edu [wisc.edu].
As for spending $500 on hardware to service their own customers, as the wisconsin people can tell you, it is costing them a little more than that. It's isn't just the hardware, it's the pipe to which it's attached.
I agree that Netgear should have been the ones to provide a time server if they were going to hard-code one. On the other hand, what if they weren't the ones who wrote the code? Maybe they just bought a "router kit" from some small company, slapped a "Netgear" logo on it, and shipped it out? That small company probably wouldn't know what NTP server NetGear provides. They may also have lots of other customers who each would need their own time server. Obviously though, the answer is not to hard-code the value.
As for the Good Old Days when it was considered polite to ask, the policy [os2site.com] for UWisc's time server was "open access", not "open access; please send a message to notify". So... they didn't ask to be notified. Now I'm sure they're going to change that policy, and I'm also sure they would have wanted to know if their site was being set as the default on tens of thousands of routers.
Routers are standalone devices that are meant to operate without user input, so it doesn't make sense to require the user to manually configure the NTP server. On the other hand, there's currently no good way of providing a default NTP server, unless you provide it yourself. For commercial devices like a router, providing it yourself is reasonable. The bandwidth cost of providing a time server should be offset by the profits they make on the hardware. I suppose the other option is to provide a one-time service that will provide a random NTP server. Each time you hard-reset the router, and out of the box, it would check that service and then know what NTP server it should use.
Mentioned on ntp.org mailing list a while ago.. (Score:5, Informative)
David L. Mills wrote on 2003-06-26 10:55:
> Guys,
>
> I find myself on the review team for an incident taking place at U Wisconsin/Madison. Apparently, the Netgear folks have manufactured some 700,000 routers with embedded SNTP clients configured to use the public U Wisconsin NTP server. The server address is unchangeable and the client cannot be disabled. If that isn't bad enough, if the client gets no replies, it starts sending packets at one-second intervals until forever and without backoff.
>
> The U Wisconsin folks determined some 285,000 different IP addresses are now sending between 300 and 700 packets per second requiring between 150 and 400 megabits per second. Apparently, the principal eason for this flux is misconfiguration of the firewall component of the router. This is costing them $266 per day.
>
> The Netgear folks were slow to respond until U Wisconsin folks emailed the entire senior management and others known to be U Wisconsin alum. Netgear says they have no way to recall those routers and no way to insure the products are updated from the web site. The products cost between $20 and $40 depending on rebate.
>
> U Wisconsin have considered several ways to deflect the tide, the most promising may be noting the source port 23457 unique to these products and tossing them at the doorstep. The products do not use DNS and are not configurable. Another way considered is to configure a subnet visible to BGP and convince the ISPs to punch holes in the routing fabric. Send money.
>
> I never thought it could get as bad as that. My reasoned recommendation was to fire up the lawyers and sue the bastards for costs and punitive damages and to injoin the company from selling any products until proved safe. There is apparently some standards group that allegedly reviews and certifies new products for Internet use. The Netgear products were all certified, which surely says nothing about the standards group.
>
> Include me in any replies; I am not on any ntp.org list.
>
> Dave
Poor UWisc (Score:5, Funny)
Then the e-mail server (from the helpdesk requests)
Then the webserver (from
What next?
Re:Poor UWisc (Score:3, Funny)
dyndns.org (Score:3)
I really hope they did not include that IP while it was used by dyndns.org. If they did, I'd say they are the biggest assholes alive for generating tons of traffic to a free service. But then again they have already proved that now.
It generated costs on the other side too (Score:5, Interesting)
Aparently there are a lot of Netgear users in Germany who are stuck with horrendous bills now. I wonder if Netgear is going to pick those bills up?
Spytime (Score:4, Insightful)
What (Score:4, Funny)
They originally thought it was an IT Dept! (Score:4, Interesting)
They thought that maybe somewhere someone had published a net time server in a document or whatever and that an IT department was deploying it on workstations or there was a document floating around telling people to set it up as their time server...
Looks like they finally got to the bottom of it!
This is par for the course for Netgear. (Score:5, Informative)
Story:
I used to work/volunteer for DynDNS.org. The Netgear firmware client for DynDNS tried to update regularly (I believe every 5 minutes) whether or not the IP address had actually changed AND whether or not it got a response. Once enough of these got out into the market, this became quite a problem for DynDNS, especially with users complaining that we "blocked" their hostnames updated with the Netgear client when their router advertised specifically that it worked with our service.
I believe after a year or so of nagging the Netgear people, they finally released a firmware update that actually fixed the problem.
I love statements of this nature (Score:3, Informative)
sPh
Hewlett Packard did the same thing (Score:3, Informative)
What had happened was the ingenious engineers at HP decided to hardcode some poor soul's URL into their new Internet-enabled keyboards -- you know, the ones with the hotkeys. The point was that every so often (which ended-up being very often) the keyboards would send this ping-esque packet to the URL and if it received a response it would know it's still connected to the Internet.
Unfortunately, there were some lapses in the plan. Number one, HP thought this was a good idea, but I guess not good enough of an idea to have them ping their own site. Secondly, with this keyboard a part of new HP systems, these systems turned into DDoS machines on this poor guy's domain. The tricky part was the domain they were sent to wasn't any other company's site, just some apparently random URL the HP team picked; that guy must of thought he was the luckiest person with all the traffic he received, and all the bandwidth he was charged. We are a small college, and even we saw a hit on our network traffic from these keyboards, imagine what he was seeing at the focal point!
The point is, sometimes lack of common sense can have drastic consequences.
Coda: We tracked the IPs of our computer systems pinging the site and told those who owned them to disable the Internet keyboard.
Download corrected firmware (Score:3, Informative)
Thank you, UWisc and Netgear (Score:5, Insightful)
To Netgear, THANK YOU for not calling upon the DMCA, filing NDA law suits, etc.
It was resolved in a diplomatic and professional manner...and the write up explaining the entire incident was educational and informative.
Now, if it had been SCO or Microsoft involved......
They're not the only ones (Score:4, Interesting)
I took a Unix course at the University of Colorado in Fall 2001, I think. We had a guest lecture from Evi Nemeth [amazon.com], who is a professor emeritus at CU.
She had done some work on a couple of the DNS root servers, G and H if memory serves. She showed a rate of query graphs for those servers. There was a huge jump in the middle of the graphs that corresponded neatly with the release of Windows 2000.
Turns out Win2000 had it hard-coded to consult the DNS root servers every time it wanted to run a nslookup!
NetGear's Customer Support (Score:4, Interesting)
After a lot of research on the internet, I discovered that this was a well known problem with the MR814, fixed with an update to its firmware. It was strange because I asked the user if he had updated his firmware, which he said he did.
It turns out that the firmware was only released on the Austrilian version of the NetGear website. Downloading and installing that version fixed the users problem.
I sent a polite note to NetGear technical support informing them of this on April 7th. I got back a note on 4/8 saying that it would be forwarded to the appropriate people. On April 17th I sent a more harshly worded note. On April 20th I got back a note saying again that my request would be forwarded to engineering.
I gave up. It wasn't worth it.
Just for fun on May 13th I checked their site again. They had finally updated the software.
This runaround was all to just make a solution to a problem that they had already fixed available. Imagine the hassle trying to get them to actually fix a problem?
That's pretty nasty (Score:4, Insightful)
When I configure my computers to use someone else's NTP server, I always send them an email to let them know (or whatever else they request that people do).
What's worse is that Netgear hardcoded the address, in a way that can't easily be changed without a firmware upgrade (something that very few of the intended Netgear firewall customers will do: these customers are looking for a plug-it-in-and-forget-it box, and are either unwilling or unable to learn how to set up a firewall box themselves). And then, on top of that, Netgear botches the implementation of the protocol, causing it to rapid-fire out requests in certain circumstances!
NTP is a very, very low-profile protocol. It uses UDP, so that connection state doesn't have to be maintained. It sends out packets very rarely, at most every few minutes while being set up, and then once time has been established and clocks are in sync, roughly one packet every few days. Netgear's botched programming caused a NTP flood of one packet per second! This is a ridiculous rate several orders of magnitude above what is normally seen in a functioning NTP implementation.
And Netgear sold hundreds of thousands of these things....
I'm amazed that U-Wisc put up with this effective DoS attack on their servers for so long. They showed great patience waiting several months for their request to crawl through Netgear's channels. Companies really need to have a quick method of access into their corporate structure for people who report major flaws like this! Because Netgear's traditional channels of customer feedback (tech support, etc.) weren't set up for this, U-Wisc's requests kept getting lost in Netgear's bureaucracy. Is Netgear so arrogant to believe that all of their products are and will always be 100% flawless?
There really needs to be a special method of access when people report security holes and such. Microsoft, surprisingly, is starting to come around with this, maintaining a special point of contact for people who have discovered security-related issues or major flaws like this. I hope that more companies do this in the future.
If Netgear would do these three things, I would be happy:
1) Set up their own NTP master servers (stratum 1, using a GPS receiver or atomic clock), at Netgear itself. They would use Netgear's own bandwidth, not U-Wisc or anyone else's. Netgear's future products would then default to using these servers, and they would put out a patch so that hopefully some fraction of older products would also use these servers. That way, if there is a flaw in the future, Netgear will eat their own dogfood! I am pleased to see that Netgear is already taking steps in this direction.
2) Change their corporate structure to be more receptive to outsiders who report serious design flaws or major issues caused by their products (such as this NTP flood), going beyond normal tech support, so that quick action can be taken to avert damage. Tech support is really only set up to handle questions about an individual device owned by the person calling in about it, and not set up to handle serious technical or security issues about all devices in an entire product line.
3) Reimburse U-Wisc for the cost of banwidth consumed by these buggy Netgear devices. If U-Wisc isn't blocking incoming NTP entirely by now, pay for robust NTP servers to handle the high volume of traffic. If Netgear had targeted pretty much any private company instead of U-Wisc, I'm sure they would have sued for damages by now!
And remember, ask first before using someone else's NTP server, especially if you plan to hardcode the address into your product
To Netgears Credit...Okay maybe not.. (Score:5, Informative)
This specific issues was raised back in may... I can say within that same week they had already started testing firmware to fix the issue. The issue comes with the huge break between Netgear engineers and Netgear support. Umm often times the supports reps do not know of the release of the product until like 2 days or 3 days after its already hit the market. On top of that there is very little communication between the two on firmware and whats the latest version. Its been only in the past couple weeks have they really started to communicate.
Along with that Netgear did not have a device testing program until i would say about 3-4 months ago, before that it was just people there who had the time to test products... woudl test them. I know being one of those who has and still does test there products, that the communication is not very stable and that sometimes issues like these get short-cutted for other major issues such as security and hardware stability.
I am also sure anyone in the hardware market understands the rush that sometimes comes with products; in netgear this is not different. I can this was an issue that was not expected and was fixed as soon as it was reported. It should have never gone out as is and the products should have been tested throughly in the consumer enviorment. But, to Netgear's credit the company does sell pretty good products and there customer support although you may not always be able to get your answer to the issue or may not be able to sometimes understand the reps any and all issues do esclate to people who can fix them. If you issues are not getting fixed at that point the president of the company does read your mail and does forward them to the Head of the customer support. I can say that issues like these will become less of a problem now that Netgear has started a beta program and engineers are required to speak to support engineers on a regualr basis
Re:Good followup. (Score:2)
what doesn't kill you, will only make you stronger.