comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Ada.Command_Line and wildcards
Date: Tue, 27 Feb 2007 14:43:20 -0600
Date: 2007-02-27T14:43:20-06:00	[thread overview]
Message-ID: <es2520$i9h$1@jacob-sparre.dk> (raw)
In-Reply-To: 1172587938.237094.134530@m58g2000cwm.googlegroups.com

"Hyman Rosen" <hyman.rosen@gmail.com> wrote in message
news:1172587938.237094.134530@m58g2000cwm.googlegroups.com...
> On Feb 26, 7:34 pm, "Randy Brukardt" <r...@rrsoftware.com> wrote:
> > The problem is that if it doesn't fit, you can't recover
>
> Granted, but that's not really the point. On a modern computer system,
> given that it's reading input from a file or standard input, the
> programmer can reasonably expect that there are at least many tens of
> megabytes available to be allocated. Sure there can be inputs that
> will exceed that, but then you're really in a different domain.
>
> Think of it this way - when you decide to sort data, you need to
> choose between internal and external sorts. You can't do that without
> a notion of a threshold size. Clearly that size has increased over the
> years. Reading input is similar. Many programs can now very reasonably
> expect to read in their entire input into memory at once before
> processing any of it, and if that's not going to work because of
> allocation on the stack then there should be an alternative.

True, but recovery *is* the point if you're at all worried about security.
These days, you have to assume that all files and all other user input are
corrupted in some way. Ignoring the possibility is only legitimate for
programs only used in tightly controlled circumstances (and there are not
many of those).

It is OK to let the program run out of memory if that case can only cause a
DoS to the attacker. (Who cares if the attacker is served?) But running out
of memory can cause a DoS to *all* tasks in the program, and that could
cause a DoS to all users of the program.

Take our web server. It uses a fixed size buffer to read commands from the
Internet. Because of the behavior of the procedure Get_Line, if the command
is too long, it will merely be truncated (and the fact that that happened
can be detected). So even if the case isn't handled explicitly, nothing bad
could happen to anyone other than the attacker (and if it is handled
explicitly, the attacker simply will be given an error message). OTOH, the
function Get_Line would use an arbitrary amount of memory in that case. So,
if an attacker fed a sufficiently large command to the server, it could
cause the server to run out of memory and thus disrupt the other tasks
handling commands from other clients. That could result in a general DoS,
and that's not acceptable.

Thus, its really only safe to use function Get_Line in single-tasking
programs for which the failure to handle user input does not cause
corruption. There are of course many such programs, which is why we included
a function Get_Line. But it has to be used with care _ I worry that it will
not be, and thus some of Ada's security will be compromised.

In any case, current Ada supports what you want. So further griping on this
subject is uncalled for... (There are plenty of other subjects where you
could find a legitimate gripe...I recommend complaining about one of them.
;-)

                                                Randy.





  reply	other threads:[~2007-02-27 20:43 UTC|newest]

