Re: gets() is dead
- From: Tor Rustad <torust@xxxxxxxxx>
- Date: Tue, 22 May 2007 01:12:00 +0200
Flash Gordon wrote:
Tor Rustad wrote, On 21/05/07 01:47:
The *first* step in building a secure system, is to design and analyze
it *before* any programming has been started. That is the hard part, in
my experience.
Failing to analyze and design (in my opinion you analyze the problem
before you start the design) is also doing something you know is
insecure, so that is also covered by my statement :-)
Well, even the detailed design specs shouldn't be language specific. The
local C coding standard, will typically ban gets(), not your design
documents.
Now, after the spec has been implemented, time comes to testing and code
audit. When doing audit, both manual inspection and static analysis
should be done for safety-critical systems.
Agreed. Although secure and safety critical are independent attributes.
For example, I have worked on safety critical SW where security was not
a requirement (it was an embedded avionics system).
This is really off-topic, but if you re-read my post, I never said safety ==
security.
However, safety, "freedom from danger of risk", is hardly an *independent*
attribute from security. I know what you mean, but some safety-critical
systems, do need to protect against information leakage, others don't.
Denial-of-Service, is that a safety or a security attribute?
Your answer is not important, since we can agree that gets() is both a
safety *and* a security "bug", right?
OTOH, for a bank, the insider threat is a *major* concern. However,
banks want to make money, so they take calculated risks and in some
cases, higher risks than they are aware of.
Yes, I fully agree.
In my case it really is builders and accountants who are generally not
that knowledgeable about computing, and that factors in to the risk
assessment. There is a lot of money involved, but the chances of anyone
having the access and knowledge to mount a sophisticated attack without
also having sufficient permissions to not need to attack are really small.
If there is a lot of money involved... even threats with little probability,
can be highly relevant. One place I worked, had an insider attack ca. 15
years ago, where they got away with *over* 100 million dollars, which today
would be approx 400-500 million dollars?
The attack was mounted at a time when the company switched over to a new
security system. The insiders was supposed to watch each other, nobody knew
they where lovers. Approx 30 billion dollars passed through that system
each day.
An outsider will typically go after a few accounts on the front-end, while
the insider might very well strike the back-end... with devastating effect.
Main worry for a bank about the front-end, is negative publicity, not really
the money lost. However, avoiding full-scale attack on the back-end, can be
a question about staying in business or not.
Removal of gets(), will help clueless programmers, who are not building
secure software anyway. For professionals, gets() is a non-issue IMO.
Removal of it means there is one less thing to learn not to do and one
less thing for teachers to get wrong.
If a company lack automated tools to detect bugs like "gets", they don't
take safety and/or security issues very seriously. splint is even free.
There are also commercial tools out there, to enforce your "safe" C subset.
If you still worry, why not comment away the banned API's from the header
files?
Heck, you can scan the binaries, for banned function calls.
--
Tor <torust [at] online [dot] no>
.
- References:
- Re: gets() is dead
- From: Charles Richmond
- Re: gets() is dead
- From: Ian Collins
- Re: gets() is dead
- From: Tak-Shing Chan
- Re: gets() is dead
- From: Ian Collins
- Re: gets() is dead
- From: Tak-Shing Chan
- Re: gets() is dead
- From: Ian Collins
- Re: gets() is dead
- From: Tak-Shing Chan
- Re: gets() is dead
- From: Richard Heathfield
- Re: gets() is dead
- From: Tor Rustad
- Re: gets() is dead
- From: Flash Gordon
- Re: gets() is dead
- From: Tor Rustad
- Re: gets() is dead
- From: Flash Gordon
- Re: gets() is dead
- Prev by Date: Re: The result of ++ is not an lvalue?
- Next by Date: Re: sockaddr_storage : what is it? what is userfull for?
- Previous by thread: Re: gets() is dead
- Next by thread: Re: gets() is dead
- Index(es):
Relevant Pages
|
|