Thread overview: 158+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-21 20:43 Ada.Command_Line and wildcards Gautier
2007-02-21 20:59 ` (see below)
2007-02-22  1:13   ` Marc A. Criley
2007-02-22  2:08   ` Adam Beneschan
2007-02-22  5:59     ` (see below)
2007-02-22  8:16   ` gautier_niouzes
2007-02-22 10:25     ` Simon Wright
2007-02-22 11:02     ` Alex R. Mosteo
2007-02-24  6:34       ` Martin Krischik
2007-02-24 11:46         ` Markus E Leypold
2007-02-24 14:54           ` Georg Bauhaus
2007-02-24 16:45             ` Markus E Leypold
2007-02-24 20:08               ` Jacob Sparre Andersen
2007-02-24 20:45                 ` Georg Bauhaus
2007-02-25  0:39                   ` Björn Persson
2007-02-25 16:29                   ` Martin Krischik
2007-02-24 20:26               ` Georg Bauhaus
2007-02-25  7:46               ` Hyman Rosen
2007-02-25 13:19                 ` Georg Bauhaus
2007-03-05  1:07             ` Brian May
2007-03-05  1:39               ` Markus E Leypold
2007-03-06  3:48                 ` Brian May
2007-03-05 12:16               ` Georg Bauhaus
2007-03-05 13:20                 ` Markus E Leypold
2007-03-06 12:56                   ` Georg Bauhaus
2007-03-06 15:07                     ` Markus E Leypold
2007-03-07 22:06                       ` Georg Bauhaus
2007-03-08  5:07                         ` Simon Wright
2007-03-08  9:19                           ` Markus E Leypold
2007-03-08  9:28                           ` Georg Bauhaus
2007-03-08  9:16                         ` Markus E Leypold
2007-03-09 13:33                           ` Georg Bauhaus
2007-03-09 17:11                             ` Markus E Leypold
2007-03-09 18:22                               ` Dmitry A. Kazakov
2007-03-09 19:02                                 ` Markus E Leypold
2007-03-09 20:04                                   ` Dmitry A. Kazakov
2007-03-10 10:40                                     ` Markus E Leypold
2007-03-11  0:15                                 ` Hyman Rosen
2007-03-11  7:59                                   ` Dmitry A. Kazakov
2007-03-11 14:55                                     ` Markus E Leypold
2007-03-12 13:32                                     ` Hyman Rosen
2007-03-12 14:14                                       ` Dmitry A. Kazakov
2007-03-12 15:08                                         ` Markus E Leypold
2007-03-16  8:06                                           ` Brian May
2007-03-16 12:53                                             ` Markus E Leypold
2007-03-10  2:12                               ` Randy Brukardt
2007-03-10 10:52                                 ` Markus E Leypold
2007-03-10 15:48                               ` Georg Bauhaus
2007-03-10 18:11                               ` Jacob Sparre Andersen
2007-03-10 18:42                                 ` Markus E Leypold
2007-03-12 14:25                                   ` Jacob Sparre Andersen
2007-03-12 15:17                                     ` Markus E Leypold
2007-03-09 13:41                       ` Robert Deininger
2007-03-09 17:15                         ` Markus E Leypold
2007-03-09 18:58                           ` Larry Kilgallen
2007-03-10 10:27                             ` Markus E Leypold
2007-03-06 15:08                     ` Jacob Sparre Andersen
2007-03-07 19:21                     ` Hyman Rosen
2007-03-07 20:27                       ` Markus E Leypold
2007-03-07 21:12                       ` Georg Bauhaus
2007-03-06  3:07                 ` Brian May
2007-02-24 18:28           ` Martin Krischik
2007-02-24 13:04         ` Larry Kilgallen
2007-02-24 16:16           ` Markus E Leypold
2007-02-25 14:18             ` Larry Kilgallen
2007-03-05  1:03         ` Brian May
2007-03-05 10:34           ` Martin Krischik
2007-03-05 20:46             ` Simon Wright
2007-02-22 11:19     ` Jean-Pierre Rosen
2007-02-22 13:49       ` Maciej Sobczak
2007-02-22 14:25         ` Jean-Pierre Rosen
2007-02-22 15:12           ` Larry Kilgallen
2007-02-22 15:15           ` Ludovic Brenta
2007-02-22 15:54             ` Dmitry A. Kazakov
2007-02-22 18:26               ` Markus E Leypold
2007-02-22 19:34                 ` Dmitry A. Kazakov
2007-02-22 20:38                   ` Simon Wright
2007-02-23  8:43                     ` Dmitry A. Kazakov
2007-02-25 16:35                 ` wildcards with unix shells Martin Krischik
2007-02-22 16:20             ` Ada.Command_Line and wildcards Jean-Pierre Rosen
2007-02-22 18:34               ` Markus E Leypold
2007-02-22 19:30                 ` Niklas Holsti
2007-02-23  1:01                 ` Randy Brukardt
2007-02-23  4:44                   ` Jeffrey R. Carter
2007-02-23  5:06                   ` Anders Wirzenius
2007-02-24 16:37                     ` Simon Wright
2007-02-25 16:42                       ` Martin Krischik
2007-02-26 20:51                         ` Simon Wright
2007-02-27  7:11                           ` Martin Krischik
2007-02-27 21:32                             ` Björn Persson
2007-02-27 21:56                               ` Georg Bauhaus
2007-02-27 22:53                                 ` Markus E Leypold
2007-02-28 13:55                                   ` Georg Bauhaus
2007-02-28 14:25                                     ` Markus E Leypold
2007-02-26 11:59                       ` Anders Wirzenius
2007-02-26 14:46                         ` Larry Kilgallen
2007-02-23  8:43                   ` Jacob Sparre Andersen
2007-02-23 11:34                     ` Jean-Pierre Rosen
2007-02-24 13:40                       ` Jacob Sparre Andersen
2007-02-25 16:57                     ` Martin Krischik
2007-02-26 21:27                       ` Björn Persson
2007-02-27  7:18                         ` Martin Krischik
2007-02-23  8:49                 ` Jean-Pierre Rosen
2007-02-23  9:29                   ` Jacob Sparre Andersen
2007-02-22 17:07       ` Adam Beneschan
2007-02-22 18:40         ` Markus E Leypold
2007-02-23 10:47         ` Rob Norris
2007-02-23 13:28         ` brian.b.mcguinness
2007-02-23 13:56           ` Georg Bauhaus
2007-02-23 17:10           ` Adam Beneschan
2007-02-22 20:12       ` Gautier
2007-02-23  1:15       ` Robert A Duff
2007-02-23  9:25         ` Jacob Sparre Andersen
2007-02-24  1:18           ` typed pipes (was: Ada.Command_Line and wildcards) Björn Persson
2007-02-24  8:16             ` typed pipes Dmitry A. Kazakov
2007-02-24 13:37             ` Jacob Sparre Andersen
2007-02-24 16:33               ` Björn Persson
2007-02-24 20:17                 ` Jacob Sparre Andersen
2007-02-25  1:11                   ` Björn Persson
2007-02-25  7:03                     ` Jacob Sparre Andersen
2007-02-23 14:45         ` Ada.Command_Line and wildcards Larry Kilgallen
2007-02-24 19:24           ` Robert A Duff
2007-02-25  6:29             ` Hyman Rosen
2007-02-25 12:21               ` Robert A Duff
2007-02-25 16:22                 ` Pascal Obry
2007-02-25 16:44                   ` Dmitry A. Kazakov
2007-02-26  5:03                     ` Hyman Rosen
2007-02-26  8:44                       ` Dmitry A. Kazakov
2007-02-26 17:11                         ` Hyman Rosen
2007-02-26 17:34                           ` Markus E Leypold
2007-02-27 16:13                             ` Georg Bauhaus
2007-02-27 16:19                               ` Markus E Leypold
2007-02-27 16:39                                 ` Georg Bauhaus
2007-02-27 17:56                                   ` Markus E Leypold
2007-02-27 20:29                               ` Randy Brukardt
2007-02-26 20:30                           ` Dmitry A. Kazakov
2007-02-27  0:34                       ` Randy Brukardt
2007-02-27 14:52                         ` Hyman Rosen
2007-02-27 20:43                           ` Randy Brukardt [this message]
2007-02-27 20:56                           ` Dmitry A. Kazakov
2007-02-25 17:50                 ` Jeffrey R. Carter
2007-02-23 16:58         ` Adam Beneschan
2007-02-23 19:12           ` Hyman Rosen
2007-02-23 19:26             ` Adam Beneschan
2007-02-25 17:05               ` Martin Krischik
2007-02-24  1:19           ` Björn Persson
2007-02-24  3:46             ` Adam Beneschan
2007-02-24 11:42               ` Markus E Leypold
2007-02-25 17:02             ` Martin Krischik
2007-02-23 19:04         ` Hyman Rosen
2007-02-23 19:30           ` Adam Beneschan
2007-02-23 19:46             ` Dmitry A. Kazakov
2007-02-23 20:07             ` Markus E Leypold
2007-02-24  1:18             ` Björn Persson
2007-02-24 19:22           ` Robert A Duff
2007-02-24 20:26             ` Dmitry A. Kazakov
2007-02-25  7:32             ` Hyman Rosen
2007-02-21 21:43 ` Dr. Adrian Wrigley
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox